forked from OSchip/llvm-project
Add a GraphTraits partial specialization to make the inverse of an inverse be the same as the underlying graph.
llvm-svn: 42592
This commit is contained in:
parent
3574759d85
commit
87337924d5
|
@ -78,6 +78,26 @@ struct Inverse {
|
||||||
inline Inverse(GraphType &G) : Graph(G) {}
|
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
|
} // End llvm namespace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue