Provided accessors to internal allocator for ImutAVLTree and ImmutableSet.
authorTed Kremenek <kremenek@apple.com>
Thu, 11 Oct 2007 21:51:04 +0000 (21:51 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 11 Oct 2007 21:51:04 +0000 (21:51 +0000)
Added postfix ++,-- support for ImmutableSet::iterator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42877 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/ImmutableSet.h

index 30815751de2f43ce93aff70987608d430b9933c2..84eb50803eb4c42ea12c3d72bd0d80ce1d22dfe8 100644 (file)
@@ -294,6 +294,8 @@ public:
   
   TreeTy* GetEmptyTree() const { return NULL; }
   
+  BumpPtrAllocator& getAllocator() { return Allocator; }
+  
   //===--------------------------------------------------===//    
   // A bunch of quick helper functions used for reasoning
   // about the properties of trees and their children.
@@ -336,6 +338,7 @@ private:
     
     // FIXME: more intelligent calculation of alignment.
     TreeTy* T = (TreeTy*) Allocator.Allocate(sizeof(*T),16);
+    
     new (T) TreeTy(L,R,V,IncrementHeight(L,R));
     
     Cache.InsertNode(T,InsertPos);
@@ -816,6 +819,8 @@ public:
       return ImmutableSet(F.Remove(Old.Root,V));
     }
     
+    BumpPtrAllocator& getAllocator() { return F.getAllocator(); }
+
   private:
     Factory(const Factory& RHS) {};
     void operator=(const Factory& RHS) {};    
@@ -858,7 +863,9 @@ public:
   public:
     inline value_type_ref operator*() const { return itr->getValue(); }
     inline iterator& operator++() { ++itr; return *this; }
+    inline iterator  operator++(int) { iterator tmp(*this); ++itr; return tmp; }
     inline iterator& operator--() { --itr; return *this; }
+    inline iterator  operator--(int) { iterator tmp(*this); --itr; return tmp; }
     inline bool operator==(const iterator& RHS) const { return RHS.itr == itr; }
     inline bool operator!=(const iterator& RHS) const { return RHS.itr != itr; }        
   };