Class CFG#
Defined in File staticCFG.h
Inheritance Relationships#
Derived Types#
public StaticCFG::CustomFilteredCFG< AliasCfgFilter >(Template Class CustomFilteredCFG)public StaticCFG::CustomFilteredCFG< _Filter >(Template Class CustomFilteredCFG)public StaticCFG::InterproceduralCFG(Class InterproceduralCFG)
Class Documentation#
-
class CFG#
Subclassed by StaticCFG::CustomFilteredCFG< AliasCfgFilter >, StaticCFG::CustomFilteredCFG< _Filter >, StaticCFG::InterproceduralCFG
Public Functions
-
inline CFG()#
-
CFGNode toCFGNode(SgGraphNode *node)#
Turn a graph node into a CFGNode which is defined in VirtualCFG namespace.
-
inline SgGraphNode *toGraphNode(CFGNode &n)#
Turn a CFG node into a GraphNode which is defined in VirtualCFG namespace. Returns NULL if CFGNode is not present.
-
CFG(SgNode *node, bool is_filtered = false)#
The constructor building the CFG.
The valid nodes are SgProject, SgStatement, SgExpression and SgInitializedName.
-
inline SgIncidenceDirectedGraph *getGraph() const#
Get the pointer pointing to the graph used by static CFG.
-
inline virtual ~CFG()#
-
inline void setStart(SgNode *node)#
Set the start node for graph building.
The valid nodes are SgProject, SgStatement, SgExpression and SgInitializedName.
-
inline bool isFilteredCFG() const#
-
inline void setFiltered(bool flag)#
-
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.
Protected 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)#
-
inline CFG()#