CharacterValue.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.dynamic.impl.type.PrimitiveValueType;
import edu.udel.cis.vsl.tass.model.IF.type.TypeIF;
import edu.udel.cis.vsl.tass.symbolic.IF.SymbolicExpressionIF;
public class CharacterValue extends SymbolicValue {
/** Supplementary information to be used for printing. May be null. */
private Character literal = null;
/**
* The intrinsic value of the character object is the symbolic value
* symExpression. The extrinsic field literal is used just for printing a
* concrete character. It may be null.
*/
public CharacterValue(SymbolicExpressionIF symExpression,
ValueTypeIF valueType, Character literal) {
super(symExpression, valueType);
assert valueType instanceof PrimitiveValueType
&& ((PrimitiveValueType) valueType).type().kind() == TypeIF.TypeKind.CHAR;
assert symExpression.type().isInteger();
this.literal = literal;
}
@Override
public String toString() {
if (literal == null)
return getSymbolicExpression().toString();
return literal.toString();
}
}