edu.umd.cs.findbugs.ba
Class IsNullConditionDecision

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.IsNullConditionDecision
All Implemented Interfaces:
EdgeTypes

public class IsNullConditionDecision
extends java.lang.Object
implements EdgeTypes

A control decision which resulted in information being gained about whether a particular value is null or non-null on the IFCMP_EDGE and FALL_THROUGH_EDGE branches.

See Also:
IsNullValue, IsNullValueFrame, IsNullValueAnalysis

Field Summary
private  IsNullValue fallThroughDecision
           
private  IsNullValue ifcmpDecision
           
private  ValueNumber value
           
 
Fields inherited from interface edu.umd.cs.findbugs.ba.EdgeTypes
BACKEDGE_SOURCE_EDGE, BACKEDGE_TARGET_EDGE, CHECKED_EXCEPTIONS_FLAG, EXIT_EDGE, EXPLICIT_EXCEPTIONS_FLAG, FALL_THROUGH_EDGE, GOTO_EDGE, HANDLED_EXCEPTION_EDGE, IFCMP_EDGE, JSR_EDGE, RET_EDGE, RETURN_EDGE, START_EDGE, SWITCH_DEFAULT_EDGE, SWITCH_EDGE, UNHANDLED_EXCEPTION_EDGE, UNKNOWN_EDGE
 
Constructor Summary
IsNullConditionDecision(ValueNumber value, IsNullValue ifcmpDecision, IsNullValue fallThroughDecision)
          Constructor.
 
Method Summary
 IsNullValue getDecision(int edgeType)
          Get the decision reached about the value on outgoing edge of given type.
 ValueNumber getValue()
          Get the value about which the branch yields information.
 boolean isEdgeFeasible(int edgeType)
          Determine whether or not the given edge is feasible.
 boolean isRedundant()
          Determine whether or not the comparison is redundant.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

value

private final ValueNumber value

ifcmpDecision

private final IsNullValue ifcmpDecision

fallThroughDecision

private final IsNullValue fallThroughDecision
Constructor Detail

IsNullConditionDecision

public IsNullConditionDecision(ValueNumber value,
                               IsNullValue ifcmpDecision,
                               IsNullValue fallThroughDecision)
Constructor.

Parameters:
value - the ValueNumber for which we have new information; null if no new information
ifcmpDecision - the decision for the IFCMP_EDGE; null if that edge is not feasible
fallThroughDecision - the decision for the FALL_THROUGH_EDGE; null if that edge is not feasible
Method Detail

getValue

public ValueNumber getValue()
Get the value about which the branch yields information.


isRedundant

public boolean isRedundant()
Determine whether or not the comparison is redundant.


isEdgeFeasible

public boolean isEdgeFeasible(int edgeType)
Determine whether or not the given edge is feasible. An edge may be infeasible if the comparison is redundant (i.e., can only be determined one way)

Parameters:
edgeType - the type of edge; must be IFCMP_EDGE or FALL_THROUGH_EDGE
Returns:
true if the edge is feasible, false if infeasible

getDecision

public IsNullValue getDecision(int edgeType)
Get the decision reached about the value on outgoing edge of given type.

Parameters:
edgeType - the type of edge; must be IFCMP_EDGE or FALL_THROUGH_EDGE
Returns:
the IsNullValue representing the decision, or null if the edge is infeasible

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object