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