From 0b22da3d7361f94c3811f2e7d603bb3513dc3d1c Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Thu, 11 Oct 2007 21:51:04 +0000 Subject: [PATCH] Provided accessors to internal allocator for ImutAVLTree and ImmutableSet. 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 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/llvm/ADT/ImmutableSet.h b/include/llvm/ADT/ImmutableSet.h index 30815751de2..84eb50803eb 100644 --- a/include/llvm/ADT/ImmutableSet.h +++ b/include/llvm/ADT/ImmutableSet.h @@ -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; } };