[llvm-commits] CVS: llvm/include/llvm/Analysis/DSGraph.h DSGraphTraits.h

Chris Lattner lattner at cs.uiuc.edu
Sat Feb 7 18:00:29 PST 2004


Changes in directory llvm/include/llvm/Analysis:

DSGraph.h updated: 1.70 -> 1.71
DSGraphTraits.h updated: 1.18 -> 1.19

---
Log message:

Abstract out the Nodes collection.  Instead of providing a getNodes() method,
provide node_begin/end iterators, which are only guaranteed to be 
bidirectional, not random access.


---
Diffs of the changes:  (+11 -11)

Index: llvm/include/llvm/Analysis/DSGraph.h
diff -u llvm/include/llvm/Analysis/DSGraph.h:1.70 llvm/include/llvm/Analysis/DSGraph.h:1.71
--- llvm/include/llvm/Analysis/DSGraph.h:1.70	Tue Jan 27 21:01:22 2004
+++ llvm/include/llvm/Analysis/DSGraph.h	Sat Feb  7 17:57:08 2004
@@ -92,6 +92,7 @@
   typedef DSScalarMap ScalarMapTy;
   typedef hash_map<Function*, DSNodeHandle> ReturnNodesTy;
   typedef hash_set<GlobalValue*> GlobalSetTy;
+  typedef std::vector<DSNode*> NodeListTy;
 
   /// NodeMapTy - This data type is used when cloning one graph into another to
   /// keep track of the correspondence between the nodes in the old and new
@@ -101,7 +102,7 @@
   DSGraph *GlobalsGraph;   // Pointer to the common graph of global objects
   bool PrintAuxCalls;      // Should this graph print the Aux calls vector?
 
-  std::vector<DSNode*> Nodes;
+  NodeListTy Nodes;
   ScalarMapTy ScalarMap;
 
   // ReturnNodes - A return value for every function merged into this graph.
@@ -170,8 +171,9 @@
 
   /// getNodes - Get a vector of all the nodes in the graph
   /// 
-  const std::vector<DSNode*> &getNodes() const { return Nodes; }
-        std::vector<DSNode*> &getNodes()       { return Nodes; }
+  typedef NodeListTy::const_iterator node_iterator;
+  node_iterator node_begin() const { return Nodes.begin(); }
+  node_iterator node_end()   const { return Nodes.end(); }
 
   /// getFunctionNames - Return a space separated list of the name of the
   /// functions in this graph (if any)


Index: llvm/include/llvm/Analysis/DSGraphTraits.h
diff -u llvm/include/llvm/Analysis/DSGraphTraits.h:1.18 llvm/include/llvm/Analysis/DSGraphTraits.h:1.19
--- llvm/include/llvm/Analysis/DSGraphTraits.h:1.18	Tue Nov 11 16:41:30 2003
+++ llvm/include/llvm/Analysis/DSGraphTraits.h	Sat Feb  7 17:57:09 2004
@@ -115,13 +115,12 @@
   typedef std::pointer_to_unary_function<DSNode *, DSNode&> DerefFun;
 
   // nodes_iterator/begin/end - Allow iteration over all nodes in the graph
-  typedef mapped_iterator<std::vector<DSNode*>::iterator,
-                          DerefFun> nodes_iterator;
+  typedef mapped_iterator<DSGraph::node_iterator, DerefFun> nodes_iterator;
   static nodes_iterator nodes_begin(DSGraph *G) {
-    return map_iterator(G->getNodes().begin(), DerefFun(dereference));
+    return map_iterator(G->node_begin(), DerefFun(dereference));
   }
   static nodes_iterator nodes_end(DSGraph *G) {
-    return map_iterator(G->getNodes().end(), DerefFun(dereference));
+    return map_iterator(G->node_end(), DerefFun(dereference));
   }
 
   static ChildIteratorType child_begin(NodeType *N) { return N->begin(); }
@@ -135,13 +134,12 @@
   typedef std::pointer_to_unary_function<const DSNode *,const DSNode&> DerefFun;
 
   // nodes_iterator/begin/end - Allow iteration over all nodes in the graph
-  typedef mapped_iterator<std::vector<DSNode*>::const_iterator,
-                          DerefFun> nodes_iterator;
+  typedef mapped_iterator<DSGraph::node_iterator, DerefFun> nodes_iterator;
   static nodes_iterator nodes_begin(const DSGraph *G) {
-    return map_iterator(G->getNodes().begin(), DerefFun(dereferenceC));
+    return map_iterator(G->node_begin(), DerefFun(dereferenceC));
   }
   static nodes_iterator nodes_end(const DSGraph *G) {
-    return map_iterator(G->getNodes().end(), DerefFun(dereferenceC));
+    return map_iterator(G->node_end(), DerefFun(dereferenceC));
   }
 
   static ChildIteratorType child_begin(const NodeType *N) { return N->begin(); }





More information about the llvm-commits mailing list