package nl.uva.polyql.ast.values;
import nl.uva.polyql.ast.Question;
import nl.uva.polyql.ast.expressions.operations.BinaryOperator;
import nl.uva.polyql.ast.expressions.operations.UnaryOperator;
import nl.uva.polyql.view.BooleanValueView;
import nl.uva.polyql.view.QuestionView;
public class BooleanValue extends Value<Boolean> {
public BooleanValue(final Boolean value) {
super(value);
}
@Override
public Type getType() {
return Type.BOOLEAN;
}
@Override
public QuestionView getView(final Question question) {
return new BooleanValueView(question);
}
@Override
public void setViewValue(final QuestionView view) {
view.setComponentValue(this);
}
@Override
public Value<?> performOperationOnLeft(final BinaryOperator operator, final Value<?> rightValue) {
return rightValue.performOperationOnRight(this, operator);
}
@Override
public Value<?> performOperationOnRight(final BooleanValue leftValue, final BinaryOperator operator) {
return operator.performOperation(leftValue, this);
}
@Override
public Value<?> performUnaryOperation(final UnaryOperator operator) {
return operator.performOperation(this);
}
}