Add support for walking type graphs
[oota-llvm.git] / include / llvm / CFGdecls.h
index 8d4152fea0a34767ddbbad18cea64eb0c282ddd9..b59a1d25367e5ee9054732c1083795adbbea2ed4 100644 (file)
@@ -73,6 +73,7 @@ struct      BasicBlockGraph;
 struct ConstBasicBlockGraph;
 struct      InverseBasicBlockGraph;
 struct ConstInverseBasicBlockGraph;
+struct TypeGraph;
 
 // Forward declare iterator class template...
 template<class GraphInfo> class DFIterator;
@@ -104,6 +105,15 @@ inline idf_iterator       idf_end  (      BasicBlock *BB);
 inline idf_const_iterator idf_end  (const BasicBlock *BB);
 
 
+// Depth First Iterator Definitions for Types.  This lets you iterator over 
+// (possibly cyclic) type graphs in dfo
+//
+typedef DFIterator<TypeGraph> tdf_iterator;
+
+inline tdf_iterator tdf_begin(const Type *T, bool Reverse = false);
+inline tdf_iterator tdf_end  (const Type *T);
+
+
 //===--------------------------------------------------------------------===//
 // Post Order CFG iterator code
 //===--------------------------------------------------------------------===//