From 284ffa3863bc58f18a3eb879e49e05fdbe792413 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Wed, 22 May 2013 17:10:11 +0000 Subject: [PATCH] [Support] Add StringMap::swap() and a default ctor for iterators This makes StringMap<> more compatible with std::map. Differential Revision: http://llvm-reviews.chandlerc.com/D842 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182487 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/StringMap.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/llvm/ADT/StringMap.h b/include/llvm/ADT/StringMap.h index d01437b61c2..2e07268596a 100644 --- a/include/llvm/ADT/StringMap.h +++ b/include/llvm/ADT/StringMap.h @@ -102,6 +102,13 @@ public: bool empty() const { return NumItems == 0; } unsigned size() const { return NumItems; } + + void swap(StringMapImpl &Other) { + std::swap(TheTable, Other.TheTable); + std::swap(NumBuckets, Other.NumBuckets); + std::swap(NumItems, Other.NumItems); + std::swap(NumTombstones, Other.NumTombstones); + } }; /// StringMapEntry - This is used to represent one value that is inserted into @@ -409,6 +416,8 @@ protected: public: typedef StringMapEntry value_type; + StringMapConstIterator() : Ptr(0) { } + explicit StringMapConstIterator(StringMapEntryBase **Bucket, bool NoAdvance = false) : Ptr(Bucket) { @@ -448,6 +457,7 @@ private: template class StringMapIterator : public StringMapConstIterator { public: + StringMapIterator() : StringMapConstIterator() {} explicit StringMapIterator(StringMapEntryBase **Bucket, bool NoAdvance = false) : StringMapConstIterator(Bucket, NoAdvance) {