CommonIntegerValue.java
package edu.udel.cis.vsl.abc.ast.value.common;
import java.math.BigInteger;
import edu.udel.cis.vsl.abc.ast.type.IF.IntegerType;
import edu.udel.cis.vsl.abc.ast.value.IF.IntegerValue;
import edu.udel.cis.vsl.abc.ast.value.IF.ValueFactory.Answer;
public class CommonIntegerValue extends CommonValue implements IntegerValue {
private final static int classCode = CommonIntegerValue.class.hashCode();
private BigInteger integerValue;
public CommonIntegerValue(IntegerType type, BigInteger integerValue) {
super(type);
assert integerValue != null;
this.integerValue = integerValue;
}
@Override
public BigInteger getIntegerValue() {
return integerValue;
}
@Override
public IntegerType getType() {
return (IntegerType) super.getType();
}
@Override
public boolean equals(Object object) {
if (this == object)
return true;
if (object instanceof CommonIntegerValue) {
CommonIntegerValue that = (CommonIntegerValue) object;
return getType().equals(that.getType())
&& integerValue.equals(that.integerValue);
}
return false;
}
@Override
public int hashCode() {
return classCode + getType().hashCode() + integerValue.hashCode();
}
@Override
public Answer isZero() {
return integerValue.signum() == 0 ? Answer.YES : Answer.NO;
}
@Override
public String toString() {
return integerValue.toString();
}
}