|
Jlm
|
Strongly Connected Component Structure. More...
#include <cfg-structure.hpp>

Public Member Functions | |
| size_t | NumEntryNodes () const noexcept |
| size_t | NumExitNodes () const noexcept |
| size_t | NumEntryEdges () const noexcept |
| size_t | NumRepetitionEdges () const noexcept |
| size_t | NumExitEdges () const noexcept |
| NodeIteratorRange | EntryNodes () const |
| NodeIteratorRange | ExitNodes () const |
| EdgeIteratorRange | EntryEdges () const |
| EdgeIteratorRange | RepetitionEdges () const |
| EdgeIteratorRange | ExitEdges () const |
| bool | IsTailControlledLoop () const noexcept |
Static Public Member Functions | |
| static std::unique_ptr< StronglyConnectedComponentStructure > | Create (const StronglyConnectedComponent &scc) |
Private Types | |
| using | CfgEdgeConstIterator = util::HashSet< ControlFlowGraphEdge * >::ItemConstIterator |
| using | CfgNodeConstIterator = util::HashSet< ControlFlowGraphNode * >::ItemConstIterator |
| using | EdgeIteratorRange = util::IteratorRange< CfgEdgeConstIterator > |
| using | NodeIteratorRange = util::IteratorRange< CfgNodeConstIterator > |
Private Attributes | |
| util::HashSet< ControlFlowGraphNode * > | EntryNodes_ {} |
| util::HashSet< ControlFlowGraphNode * > | ExitNodes_ {} |
| util::HashSet< ControlFlowGraphEdge * > | EntryEdges_ {} |
| util::HashSet< ControlFlowGraphEdge * > | RepetitionEdges_ {} |
| util::HashSet< ControlFlowGraphEdge * > | ExitEdges_ {} |
Strongly Connected Component Structure.
This class computes the structure of strongly connected components (SCCs). It detects the following entities:
Definition at line 69 of file cfg-structure.hpp.
|
private |
Definition at line 71 of file cfg-structure.hpp.
|
private |
Definition at line 72 of file cfg-structure.hpp.
|
private |
Definition at line 74 of file cfg-structure.hpp.
|
private |
Definition at line 75 of file cfg-structure.hpp.
|
static |
Creates an SCC structure from scc.
Definition at line 36 of file cfg-structure.cpp.
|
inline |
Definition at line 121 of file cfg-structure.hpp.
|
inline |
Definition at line 109 of file cfg-structure.hpp.
|
inline |
Definition at line 133 of file cfg-structure.hpp.
|
inline |
Definition at line 115 of file cfg-structure.hpp.
|
noexcept |
Checks if the SCC structure is a tail-controlled loop. A tail-controlled loop is defined as an SSC with a single entry node, as well as a single repetition and exit edge. Both these edges must have the same CFG node as origin.
Definition at line 29 of file cfg-structure.cpp.
|
inlinenoexcept |
Definition at line 91 of file cfg-structure.hpp.
|
inlinenoexcept |
Definition at line 79 of file cfg-structure.hpp.
|
inlinenoexcept |
Definition at line 103 of file cfg-structure.hpp.
|
inlinenoexcept |
Definition at line 85 of file cfg-structure.hpp.
|
inlinenoexcept |
Definition at line 97 of file cfg-structure.hpp.
|
inline |
Definition at line 127 of file cfg-structure.hpp.
|
private |
Definition at line 155 of file cfg-structure.hpp.
|
private |
Definition at line 153 of file cfg-structure.hpp.
|
private |
Definition at line 157 of file cfg-structure.hpp.
|
private |
Definition at line 154 of file cfg-structure.hpp.
|
private |
Definition at line 156 of file cfg-structure.hpp.