package ql;
import ql.ast.QLType;
import ql.value.BooleanValue;
import ql.value.FloatValue;
import ql.value.IntegerValue;
import ql.value.StringValue;
public interface Value {
public boolean isUndefined();
public boolean isNumeric();
public Object getPrimitive();
public QLType getType();
/**
* Addition
*
* @param argument
* @return
*/
public Value add(Value argument);
public Value addInteger(IntegerValue argument);
public Value addFloat(FloatValue argument);
/**
* Division
*
* @param argument
* @return
*/
public Value divide(Value argument);
public Value divideInteger(IntegerValue argument);
public Value divideFloat(FloatValue argument);
/**
* Multiplication
*
* @param argument
* @return
*/
public Value multiply(Value argument);
public Value multiplyInteger(IntegerValue argument);
public Value multiplyFloat(FloatValue argument);
/**
* Subtraction
*
* @param argument
* @return
*/
public Value subtract(Value argument);
public Value subtractInteger(IntegerValue argument);
public Value subtractFloat(FloatValue argument);
/**
* Unary
*
* @return
*/
public Value not();
public Value positive();
public Value negative();
/**
* Relational
* @param rightValue
* @return
*/
public Value or(Value rightValue);
public Value orBoolean(BooleanValue argument);
public Value notEqualTo(Value argument);
public Value notEqualToBoolean(BooleanValue argument);
public Value notEqualToInteger(IntegerValue argument);
public Value notEqualToFloat(FloatValue argument);
public Value notEqualToString(StringValue argument);
public Value lowerThan(Value argument);
public Value lowerThanInteger(IntegerValue argument);
public Value lowerThanFloat(FloatValue argument);
public Value lowerOrEqual(Value argument);
public Value lowerOrEqualInteger(IntegerValue argument);
public Value lowerOrEqualFloat(FloatValue argument);
public Value greaterThan(Value argument);
public Value greaterThanInteger(IntegerValue argument);
public Value greaterThanFloat(FloatValue argument);
public Value greaterOrEqual(Value argument);
public Value greaterOrEqualThanInteger(IntegerValue argument);
public Value greaterOrEqualThanFloat(FloatValue argument);
public Value equalTo(Value argument);
public Value equalToBoolean(BooleanValue argument);
public Value equalToInteger(IntegerValue argument);
public Value equalToFloat(FloatValue argument);
public Value equalToString(StringValue argument);
public Value and(Value argument);
public Value andBoolean(BooleanValue argument);
@Override
public int hashCode();
@Override
public boolean equals(Object obj);
@Override
public String toString();
}