VariableExpression.java

package edu.udel.cis.vsl.tass.model.impl.expression;

import edu.udel.cis.vsl.tass.model.IF.ModelFactoryIF;
import edu.udel.cis.vsl.tass.model.IF.expression.VariableExpressionIF;
import edu.udel.cis.vsl.tass.model.IF.variable.VariableIF;

public class VariableExpression extends Expression implements
		VariableExpressionIF {

	private VariableIF variable;

	public VariableExpression(ModelFactoryIF factory, VariableIF variable) {
		super(factory, ExpressionKind.VARIABLE);
		if (variable == null)
			throw new NullPointerException("Variable is null");
		this.variable = variable;
		freeVariables.add(variable);
		type = variable.type();
	}

	public VariableIF variable() {
		return variable;
	}

	public int hashCode() {
		return variable.hashCode() * 8192;
	}

	public boolean equals(Object object) {
		if (!(object instanceof VariableExpression)) {
			return false;
		} else {
			VariableExpression that = (VariableExpression) object;

			return variable.equals(that.variable);
		}
	}

	public String toString() {
		return variable.toString();
	}

	public String atomString() {
		return toString();
	}
}