package org.uva.sea.ql.interpreter.value; import org.uva.sea.ql.ast.type.Type; public class Bool extends Value<Boolean> { public Bool(){ this.value = false; } public Bool(boolean value){ this.value = value; } @Override public Value<?> and(Value<?> value) { return value.boolAnd(this); } @Override public Value<?> or(Value<?> value) { return value.boolOr(this); } @Override public Value<?> not() { return new Bool(!value); } @Override protected Value<?> boolAnd(Bool leftValue) { return new Bool(leftValue.getValue() && value); } @Override protected Value<?> boolOr(Bool leftValue) { return new Bool(leftValue.getValue() || value); } @Override public Value<?> parse(Type type) { return type.hasValue().parse(this); } @Override protected Value<?> parse(Bool value) { return value; } @Override protected Value<?> parse(Undefined value) { return new Bool(); } }