diff options
| author | David Blaikie <dblaikie@gmail.com> | 2014-05-08 21:52:26 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2014-05-08 21:52:26 +0000 |
| commit | 70a14fc4d6d4603a2088751a8dfc491391e340e9 (patch) | |
| tree | db8ddf835e8234881326dacee003934c532dd47e | |
| parent | 9cb331f9fbfe7ab516b046040b2b6b405ab579bd (diff) | |
| download | bcm5719-llvm-70a14fc4d6d4603a2088751a8dfc491391e340e9.tar.gz bcm5719-llvm-70a14fc4d6d4603a2088751a8dfc491391e340e9.zip | |
StringMap: Replace faux-copyability with faux-movability, which is sufficient.
This behavior was added to support StringMaps of StringMaps, default +
move construction are sufficient for this.
Real move construction support coming soon (& probably copy construction
too).
llvm-svn: 208360
| -rw-r--r-- | llvm/include/llvm/ADT/StringMap.h | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/llvm/include/llvm/ADT/StringMap.h b/llvm/include/llvm/ADT/StringMap.h index 3a0006f5a1c..ed3685d7ddf 100644 --- a/llvm/include/llvm/ADT/StringMap.h +++ b/llvm/include/llvm/ADT/StringMap.h @@ -17,6 +17,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/Support/Allocator.h" #include <cstring> +#include <utility> namespace llvm { template<typename ValueT> @@ -48,13 +49,11 @@ protected: unsigned NumTombstones; unsigned ItemSize; protected: - explicit StringMapImpl(unsigned itemSize) : ItemSize(itemSize) { - // Initialize the map with zero buckets to allocation. - TheTable = nullptr; - NumBuckets = 0; - NumItems = 0; - NumTombstones = 0; - } + explicit StringMapImpl(unsigned itemSize) + : TheTable(nullptr), + // Initialize the map with zero buckets to allocation. + NumBuckets(0), NumItems(0), NumTombstones(0), ItemSize(itemSize) {} + StringMapImpl(unsigned InitSize, unsigned ItemSize); void RehashTable(); @@ -233,18 +232,17 @@ public: : StringMapImpl(InitialSize, static_cast<unsigned>(sizeof(MapEntryTy))), Allocator(A) {} - StringMap(const StringMap &RHS) - : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) { - assert(RHS.empty() && - "Copy ctor from non-empty stringmap not implemented yet!"); - (void)RHS; + StringMap(StringMap &&RHS) + : StringMapImpl(static_cast<unsigned>(sizeof(MapEntryTy))) { + assert(RHS.empty()); } - void operator=(const StringMap &RHS) { - assert(RHS.empty() && - "assignment from non-empty stringmap not implemented yet!"); - (void)RHS; + StringMap &operator=(StringMap &&RHS) { + assert(RHS.empty()); clear(); + return *this; } + StringMap(const StringMap &RHS) LLVM_DELETED_FUNCTION; + void operator=(const StringMap &RHS) LLVM_DELETED_FUNCTION; AllocatorTy &getAllocator() { return Allocator; } const AllocatorTy &getAllocator() const { return Allocator; } |

