package org.uva.ql.ast.value;
public class BoolValue extends Value {
private final Boolean value;
public BoolValue(Boolean value) {
this.value = value;
}
@Override
public Boolean value() {
return value;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof BoolValue){
return value.equals(((BoolValue) obj).value());
} else {
throw new UnsupportedOperationException("BoolValue is only compariable with another BoolValue.");
}
}
@Override
public boolean isDefined() {
return true;
}
@Override
public String toString() {
return value.toString();
}
@Override
public Value not() {
return new BoolValue(!value());
}
@Override
public Value and(Value arg) {
return arg.boolAnd(this);
}
@Override
public Value boolAnd(BoolValue arg) {
return new BoolValue(arg.value() && value());
}
@Override
public Value or(Value arg) {
return arg.boolOr(this);
}
@Override
public Value boolOr(BoolValue arg) {
return new BoolValue(arg.value() || value());
}
@Override
public Value equal(Value arg) {
return arg.boolEqual(this);
}
@Override
public Value boolEqual(BoolValue arg) {
return new BoolValue(arg.value() == value());
}
@Override
public Value notEqual(Value arg) {
return arg.boolNotEqual(this);
}
@Override
public Value boolNotEqual(BoolValue arg) {
return new BoolValue(arg.value() != value());
}
}