ROSE  0.9.6a
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
VirtualCFG::CFGNode Class Reference

A node in the control flow graph. More...

#include <virtualCFG.h>

Collaboration diagram for VirtualCFG::CFGNode:

Public Member Functions

 CFGNode ()
 
 CFGNode (SgNode *node, unsigned int index=0)
 
std::string toString () const
 Pretty string for Dot node labels, etc. More...
 
std::string toStringForDebugging () const
 String for debugging graphs. More...
 
std::string id () const
 ID to use for Dot, etc. More...
 
SgNodegetNode () const
 The underlying AST node. More...
 
unsigned int getIndex () const
 An identifying index within the AST node given by getNode() More...
 
std::vector< CFGEdgeoutEdges () const
 Outgoing control flow edges from this node. More...
 
std::vector< CFGEdgeinEdges () const
 Incoming control flow edges to this node. More...
 
bool isInteresting () const
 Test whether this node satisfies a (fairly arbitrary) standard for "interestingness". More...
 
bool operator== (const CFGNode &o) const
 Equality operator. More...
 
bool operator!= (const CFGNode &o) const
 Disequality operator. More...
 
bool operator< (const CFGNode &o) const
 Less-than operator. More...
 

Private Attributes

SgNodenode
 The AST node from this CFG node. More...
 
unsigned int index
 An index to differentiate control flow points within a single AST node (for example, before and after the test of an if statement) More...
 

Detailed Description

A node in the control flow graph.

Each CFG node corresponds to an AST node, but there can be several CFG nodes for a given AST node.

Definition at line 67 of file virtualCFG.h.

Constructor & Destructor Documentation

VirtualCFG::CFGNode::CFGNode ( )
inline

Definition at line 76 of file virtualCFG.h.

VirtualCFG::CFGNode::CFGNode ( SgNode node,
unsigned int  index = 0 
)

Member Function Documentation

std::string VirtualCFG::CFGNode::toString ( ) const
std::string VirtualCFG::CFGNode::id ( ) const
std::vector<CFGEdge> VirtualCFG::CFGNode::outEdges ( ) const

Outgoing control flow edges from this node.

Referenced by VirtualCFG::FilteredCFGNode< FilterFunction >::outEdges().

std::vector<CFGEdge> VirtualCFG::CFGNode::inEdges ( ) const

Incoming control flow edges to this node.

Referenced by evalFunction(), and VirtualCFG::FilteredCFGNode< FilterFunction >::inEdges().

bool VirtualCFG::CFGNode::isInteresting ( ) const

Test whether this node satisfies a (fairly arbitrary) standard for "interestingness".

There are many administrative nodes in the raw CFG (nodes that do not correspond to operations in the program), and this function filters them out.

Referenced by IsDFAFilter::operator()(), StaticCFG::InterestingCFGNodeFilter::operator()(), IsImportantForSliceCFGFilter::operator()(), Backstroke::InterestingCFGNodeFilter::operator()(), and DominatorTreesAndDominanceFrontiers::DefaultBasicDominatorTreeIsStatementFilter::operator()().

bool VirtualCFG::CFGNode::operator== ( const CFGNode o) const
inline

Equality operator.

Definition at line 99 of file virtualCFG.h.

References index, and node.

bool VirtualCFG::CFGNode::operator!= ( const CFGNode o) const
inline

Disequality operator.

Definition at line 101 of file virtualCFG.h.

bool VirtualCFG::CFGNode::operator< ( const CFGNode o) const
inline

Less-than operator.

Definition at line 103 of file virtualCFG.h.

References index, and node.

Member Data Documentation

SgNode* VirtualCFG::CFGNode::node
private

The AST node from this CFG node.

Definition at line 69 of file virtualCFG.h.

Referenced by operator<(), and operator==().

unsigned int VirtualCFG::CFGNode::index
private

An index to differentiate control flow points within a single AST node (for example, before and after the test of an if statement)

Definition at line 73 of file virtualCFG.h.

Referenced by operator<(), and operator==().


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