package ql.ast;
import ql.ast.type.QLBoolean;
import ql.ast.type.QLNumeric;
import ql.ast.type.QLString;
import ql.ast.visitor.TypeVisitor;
public abstract class QLType implements QLNode {
/**
* Addition
*
* @param argument
* @return
*/
public abstract boolean add(QLType argument);
public abstract boolean addNumeric(QLNumeric argument);
public abstract boolean addString(QLString argument);
/**
* Division
*
* @param argument
* @return
*/
public abstract boolean divide(QLType argument);
public abstract boolean divideNumeric(QLNumeric argument);
/**
* Multiplication
*
* @param argument
* @return
*/
public abstract boolean multiply(QLType argument);
public abstract boolean multiplyNumeric(QLNumeric argument);
/**
* Subtraction
*
* @param argument
* @return
*/
public abstract boolean subtract(QLType argument);
public abstract boolean subtractNumeric(QLNumeric argument);
/**
* Unary
*
* @return
*/
public abstract boolean not();
public abstract boolean positive();
public abstract boolean negative();
/**
* Relational
* @param rightValue
* @return
*/
public abstract boolean or(QLType rightValue);
public abstract boolean orBoolean(QLBoolean argument);
public abstract boolean notEqualTo(QLType argument);
public abstract boolean notEqualToBoolean(QLBoolean argument);
public abstract boolean notEqualToNumeric(QLNumeric argument);
public abstract boolean notEqualToString(QLString argument);
public abstract boolean lowerThan(QLType argument);
public abstract boolean lowerThanNumeric(QLNumeric argument);
public abstract boolean lowerOrEqual(QLType argument);
public abstract boolean lowerOrEqualNumeric(QLNumeric argument);
public abstract boolean greaterThan(QLType argument);
public abstract boolean greaterThanNumeric(QLNumeric argument);
public abstract boolean greaterOrEqual(QLType argument);
public abstract boolean greaterOrEqualNumeric(QLNumeric argument);
public abstract boolean equalTo(QLType argument);
public abstract boolean equalToBoolean(QLBoolean argument);
public abstract boolean equalToNumeric(QLNumeric argument);
public abstract boolean equalToString(QLString argument);
public abstract boolean and(QLType argument);
public abstract boolean andBoolean(QLBoolean argument);
public abstract boolean assign(QLType argument);
public abstract boolean assignBoolean(QLBoolean argument);
public abstract boolean assignNumeric(QLNumeric argument);
public abstract boolean assignString(QLString argument);
public abstract <T> T accept(TypeVisitor<T> visitor);
@Override
public final int hashCode() {
return this.getClass().getSimpleName().hashCode();
}
@Override
public final boolean equals(Object comparisonObject) {
return comparisonObject.hashCode() == hashCode();
}
@Override
public abstract String toString();
}