package expression;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;

/**
 * @author Doschennikov Nikita (me@fymio.us)
 */
public abstract class AbstractExpression
    implements
        Expression,
        TripleExpression,
        ListExpression,
        BigIntegerListExpression,
        BigDecimalListExpression
{

    @Override
    public abstract int evaluate(int x);

    @Override
    public abstract int evaluate(int x, int y, int z);

    @Override
    public abstract int evaluate(List<Integer> vars);

    @Override
    public abstract BigInteger evaluateBi(List<BigInteger> vars);

    @Override
    public abstract BigDecimal evaluateBd(List<BigDecimal> vars);

    @Override
    public abstract String toString();

    @Override
    public abstract boolean equals(Object obj);

    @Override
    public abstract int hashCode();
}
