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, visit
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
canPushDownInto, dump, getInferredJavaType, isSimple, isValidStatement, pushDown, visit
dumpWithOuterPrecedence
outerDeepClone
addLoc, getLoc
private 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 HasByteCodeLoc
public void collectTypeUsages(TypeUsageCollector collector)
collectTypeUsages
in interface TypeUsageCollectable
collectTypeUsages
in class AbstractExpression
public int getSize(Precedence outerPrecedence)
getSize
in interface ConditionalExpression
public Precedence getPrecedence()
getPrecedence
in interface DumpableWithPrecedence
getPrecedence
in class AbstractExpression
public Dumper dumpInner(Dumper d)
dumpInner
in class AbstractExpression
public Expression replaceSingleUsageLValues(LValueRewriter lValueRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer)
replaceSingleUsageLValues
in interface Expression
public Expression applyExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
applyExpressionRewriter
in interface Expression
public Expression applyReverseExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
applyReverseExpressionRewriter
in interface Expression
public ConditionalExpression getNegated()
getNegated
in interface ConditionalExpression
public CompOp getOp()
public ConditionalExpression getDemorganApplied(boolean amNegating)
getDemorganApplied
in interface ConditionalExpression
public ConditionalExpression getRightDeep()
getRightDeep
in interface ConditionalExpression
private void addIfLValue(Expression expression, java.util.Set<LValue> res)
public java.util.Set<LValue> getLoopLValues()
getLoopLValues
in interface ConditionalExpression
public void collectUsedLValues(LValueUsageCollector lValueUsageCollector)
collectUsedLValues
in interface Expression
private static ComparisonOperation.BooleanComparisonType isBooleanComparison(Expression a, Expression b, CompOp op)
private ConditionalExpression getConditionalExpression(Expression booleanExpression, ComparisonOperation.BooleanComparisonType booleanComparisonType)
public ConditionalExpression optimiseForType()
optimiseForType
in interface ConditionalExpression
public Expression getLhs()
public Expression getRhs()
public ConditionalExpression simplify()
simplify
in interface ConditionalExpression
public boolean rewriteBoxing(PrimitiveBoxingRewriter boxingRewriter)
rewriteBoxing
in interface BoxingProcessor
public void applyNonArgExpressionRewriter(ExpressionRewriter expressionRewriter, SSAIdentifiers ssaIdentifiers, StatementContainer statementContainer, ExpressionRewriterFlags flags)
applyNonArgExpressionRewriter
in interface BoxingProcessor
public boolean equals(java.lang.Object o)
equals
in class AbstractExpression
public boolean canThrow(ExceptionCheck caught)
canThrow
in interface Expression
canThrow
in class AbstractExpression
public final boolean equivalentUnder(java.lang.Object o, EquivalenceConstraint constraint)
equivalentUnder
in interface Expression
equivalentUnder
in interface ComparableUnderEC
public Literal getComputedLiteral(java.util.Map<LValue,Literal> display)
getComputedLiteral
in interface Expression
getComputedLiteral
in class AbstractExpression