package com.googlecode.totallylazy.numbers;
public class NumOperator implements Operators<Number> {
private final Operators<Number> operators;
public NumOperator(Operators<Number> operators) {this.operators = operators;}
@Override
public int priority() {
return operators.priority() + 1;
}
@Override
public Number absolute(Number value) {
return operators.absolute(raw(value));
}
@Override
public Number negate(Number value) {
return operators.negate(raw(value));
}
private Number raw(Number value) {
return value instanceof Num ? ((Num) value).value() : value;
}
@Override
public Number increment(Number value) {
return operators.increment(raw(value));
}
@Override
public Number decrement(Number value) {
return operators.decrement(raw(value));
}
@Override
public boolean isZero(Number value) {
return operators.isZero(raw(value));
}
@Override
public boolean isPositive(Number value) {
return operators.isPositive(raw(value));
}
@Override
public boolean isNegative(Number value) {
return operators.isNegative(raw(value));
}
@Override
public boolean equalTo(Number x, Number y) {
return operators.equalTo(raw(x), raw(y));
}
@Override
public boolean lessThan(Number x, Number y) {
return operators.lessThan(raw(x), raw(y));
}
@Override
public Number add(Number x, Number y) {
return operators.add(raw(x), raw(y));
}
@Override
public Number multiply(Number x, Number y) {
return operators.multiply(raw(x), raw(y));
}
@Override
public Number divide(Number x, Number y) {
return operators.divide(raw(x), raw(y));
}
@Override
public Number quotient(Number x, Number y) {
return operators.quotient(raw(x), raw(y));
}
@Override
public Number remainder(Number x, Number y) {
return operators.remainder(raw(x), raw(y));
}
@Override
public Class<Number> forClass() {
return operators.forClass();
}
}