SymbolicValue.java
package edu.udel.cis.vsl.tass.dynamic.impl.value;
import edu.udel.cis.vsl.tass.dynamic.IF.type.ValueTypeIF;
import edu.udel.cis.vsl.tass.morph.Morphic;
import edu.udel.cis.vsl.tass.symbolic.IF.SymbolicExpressionIF;
public class SymbolicValue extends Value {
private static int classHashCode = SymbolicValue.class.hashCode();
public SymbolicValue(SymbolicExpressionIF symExpression,
ValueTypeIF valueType) {
super(valueType);
assert symExpression != null;
commit();
setSymbolicExpression(symExpression);
}
@Override
protected int computeHashCode() {
return super.computeHashCode() + classHashCode
+ getSymbolicExpression().hashCode();
}
@Override
protected boolean computeEquals(Morphic component) {
if (component instanceof SymbolicValue) {
SymbolicValue that = (SymbolicValue) component;
return super.computeEquals(that)
&& getSymbolicExpression().equals(
that.getSymbolicExpression());
}
return false;
}
@Override
public String toString() {
SymbolicExpressionIF symExpression = getSymbolicExpression();
return (symExpression == null ? "null" : symExpression.toString());
}
}