summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2015-03-25 00:50:21 +0000
committerChandler Carruth <chandlerc@gmail.com>2015-03-25 00:50:21 +0000
commitd811ffa5e6c0f30367b98a137298498bfc671bf2 (patch)
treee258afd7f3eb44a7e1eee0a3114a6481ab7117d2
parent44cc6548699dad4863319f9858b3c35c99becc07 (diff)
downloadbcm5719-llvm-d811ffa5e6c0f30367b98a137298498bfc671bf2.tar.gz
bcm5719-llvm-d811ffa5e6c0f30367b98a137298498bfc671bf2.zip
[ADT] Teach MapVector to support a swap member. Will be used in
a subsequent commit in Clang. llvm-svn: 233159
-rw-r--r--llvm/include/llvm/ADT/MapVector.h5
-rw-r--r--llvm/unittests/ADT/MapVectorTest.cpp25
2 files changed, 30 insertions, 0 deletions
diff --git a/llvm/include/llvm/ADT/MapVector.h b/llvm/include/llvm/ADT/MapVector.h
index 1331b15b2d2..f19a50b7ba8 100644
--- a/llvm/include/llvm/ADT/MapVector.h
+++ b/llvm/include/llvm/ADT/MapVector.h
@@ -67,6 +67,11 @@ public:
Vector.clear();
}
+ void swap(MapVector &RHS) {
+ std::swap(Map, RHS.Map);
+ std::swap(Vector, RHS.Vector);
+ }
+
ValueT &operator[](const KeyT &Key) {
std::pair<KeyT, unsigned> Pair = std::make_pair(Key, 0);
std::pair<typename MapType::iterator, bool> Result = Map.insert(Pair);
diff --git a/llvm/unittests/ADT/MapVectorTest.cpp b/llvm/unittests/ADT/MapVectorTest.cpp
index 2caa8c7b5bb..ff8464293c7 100644
--- a/llvm/unittests/ADT/MapVectorTest.cpp
+++ b/llvm/unittests/ADT/MapVectorTest.cpp
@@ -14,6 +14,31 @@
using namespace llvm;
+TEST(MapVectorTest, swap) {
+ MapVector<int, int> MV1, MV2;
+ std::pair<MapVector<int, int>::iterator, bool> R;
+
+ R = MV1.insert(std::make_pair(1, 2));
+ ASSERT_EQ(R.first, MV1.begin());
+ EXPECT_EQ(R.first->first, 1);
+ EXPECT_EQ(R.first->second, 2);
+ EXPECT_TRUE(R.second);
+
+ EXPECT_FALSE(MV1.empty());
+ EXPECT_TRUE(MV2.empty());
+ MV2.swap(MV1);
+ EXPECT_TRUE(MV1.empty());
+ EXPECT_FALSE(MV2.empty());
+
+ auto I = MV1.find(1);
+ ASSERT_EQ(MV1.end(), I);
+
+ I = MV2.find(1);
+ ASSERT_EQ(I, MV2.begin());
+ EXPECT_EQ(I->first, 1);
+ EXPECT_EQ(I->second, 2);
+}
+
TEST(MapVectorTest, insert_pop) {
MapVector<int, int> MV;
std::pair<MapVector<int, int>::iterator, bool> R;
OpenPOWER on IntegriCloud