ROSE 2.20.0
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
StaticCFG::CFG Class Reference

Description

Definition at line 24 of file staticCFG.h.

Inheritance diagram for StaticCFG::CFG:
Inheritance graph
[legend]
Collaboration diagram for StaticCFG::CFG:
Collaboration graph
[legend]

Public Member Functions

CFGNode toCFGNode (SgGraphNode *node)
 Turn a graph node into a CFGNode which is defined in VirtualCFG namespace.
 
SgGraphNode * toGraphNode (CFGNode &n)
 Turn a CFG node into a GraphNode which is defined in VirtualCFG namespace.
 
 CFG (SgNode *node, bool is_filtered=false)
 The constructor building the CFG.
 
SgIncidenceDirectedGraph * getGraph () const
 Get the pointer pointing to the graph used by static CFG.
 
void setStart (SgNode *node)
 Set the start node for graph building.
 
SgGraphNode * getEntry () const
 Get the entry node of the CFG.
 
SgGraphNode * getExit () const
 Get the exit node of the CFG.
 
bool isFilteredCFG () const
 
void setFiltered (bool flag)
 
virtual void buildCFG ()
 Build CFG according to the 'is_filtered_' flag.
 
virtual void buildFullCFG ()
 Build CFG for debugging.
 
virtual void buildFilteredCFG ()
 Build filtered CFG which only contains interesting nodes.
 
std::vector< SgDirectedGraphEdge * > getOutEdges (SgGraphNode *node)
 
std::vector< SgDirectedGraphEdge * > getInEdges (SgGraphNode *node)
 
SgGraphNode * cfgForBeginning (SgNode *node)
 
SgGraphNode * cfgForEnd (SgNode *node)
 
void cfgToDot (SgNode *node, const std::string &file_name)
 Output the graph to a DOT file.
 

Static Public Member Functions

static int getIndex (SgGraphNode *node)
 Get the index of a CFG node.
 

Protected Member Functions

template<class NodeT , class EdgeT >
void buildCFG (NodeT n, std::map< NodeT, SgGraphNode * > &all_nodes, std::set< NodeT > &explored)
 
void clearNodesAndEdges ()
 Delete all nodes and edges in the graph and release memories.
 
virtual void processNodes (std::ostream &o, SgGraphNode *n, std::set< SgGraphNode * > &explored)
 
virtual void printNodePlusEdges (std::ostream &o, SgGraphNode *node)
 
virtual void printNode (std::ostream &o, SgGraphNode *node)
 
virtual void printEdge (std::ostream &o, SgDirectedGraphEdge *edge, bool isInEdge)
 

Protected Attributes

SgIncidenceDirectedGraph * graph_
 The graph data structure holding the CFG.
 
std::map< CFGNode, SgGraphNode * > all_nodes_
 A map from CFGNode in virtualCFG to node from staticCFG.
 
SgNode * start_
 The start node to begin CFG build.
 
SgGraphNode * entry_
 The entry node.
 
SgGraphNode * exit_
 The exit node.
 
bool is_filtered_
 A flag shows whether this CFG is filtered or not.
 

Constructor & Destructor Documentation

◆ CFG() [1/2]

StaticCFG::CFG::CFG ( )
inline

Definition at line 46 of file staticCFG.h.

◆ CFG() [2/2]

StaticCFG::CFG::CFG ( SgNode *  node,
bool  is_filtered = false 
)

The constructor building the CFG.

The valid nodes are SgProject, SgStatement, SgExpression and SgInitializedName.

◆ ~CFG()

virtual StaticCFG::CFG::~CFG ( )
inlinevirtual

Definition at line 69 of file staticCFG.h.

Member Function Documentation

◆ toGraphNode()

SgGraphNode * StaticCFG::CFG::toGraphNode ( CFGNode &  n)
inline

Turn a CFG node into a GraphNode which is defined in VirtualCFG namespace.

Returns NULL if CFGNode is not present

Definition at line 53 of file staticCFG.h.

◆ getGraph()

SgIncidenceDirectedGraph * StaticCFG::CFG::getGraph ( ) const
inline

Get the pointer pointing to the graph used by static CFG.

Definition at line 66 of file staticCFG.h.

◆ setStart()

void StaticCFG::CFG::setStart ( SgNode *  node)
inline

Set the start node for graph building.

The valid nodes are SgProject, SgStatement, SgExpression and SgInitializedName.

Definition at line 74 of file staticCFG.h.

◆ getEntry()

SgGraphNode * StaticCFG::CFG::getEntry ( ) const
inline

Get the entry node of the CFG.

Definition at line 77 of file staticCFG.h.

◆ getExit()

SgGraphNode * StaticCFG::CFG::getExit ( ) const
inline

Get the exit node of the CFG.

Definition at line 81 of file staticCFG.h.

◆ isFilteredCFG()

bool StaticCFG::CFG::isFilteredCFG ( ) const
inline

Definition at line 84 of file staticCFG.h.

◆ setFiltered()

void StaticCFG::CFG::setFiltered ( bool  flag)
inline

Definition at line 85 of file staticCFG.h.

◆ buildCFG()

virtual void StaticCFG::CFG::buildCFG ( )
inlinevirtual

Build CFG according to the 'is_filtered_' flag.

Reimplemented in StaticCFG::InterproceduralCFG.

Definition at line 89 of file staticCFG.h.

◆ buildFullCFG()

virtual void StaticCFG::CFG::buildFullCFG ( )
virtual

Build CFG for debugging.

Reimplemented in StaticCFG::InterproceduralCFG.

◆ buildFilteredCFG()

virtual void StaticCFG::CFG::buildFilteredCFG ( )
virtual

Build filtered CFG which only contains interesting nodes.

Reimplemented in StaticCFG::CustomFilteredCFG< _Filter >, and StaticCFG::InterproceduralCFG.

◆ printEdge()

virtual void StaticCFG::CFG::printEdge ( std::ostream &  o,
SgDirectedGraphEdge *  edge,
bool  isInEdge 
)
protectedvirtual

Member Data Documentation

◆ graph_

SgIncidenceDirectedGraph* StaticCFG::CFG::graph_
protected

The graph data structure holding the CFG.

Definition at line 28 of file staticCFG.h.

◆ all_nodes_

std::map<CFGNode, SgGraphNode*> StaticCFG::CFG::all_nodes_
protected

A map from CFGNode in virtualCFG to node from staticCFG.

Definition at line 31 of file staticCFG.h.

◆ start_

SgNode* StaticCFG::CFG::start_
protected

The start node to begin CFG build.

Definition at line 34 of file staticCFG.h.

◆ entry_

SgGraphNode* StaticCFG::CFG::entry_
protected

The entry node.

Definition at line 37 of file staticCFG.h.

◆ exit_

SgGraphNode* StaticCFG::CFG::exit_
protected

The exit node.

Definition at line 40 of file staticCFG.h.

◆ is_filtered_

bool StaticCFG::CFG::is_filtered_
protected

A flag shows whether this CFG is filtered or not.

Definition at line 43 of file staticCFG.h.


The documentation for this class was generated from the following file: