edu.umd.cs.findbugs.ba.bcp
public abstract class PatternElement extends Object
Method Summary | |
---|---|
abstract boolean | acceptBranch(Edge edge, InstructionHandle source)
Return whether or not it is acceptable to take the given branch.
|
protected static BindingSet | addOrCheckDefinition(String varName, Variable variable, BindingSet bindingSet)
Add a variable definition to the given BindingSet, or if
there is an existing definition, make sure it is consistent with
the new definition.
|
boolean | allowTrailingEdges()
Return whether or not this PatternElement may match trailing edges. |
PatternElement | dominatedBy(String dominatedBy)
Set the label of another pattern element whose first
matched instruction must dominate the instruction(s) matched
by this element. |
String | getDominatedBy()
Get the label of the pattern element whose first
matched instruction must dominate the instruction(s) matched
by this element. |
String | getLabel()
Get the label of this PatternElement.
|
PatternElement | getNext()
Get the next PatternElement. |
PatternElement | label(String label)
Set a label for this PatternElement.
|
static Variable | lookup(String varName, BindingSet bindingSet)
Look up a variable definition in given BindingSet.
|
abstract MatchResult | match(InstructionHandle handle, ConstantPoolGen cpg, ValueNumberFrame before, ValueNumberFrame after, BindingSet bindingSet)
Return whether or not this element matches the given
instruction with the given Bindings in effect.
|
abstract int | maxOccur()
Return the maximum number of instructions this PatternElement
must match in the ByteCodePattern. |
abstract int | minOccur()
Return the minimum number of instructions this PatternElement
must match in the ByteCodePattern. |
PatternElement | setAllowTrailingEdges(boolean allowTrailingEdges)
Set whether or not this PatternElement allows trailing edges to be matched.
|
void | setIndex(int index)
Set the index. |
void | setNext(PatternElement patternElement)
Set the next PatternElement. |
Parameters: edge the Edge representing the branch source the source instruction of the branch
Returns: true if the Edge is acceptable, false if not
Parameters: varName the name of the variable variable the Variable which should be added or checked for consistency bindingSet the existing set of bindings
Returns: the updated BindingSet (if the variable is consistent with the previous bindings), or null if the new variable is inconsistent with the previous bindings
Returns: the label, or null if the PatternElement is not labeled
Parameters: label the label
Returns: this object
Parameters: varName the name of the variable bindingSet the BindingSet to look in
Returns: the Variable, or null if no Variable is bound to the name
Parameters: handle the instruction cpg the ConstantPoolGen from the method before the ValueNumberFrame representing values in the Java stack frame just before the execution of the instruction after the ValueNumberFrame representing values in the Java stack frame just after the execution of the instruction bindingSet the set of Bindings
Returns: if the match is successful, returns a MatchResult with the PatternElement and BindingSet; if the match is not successful, returns null
Parameters: allowTrailingEdges true if trailing edges may be matched, false if trailing edges will never be matched