CommonConversion.java

package edu.udel.cis.vsl.abc.ast.conversion.common;

import edu.udel.cis.vsl.abc.ast.conversion.IF.Conversion;
import edu.udel.cis.vsl.abc.ast.type.IF.Type;

public abstract class CommonConversion implements Conversion {

	private final static int classCode = CommonConversion.class.hashCode();

	private Type oldType;

	private Type newType;

	public CommonConversion(Type oldType, Type newType) {
		assert oldType != null;
		assert newType != null;
		this.oldType = oldType;
		this.newType = newType;
	}

	@Override
	public Type getOldType() {
		return oldType;
	}

	@Override
	public Type getNewType() {
		return newType;
	}

	@Override
	public boolean equals(Object object) {
		return object instanceof CommonConversion
				&& oldType.equals(((CommonConversion) object).getOldType())
				&& newType.equals(((CommonConversion) object).getNewType());

	}

	@Override
	public int hashCode() {
		return classCode + oldType.hashCode() + newType.hashCode();
	}

	@Override
	public String toString() {
		return "Conversion[" + oldType.getId() + "(" + oldType + "), "
				+ newType.getId() + "(" + newType + ")]";
	}
}