package org.uva.sea.ql.evaluate; public class IntegerValue extends Value{ private final int value; public IntegerValue(Integer value){ this.value = value; } public Integer getValue(){ return this.value; } @Override public Value add(Value value){ return value.addInteger(this); } @Override public Value addInteger(IntegerValue value){ return new IntegerValue(value.getValue() + this.getValue()); } @Override public Value sub(Value value){ return value.subInteger(this); } @Override public Value subInteger(IntegerValue value){ return new IntegerValue(value.getValue() - this.getValue()); } @Override public Value div(Value value){ return value.divInteger(this); } @Override public Value divInteger(IntegerValue value){ return new IntegerValue(value.getValue() / this.getValue()); } @Override public Value mul(Value value){ return value.mulInteger(this); } @Override public Value mulInteger(IntegerValue value){ return new IntegerValue(value.getValue() * this.getValue()); } @Override public Value neg(){ return new IntegerValue(-this.getValue()); } @Override public Value pos(){ return new IntegerValue(this.getValue()); } @Override public Value lt(Value value){ return value.ltInteger(this); } @Override public Value ltInteger(IntegerValue value){ return new BooleanValue(value.getValue() < this.getValue()); } @Override public Value gt(Value value){ return value.gtInteger(this); } @Override public Value gtInteger(IntegerValue value){ return new BooleanValue(value.getValue() > this.getValue()); } @Override public Value eq(Value value) { return value.eqInteger(this); } @Override public Value eqInteger(IntegerValue value) { return new BooleanValue(value.getValue() == this.getValue()); } @Override public Value leq(Value value){ return value.leqInteger(this); } @Override public Value leqInteger(IntegerValue value) { return new BooleanValue(value.getValue() <= this.getValue()); } @Override public Value geq(Value value){ return value.geqInteger(this); } @Override public Value geqInteger(IntegerValue value) { return new BooleanValue(value.getValue() >= this.getValue()); } @Override public Value neq(Value value){ return value.neqInteger(this); } @Override public Value neqInteger(IntegerValue value) { return new BooleanValue(value.getValue() != this.getValue()); } }