forked from OSchip/llvm-project
[ADT] Teach MapVector to support a swap member. Will be used in
a subsequent commit in Clang. llvm-svn: 233159
This commit is contained in:
parent
44cc654869
commit
d811ffa5e6
|
@ -67,6 +67,11 @@ public:
|
||||||
Vector.clear();
|
Vector.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void swap(MapVector &RHS) {
|
||||||
|
std::swap(Map, RHS.Map);
|
||||||
|
std::swap(Vector, RHS.Vector);
|
||||||
|
}
|
||||||
|
|
||||||
ValueT &operator[](const KeyT &Key) {
|
ValueT &operator[](const KeyT &Key) {
|
||||||
std::pair<KeyT, unsigned> Pair = std::make_pair(Key, 0);
|
std::pair<KeyT, unsigned> Pair = std::make_pair(Key, 0);
|
||||||
std::pair<typename MapType::iterator, bool> Result = Map.insert(Pair);
|
std::pair<typename MapType::iterator, bool> Result = Map.insert(Pair);
|
||||||
|
|
|
@ -14,6 +14,31 @@
|
||||||
|
|
||||||
using namespace llvm;
|
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) {
|
TEST(MapVectorTest, insert_pop) {
|
||||||
MapVector<int, int> MV;
|
MapVector<int, int> MV;
|
||||||
std::pair<MapVector<int, int>::iterator, bool> R;
|
std::pair<MapVector<int, int>::iterator, bool> R;
|
||||||
|
|
Loading…
Reference in New Issue