BooleanConcreteExpression.java

package edu.udel.cis.vsl.tass.symbolic.concrete;

import edu.udel.cis.vsl.tass.symbolic.IF.tree.BooleanConcreteExpressionIF;
import edu.udel.cis.vsl.tass.symbolic.IF.tree.TreeExpressionIF;
import edu.udel.cis.vsl.tass.symbolic.IF.type.SymbolicTypeIF;
import edu.udel.cis.vsl.tass.symbolic.expression.SymbolicExpression;

public class BooleanConcreteExpression extends SymbolicExpression implements
		BooleanConcreteExpressionIF {

	private Boolean value;

	BooleanConcreteExpression(SymbolicTypeIF booleanType, Boolean value) {
		super(booleanType);
		assert value != null;
		this.value = value;
	}

	public Boolean value() {
		return value;
	}

	protected int intrinsicHashCode() {
		return BooleanConcreteExpression.class.hashCode() + (value ? 1 : 0);
	}

	protected boolean intrinsicEquals(SymbolicExpression that) {
		return that instanceof BooleanConcreteExpression
				&& ((BooleanConcreteExpression) that).value.equals(value);
	}

	public String toString() {
		return (value ? "true" : "false");
	}

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

	public TreeExpressionIF argument(int index) {
		throw new IllegalArgumentException("0 arguments");
	}

	public SymbolicKind kind() {
		return SymbolicKind.CONCRETE_BOOLEAN;
	}

	public int numArguments() {
		return 0;
	}

}