Allow simple nodes to have outgoing edges
[oota-llvm.git] / include / Support / ilist
index 09c951c2572d57e9818cd5d4f47595815a898347..26a2a2569ba9f8c641bdb54ae6d950b61f2e6f1c 100644 (file)
@@ -32,8 +32,8 @@
 #define INCLUDED_SUPPORT_ILIST
 
 #include <assert.h>
-#include <iterator>
 #include <algorithm>
+#include <Support/iterator>
 
 template<typename NodeTy, typename Traits> class iplist;
 template<typename NodeTy> class ilist_iterator;
@@ -71,14 +71,9 @@ struct ilist_traits<const Ty> : public ilist_traits<Ty> {};
 //
 template<typename NodeTy>
 class ilist_iterator
-#if __GNUC__ == 3
-  : public std::iterator<std::bidirectional_iterator_tag, NodeTy> {
-  typedef std::iterator<std::bidirectional_iterator_tag, NodeTy> super;
-#else
-  : public std::bidirectional_iterator<NodeTy, ptrdiff_t> {
-  typedef std::bidirectional_iterator<NodeTy, ptrdiff_t> super;
-#endif
+  : public bidirectional_iterator<NodeTy, ptrdiff_t> {
   typedef ilist_traits<NodeTy> Traits;
+  typedef bidirectional_iterator<NodeTy, ptrdiff_t> super;
 
   typedef typename super::pointer pointer;
   typedef typename super::reference reference;
@@ -87,6 +82,7 @@ public:
   typedef size_t size_type;
 
   ilist_iterator(pointer NP) : NodePtr(NP) {}
+  ilist_iterator(reference NR) : NodePtr(&NR) {}
   ilist_iterator() : NodePtr(0) {}
 
   // This is templated so that we can allow constructing a const iterator from