[llvm-commits] [llvm] r42592 - /llvm/trunk/include/llvm/ADT/GraphTraits.h
Owen Anderson
resistor at mac.com
Wed Oct 3 14:24:38 PDT 2007
Author: resistor
Date: Wed Oct 3 16:24:38 2007
New Revision: 42592
URL: http://llvm.org/viewvc/llvm-project?rev=42592&view=rev
Log:
Add a GraphTraits partial specialization to make the inverse of an inverse be the same as the underlying graph.
Modified:
llvm/trunk/include/llvm/ADT/GraphTraits.h
Modified: llvm/trunk/include/llvm/ADT/GraphTraits.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/GraphTraits.h?rev=42592&r1=42591&r2=42592&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ADT/GraphTraits.h (original)
+++ llvm/trunk/include/llvm/ADT/GraphTraits.h Wed Oct 3 16:24:38 2007
@@ -78,6 +78,26 @@
inline Inverse(GraphType &G) : Graph(G) {}
};
+// Provide a partial specialization of GraphTraits so that the inverse of an inverse
+// falls back to the original graph.
+template<class T>
+struct GraphTraits<Inverse<Inverse<T> > > {
+ typedef typename GraphTraits<T>::NodeType NodeType;
+ typedef typename GraphTraits<T>::ChildIteratorType ChildIteratorType;
+
+ static NodeType *getEntryNode(Inverse<Inverse<T> > *G) {
+ return GraphTraits<T>::getEntryNode(G.Graph.Graph);
+ }
+
+ static ChildIteratorType child_begin(NodeType* N) {
+ return GraphTraits<T>::child_begin(N);
+ }
+
+ static ChildIteratorType child_end(NodeType* N) {
+ return GraphTraits<T>::child_end(N);
+ }
+};
+
} // End llvm namespace
#endif
More information about the llvm-commits
mailing list