ROSE  0.9.9.139
customFilteredCFG.h
1 /*
2  * File: CustomFilteredCFG.h
3  * Author: rahman2
4  *
5  * Created on July 20, 2011, 3:41 PM
6  */
7 
8 #ifndef CUSTOMFILTEREDCFG_H
9 #define CUSTOMFILTEREDCFG_H
10 
11 #include "staticCFG.h"
12 
13 namespace StaticCFG
14 {
16 template <typename _Filter>
17 class ROSE_DLL_API CustomFilteredCFG : public CFG {
18 
19 public:
20  CustomFilteredCFG(SgNode *node) : CFG(node, true) {
21  }
23  }
24  virtual void buildFilteredCFG();
25 
26 
27 protected:
29  virtual void printEdge(std::ostream & o, SgDirectedGraphEdge* edge, bool isInEdge) {
30 
31  AstAttribute* attr = edge->getAttribute("info");
32 
34  VirtualCFG::FilteredCFGEdge<_Filter> e = edge_attr->getEdge();
35  o << e.source().id() << " -> " << e.target().id() << " [label=\"" << escapeString(e.toString()) <<
36  "\", style=\"" << (isInEdge ? "dotted" : "solid") << "\"];\n";
37  }
38  else
39  ROSE_ASSERT(false);
40 
41  }
42 private:
43  template <class NodeT, class EdgeT>
44  void buildTemplatedCFG(NodeT n, std::map<NodeT, SgGraphNode*>& all_nodes, std::set<NodeT>& explored);
45 
46  };
47 
48 }
49 #endif /* CUSTOMFILTEREDCFG_H */
50 
This class represents the base class for all IR nodes within Sage III.
Definition: Cxx_Grammar.h:8322
A CFG implementation with Custom filters.
virtual AstAttribute * getAttribute(std::string s) const ROSE_OVERRIDE
Returns attribute of name 's'.
virtual void printEdge(std::ostream &o, SgDirectedGraphEdge *edge, bool isInEdge)
Virtual function Overloaded to print the Custom Filtered CFG Edges.