public class ProcessGraphPredicates
extends java.lang.Object
These are implementations of the methods described in Reic00. They make no use of "advanced" properties like branch IDs, split node IDs or corresponding block node IDs. Therefore they may be used to discover inconsistencies in the graph.
Since they anyways only use getPred/SuccByEdgeType, do not expect efficiency.
For an overview of the most predicates implemented here, cf. Reic00 page 333.
| Modifier and Type | Field and Description |
|---|---|
protected static java.util.logging.Logger |
logger
My logger.
|
| Constructor and Description |
|---|
ProcessGraphPredicates() |
| Modifier and Type | Method and Description |
|---|---|
static int[] |
branchNodes(Template template,
int nodeID1,
int nodeID2)
Returns the branch nodes of the given nodes as array of length 2.
|
static java.util.Set<java.lang.Integer> |
c_pred_trans(Template template,
int nodeID)
Returns all direct and transitive predecessors, following control
edges, cf.
|
static java.util.Set<java.lang.Integer> |
c_pred(Template template,
int nodeID)
The direct predecessors of the given node following control edges
only, as described in Reic00 page 333.
|
static java.util.Set<java.lang.Integer> |
c_succ_trans(Template template,
int nodeID)
Returns all direct and transitive predecessors, following control
edges, cf.
|
static java.util.Set<java.lang.Integer> |
c_succ(Template template,
int nodeID)
The direct successors of the given node following control edges
only, as described in Reic00 page 333.
|
static int |
endloop(Template template,
int startLoopID)
Returns the end loop node ID for a given start loop node ID.
|
static int |
findSplitNode(Template template,
int nodeID)
Finds the split node of the given node, cf.
|
static boolean |
isBlockEnd(Template template,
int nodeID)
A block end node, as it is defined in Reic00.
|
static boolean |
isBlockStart(Template template,
int nodeID)
A block start node, as it is defined in Reic00.
|
static int |
join(Template template,
int nodeID)
Finds the join node of a given split node.
|
static java.util.Set<java.lang.Integer> |
joinNodes(Template template)
Returns all nodes which are join nodes, as defined in Reic00 having
an enter behaviour of ALL_OF_ALL or ONE_OF_ALL.
|
static java.util.Set<java.lang.Integer> |
loopBody(Template template,
int startLoopID)
Returns all nodes in the body of a loop block.
|
static java.util.Set<java.lang.Integer> |
pred_trans(Template template,
int nodeID)
Returns all direct and transitive predecessors, following control
and sync edges, cf.
|
static java.util.Set<java.lang.Integer> |
pred(Template template,
int nodeID)
The direct predecessors of the given node, as described in Reic00
page 333.
|
static int |
split(Template template,
int nodeID)
Finds the split node of a given join node.
|
static java.util.Set<java.lang.Integer> |
splitNodes(Template template)
Returns all nodes which are split nodes, as defined in Reic00 having
an exit behaviour of ALL_OF_ALL or ONE_OF_ALL.
|
static java.util.Set<java.lang.Integer> |
succ_trans(Template template,
int nodeID)
Returns all direct and transitive successors, following control
and sync edges, cf.
|
static java.util.Set<java.lang.Integer> |
succ(Template template,
int nodeID)
The direct successors of the given node, as described in Reic00
page 333.
|
public static java.util.Set<java.lang.Integer> c_succ_trans(Template template, int nodeID)
This is c_succ*(n)
template - nodeID - public static java.util.Set<java.lang.Integer> c_pred_trans(Template template, int nodeID)
This is c_pred*(n)
template - nodeID - public static java.util.Set<java.lang.Integer> succ_trans(Template template, int nodeID)
This is succ*(n)
template - nodeID - public static java.util.Set<java.lang.Integer> pred_trans(Template template, int nodeID)
This is pred*(n)
template - nodeID - public static java.util.Set<java.lang.Integer> c_succ(Template template, int nodeID)
template - nodeID - public static java.util.Set<java.lang.Integer> c_pred(Template template, int nodeID)
template - nodeID - public static java.util.Set<java.lang.Integer> succ(Template template, int nodeID)
template - nodeID - public static java.util.Set<java.lang.Integer> pred(Template template, int nodeID)
template - nodeID - public static int split(Template template, int nodeID)
template - nodeID - public static int join(Template template, int nodeID)
template - nodeID - public static int findSplitNode(Template template, int nodeID)
Template.getNodeSplitNodeID(int).template - nodeID - Template.getNodeSplitNodeID(int).public static boolean isBlockEnd(Template template, int nodeID)
template - nodeID - public static boolean isBlockStart(Template template, int nodeID)
template - nodeID - public static java.util.Set<java.lang.Integer> splitNodes(Template template)
Cf. Reic00 page 75.
template - public static java.util.Set<java.lang.Integer> joinNodes(Template template)
Cf. Reic00 page 75.
template - public static int[] branchNodes(Template template, int nodeID1, int nodeID2)
Cf. Reic00 page 340.
template - nodeID1 - nodeID2 - public static java.util.Set<java.lang.Integer> loopBody(Template template, int startLoopID)
template - startLoopID - public static int endloop(Template template, int startLoopID)
template - startLoopID -