public abstract class ComparisonOp<T extends BinopExpr<Expr,Expr>> extends Binop<T> {
public abstract Boolean testCompare(Integer cmp) ;
public abstract Inst createOp(TypeCode tc,Mark isTrue) ;
public abstract TypeCode getComparisonType(EvaluationContext context,Expr lhs,Expr rhs) throws CompilerException ;
public void compile(TypeName forwardType, T t, EvaluationContext context, InstList result) throws CompilerException {
final Expr lhs = t.lhs;
final Expr rhs = t.rhs;
TypeCode type = getComparisonType(context,lhs, rhs) ;
Mark isTrue = new Mark() ;
StdJavaExpressions.createBinopComparison(context, lhs, rhs,TypeName.valueOf(type),isTrue,createOp(type,isTrue),result);
StdJavaExpressions.convertResult(context,t, forwardType, result) ;
}