RealCastExpression.java
package edu.udel.cis.vsl.tass.symbolic.cast;
import edu.udel.cis.vsl.tass.symbolic.NumericPrimitive;
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 RealCastExpression extends SymbolicExpression implements
NumericPrimitive {
private NumericPrimitive integerExpression;
public RealCastExpression(SymbolicTypeIF realType,
NumericPrimitive integerExpression) {
super(realType);
this.integerExpression = integerExpression;
}
public NumericPrimitive integerExpression() {
return integerExpression;
}
@Override
protected boolean intrinsicEquals(SymbolicExpression that) {
return that instanceof RealCastExpression
&& integerExpression
.equals(((RealCastExpression) that).integerExpression);
}
@Override
protected int intrinsicHashCode() {
return RealCastExpression.class.hashCode()
+ integerExpression.hashCode();
}
public String toString() {
return "(real)" + integerExpression.atomString();
}
public String atomString() {
return toString();
}
public NumericPrimitiveKind numericPrimitiveKind() {
return NumericPrimitiveKind.CAST;
}
public TreeExpressionIF argument(int index) {
switch (index) {
case 0:
return integerExpression;
default:
throw new RuntimeException("numArguments=" + 1 + ", index=" + index);
}
}
public SymbolicKind kind() {
return SymbolicKind.CAST;
}
public int numArguments() {
return 1;
}
}