Package sootup.core.graph
Class ImmutableBlockStmtGraph
java.lang.Object
sootup.core.graph.StmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
sootup.core.graph.ImmutableBlockStmtGraph
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancontainsNode(@NonNull Stmt node) exceptionalPredecessors(@NonNull Stmt node) it is possible to reach traphandlers through inline code i.e. without any exceptional flowexceptionalSuccessors(@NonNull Stmt node) getBlockOf(@NonNull Stmt stmt) @NonNull List<? extends BasicBlock<?>>getNodes()returns the nodes in this graph in a non-deterministic order (->Set) to get the nodes in linearized, ordered manner use iterator() or getStmts.@Nullable StmtBasicBlock<?>List<BasicBlock<?>>booleanhasEdgeConnecting(@NonNull Stmt source, @NonNull Stmt target) returns true if there is a flow between source and target throws an Exception if at least one of the parameters is not contained in the graph.intreturns the amount of ingoing flows into nodeiterator()intreturns the amount of flows that start from nodepredecessors(@NonNull Stmt node) returns the ingoing flows to node as an List with no reliable/specific order and possibly duplicate entries i.e. if a JSwitchStmt has multiple cases that brnach to `node`voidremoveExceptionalFlowFromAllBlocks(ClassType classType, Stmt exceptionHandlerStmt) Removes the specified exceptional flow from all blocks.successors(@NonNull Stmt node) returns the outgoing flows of node as ordered List.Methods inherited from class sootup.core.graph.StmtGraph
degree, equals, getAllSuccessors, getBlockIterator, getBranchTargetsOf, getEntrypoints, getExtendedBasicBlockPathBetween, getStmts, getTails, isStmtBranchTarget, toString, validateStmtConnectionsInGraphMethods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
ImmutableBlockStmtGraph
-
-
Method Details
-
getStartingStmt
- Specified by:
getStartingStmtin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
getStartingStmtBlock
- Specified by:
getStartingStmtBlockin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
getTailStmtBlocks
- Specified by:
getTailStmtBlocksin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
getBlockOf
- Specified by:
getBlockOfin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
getNodes
Description copied from class:StmtGraphreturns the nodes in this graph in a non-deterministic order (->Set) to get the nodes in linearized, ordered manner use iterator() or getStmts.- Specified by:
getNodesin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
getBlocks
- Specified by:
getBlocksin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
getBlocksSorted
- Specified by:
getBlocksSortedin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
containsNode
- Specified by:
containsNodein classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
predecessors
Description copied from class:StmtGraphreturns the ingoing flows to node as an List with no reliable/specific order and possibly duplicate entries i.e. if a JSwitchStmt has multiple cases that brnach to `node`- Specified by:
predecessorsin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
exceptionalPredecessors
Description copied from class:StmtGraphit is possible to reach traphandlers through inline code i.e. without any exceptional flow- Specified by:
exceptionalPredecessorsin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
successors
Description copied from class:StmtGraphreturns the outgoing flows of node as ordered List. The List can have duplicate entries!- Specified by:
successorsin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
exceptionalSuccessors
- Specified by:
exceptionalSuccessorsin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
inDegree
Description copied from class:StmtGraphreturns the amount of ingoing flows into node- Specified by:
inDegreein classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
outDegree
Description copied from class:StmtGraphreturns the amount of flows that start from node- Specified by:
outDegreein classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
hasEdgeConnecting
Description copied from class:StmtGraphreturns true if there is a flow between source and target throws an Exception if at least one of the parameters is not contained in the graph.- Specified by:
hasEdgeConnectingin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>
-
removeExceptionalFlowFromAllBlocks
Description copied from class:StmtGraphRemoves the specified exceptional flow from all blocks.- Specified by:
removeExceptionalFlowFromAllBlocksin classStmtGraph<ImmutableBlockStmtGraph.ImmutableBasicBlock>- Parameters:
classType- The class type of the exceptional flow.exceptionHandlerStmt- The handler statement of the exceptional flow.
-
iterator
-