X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=include%2Fllvm%2FADT%2FGraphTraits.h;h=823caef7647e70572e6e7c9baab6eec75523727f;hp=853615e251451241f4d1b06a1b818a3c34cf2a34;hb=63b14baf799b4c3ba8182596073ad5b3f37cd1cc;hpb=9c8a9af5afb5459fb7949d4468c5a2abe02baf2c diff --git a/include/llvm/ADT/GraphTraits.h b/include/llvm/ADT/GraphTraits.h index 853615e2514..823caef7647 100644 --- a/include/llvm/ADT/GraphTraits.h +++ b/include/llvm/ADT/GraphTraits.h @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -30,7 +30,7 @@ struct GraphTraits { // typedef NodeType - Type of Node in the graph // typedef ChildIteratorType - Type used to iterate over children in graph - // static NodeType *getEntryNode(GraphType *) + // static NodeType *getEntryNode(const GraphType &) // Return the entry node of the graph // static ChildIteratorType child_begin(NodeType *) @@ -43,9 +43,12 @@ struct GraphTraits { // typedef ...iterator nodes_iterator; // static nodes_iterator nodes_begin(GraphType *G) // static nodes_iterator nodes_end (GraphType *G) - // // nodes_iterator/begin/end - Allow iteration over all nodes in the graph + // static unsigned size (GraphType *G) + // Return total number of nodes in the graph + // + // If anyone tries to use this class without having an appropriate // specialization, make an error. If you get this error, it's because you @@ -73,26 +76,26 @@ struct GraphTraits { // template struct Inverse { - GraphType &Graph; + const GraphType &Graph; - inline Inverse(GraphType &G) : Graph(G) {} + inline Inverse(const GraphType &G) : Graph(G) {} }; -// Provide a partial specialization of GraphTraits so that the inverse of an inverse -// falls back to the original graph. +// Provide a partial specialization of GraphTraits so that the inverse of an +// inverse falls back to the original graph. template struct GraphTraits > > { typedef typename GraphTraits::NodeType NodeType; typedef typename GraphTraits::ChildIteratorType ChildIteratorType; - + static NodeType *getEntryNode(Inverse > *G) { - return GraphTraits::getEntryNode(G.Graph.Graph); + return GraphTraits::getEntryNode(G->Graph.Graph); } - + static ChildIteratorType child_begin(NodeType* N) { return GraphTraits::child_begin(N); } - + static ChildIteratorType child_end(NodeType* N) { return GraphTraits::child_end(N); }