1 #ifndef DEF_USE_CHAIN_H
2 #define DEF_USE_CHAIN_H
5 #include "StmtInfoCollect.h"
13 const AstNodePtr& _stmt,
bool def)
14 : MultiGraphElem(c), isdef(def), ref(_ref), stmt(_stmt) {}
16 AstNodePtr
get_ref()
const {
return ref; }
25 :
public VirtualGraphCreateTemplate<Node, MultiGraphElem>
28 typedef MultiGraphElem
Edge;
29 typedef typename VirtualGraphCreateTemplate<Node, Edge>::NodeIterator
NodeIterator;
30 typedef typename VirtualGraphCreateTemplate<Node, Edge>::EdgeIterator
EdgeIterator;
33 : VirtualGraphCreateTemplate<Node,
Edge>(c) {}
35 virtual Node*
CreateNode( AstInterface& fa,
const AstNodePtr& ref,
36 const AstNodePtr& stmt,
bool def)
38 Node* n =
new Node(
this, ref, stmt, def);
39 VirtualGraphCreateTemplate<Node, Edge>::AddNode(n);
46 this->AddEdge( n1, n2, e);
50 void build( AstInterface& fa,
52 AliasAnalysisInterface& alias,
53 FunctionSideEffectInterface* f = 0);
54 void build(AstInterface& fa, AstNodePtr root,
55 AliasAnalysisInterface* alias = 0,
56 FunctionSideEffectInterface* f = 0);
62 virtual void init(CollectObject<Node*>& newnodes ) = 0;
64 CollectObject<Node*>& newnodes) = 0;
66 CollectObject<Node*>& newnodes) = 0;
83 #include <DefUseChain.C>