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
_______________________________________________
llvm-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits