package org.uva.sea.ql.evaluate;
import org.uva.sea.ql.ast.type.Type;
public abstract class Value {
public abstract Object getValue();
public Value add(Value value){
throw new UnsupportedOperationException() ;
}
public Value addInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value sub(Value value) {
throw new UnsupportedOperationException();
}
public Value subInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value div(Value value) {
throw new UnsupportedOperationException();
}
public Value divInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value mul(Value value) {
throw new UnsupportedOperationException();
}
public Value mulInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value neg() {
throw new UnsupportedOperationException();
}
public Value pos() {
throw new UnsupportedOperationException();
}
public Value eq(Value value) {
throw new UnsupportedOperationException();
}
public Value eqInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value leq(Value value){
throw new UnsupportedOperationException();
}
public Value leqInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value gt(Value value){
throw new UnsupportedOperationException();
}
public Value gtInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value geq(Value value){
throw new UnsupportedOperationException();
}
public Value geqInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value lt(Value value){
throw new UnsupportedOperationException();
}
public Value ltInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value neq(Value value){
throw new UnsupportedOperationException();
}
public Value neqInteger(IntegerValue integerValue) {
throw new UnsupportedOperationException();
}
public Value and(Value value){
throw new UnsupportedOperationException();
}
public Value andBoolean(BooleanValue booleanValue) {
throw new UnsupportedOperationException();
}
public Value or(Value value){
throw new UnsupportedOperationException();
}
public Value orBoolean(BooleanValue booleanValue) {
throw new UnsupportedOperationException();
}
public Value not(){
throw new UnsupportedOperationException();
}
@Override
public boolean equals(Object other) {
if (other instanceof Type) {
return getValue().equals(((Value) other).getValue());
}
return false;
}
@Override
public int hashCode(){
return getValue().hashCode();
}
public boolean isDefined(){
return (this != UndefinedValue.UNDEF);
}
}