public class ComparisonOperation extends AbstractExpression implements ConditionalExpression, BoxingProcessor
| Modifier and Type | Class and Description |
|---|---|
private static class |
ComparisonOperation.BooleanComparisonType |
| Modifier and Type | Field and Description |
|---|---|
private boolean |
canNegate |
private Expression |
lhs |
private CompOp |
op |
private Expression |
rhs |
| Constructor and Description |
|---|
ComparisonOperation(BytecodeLoc loc,
Expression lhs,
Expression rhs,
CompOp op) |
ComparisonOperation(BytecodeLoc loc,
Expression lhs,
Expression rhs,
CompOp op,
boolean canNegate) |
addLoc, canPushDownInto, dump, dumpWithOuterPrecedence, getInferredJavaType, getLoc, isSimple, isValidStatement, outerDeepClone, pushDown, toString, visitclone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcanPushDownInto, dump, getInferredJavaType, isSimple, isValidStatement, pushDown, visitdumpWithOuterPrecedenceouterDeepCloneaddLoc, getLocprivate Expression lhs
private Expression rhs
private final CompOp op
private final boolean canNegate
public ComparisonOperation(BytecodeLoc loc, Expression lhs, Expression rhs, CompOp op)
public ComparisonOperation(BytecodeLoc loc, Expression lhs, Expression rhs, CompOp op, boolean canNegate)
public Expression deepClone(CloneHelper cloneHelper)
deepClone in interface DeepCloneable<Expression>public BytecodeLoc getCombinedLoc()
getCombinedLoc in interface HasByteCodeLocpublic void collectTypeUsages(TypeUsageCollector collector)
collectTypeUsages in interface TypeUsageCollectablecollectTypeUsages in class AbstractExpressionpublic int getSize(Precedence outerPrecedence)
getSize in interface ConditionalExpressionpublic Precedence getPrecedence()
getPrecedence in interface DumpableWithPrecedencegetPrecedence in class AbstractExpressionpublic Dumper dumpInner(Dumper d)
dumpInner in class AbstractExpressionpublic Expression replaceSingleUsageLValues(LValueRewriter lValueRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer)
replaceSingleUsageLValues in interface Expressionpublic Expression applyExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
applyExpressionRewriter in interface Expressionpublic Expression applyReverseExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
applyReverseExpressionRewriter in interface Expressionpublic ConditionalExpression getNegated()
getNegated in interface ConditionalExpressionpublic CompOp getOp()
public ConditionalExpression getDemorganApplied(boolean amNegating)
getDemorganApplied in interface ConditionalExpressionpublic ConditionalExpression getRightDeep()
getRightDeep in interface ConditionalExpressionprivate void addIfLValue(Expression expression, java.util.Set<LValue> res)
public java.util.Set<LValue> getLoopLValues()
getLoopLValues in interface ConditionalExpressionpublic void collectUsedLValues(LValueUsageCollector lValueUsageCollector)
collectUsedLValues in interface Expressionprivate static ComparisonOperation.BooleanComparisonType isBooleanComparison(Expression a, Expression b, CompOp op)
private ConditionalExpression getConditionalExpression(Expression booleanExpression, ComparisonOperation.BooleanComparisonType booleanComparisonType)
public ConditionalExpression optimiseForType()
optimiseForType in interface ConditionalExpressionpublic Expression getLhs()
public Expression getRhs()
public ConditionalExpression simplify()
simplify in interface ConditionalExpressionpublic boolean rewriteBoxing(PrimitiveBoxingRewriter boxingRewriter)
rewriteBoxing in interface BoxingProcessorpublic void applyNonArgExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
applyNonArgExpressionRewriter in interface BoxingProcessorpublic boolean equals(java.lang.Object o)
equals in class AbstractExpressionpublic boolean canThrow(ExceptionCheck caught)
canThrow in interface ExpressioncanThrow in class AbstractExpressionpublic final boolean equivalentUnder(java.lang.Object o,
EquivalenceConstraint constraint)
equivalentUnder in interface ExpressionequivalentUnder in interface ComparableUnderECpublic Literal getComputedLiteral(java.util.Map<LValue,Literal> display)
getComputedLiteral in interface ExpressiongetComputedLiteral in class AbstractExpression