[llvm] r362835 - [ADT] Enable set_difference() to be used on StringSet
Michael Pozulp via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 7 13:23:03 PDT 2019
Author: pozulp
Date: Fri Jun 7 13:23:03 2019
New Revision: 362835
URL: http://llvm.org/viewvc/llvm-project?rev=362835&view=rev
Log:
[ADT] Enable set_difference() to be used on StringSet
Summary: Re-land r362766 after it was reverted in r362823.
Reviewers: jhenderson, dsanders, aaron.ballman, MatzeB, lhames, dblaikie
Reviewed By: dblaikie
Subscribers: smeenai, mgrang, mgorny, dexonsmith, kristina, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D62369
Added:
llvm/trunk/unittests/ADT/StringSetTest.cpp
Modified:
llvm/trunk/include/llvm/ADT/StringMap.h
llvm/trunk/include/llvm/ADT/StringSet.h
llvm/trunk/unittests/ADT/CMakeLists.txt
llvm/trunk/unittests/ADT/StringMapTest.cpp
Modified: llvm/trunk/include/llvm/ADT/StringMap.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringMap.h?rev=362835&r1=362834&r2=362835&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ADT/StringMap.h (original)
+++ llvm/trunk/include/llvm/ADT/StringMap.h Fri Jun 7 13:23:03 2019
@@ -359,6 +359,11 @@ public:
return find(Key) == end() ? 0 : 1;
}
+ template <typename InputTy>
+ size_type count(const StringMapEntry<InputTy> &MapEntry) const {
+ return count(MapEntry.getKey());
+ }
+
/// insert - Insert the specified key/value pair into the map. If the key
/// already exists in the map, return false and ignore the request, otherwise
/// insert it and return true.
Modified: llvm/trunk/include/llvm/ADT/StringSet.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringSet.h?rev=362835&r1=362834&r2=362835&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ADT/StringSet.h (original)
+++ llvm/trunk/include/llvm/ADT/StringSet.h Fri Jun 7 13:23:03 2019
@@ -45,6 +45,12 @@ namespace llvm {
for (auto It = Begin; It != End; ++It)
base::insert(std::make_pair(*It, '\0'));
}
+
+ template <typename ValueTy>
+ std::pair<typename base::iterator, bool>
+ insert(const StringMapEntry<ValueTy> &MapEntry) {
+ return insert(MapEntry.getKey());
+ }
};
} // end namespace llvm
Modified: llvm/trunk/unittests/ADT/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/CMakeLists.txt?rev=362835&r1=362834&r2=362835&view=diff
==============================================================================
--- llvm/trunk/unittests/ADT/CMakeLists.txt (original)
+++ llvm/trunk/unittests/ADT/CMakeLists.txt Fri Jun 7 13:23:03 2019
@@ -65,6 +65,7 @@ add_llvm_unittest(ADTTests
StringExtrasTest.cpp
StringMapTest.cpp
StringRefTest.cpp
+ StringSetTest.cpp
StringSwitchTest.cpp
TinyPtrVectorTest.cpp
TripleTest.cpp
Modified: llvm/trunk/unittests/ADT/StringMapTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/StringMapTest.cpp?rev=362835&r1=362834&r2=362835&view=diff
==============================================================================
--- llvm/trunk/unittests/ADT/StringMapTest.cpp (original)
+++ llvm/trunk/unittests/ADT/StringMapTest.cpp Fri Jun 7 13:23:03 2019
@@ -7,7 +7,6 @@
//===----------------------------------------------------------------------===//
#include "llvm/ADT/StringMap.h"
-#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/DataTypes.h"
#include "gtest/gtest.h"
@@ -281,20 +280,6 @@ TEST_F(StringMapTest, IterMapKeys) {
llvm::sort(Keys);
SmallVector<StringRef, 4> Expected = {"A", "B", "C", "D"};
- EXPECT_EQ(Expected, Keys);
-}
-
-TEST_F(StringMapTest, IterSetKeys) {
- StringSet<> Set;
- Set.insert("A");
- Set.insert("B");
- Set.insert("C");
- Set.insert("D");
-
- auto Keys = to_vector<4>(Set.keys());
- llvm::sort(Keys);
-
- SmallVector<StringRef, 4> Expected = {"A", "B", "C", "D"};
EXPECT_EQ(Expected, Keys);
}
Added: llvm/trunk/unittests/ADT/StringSetTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/StringSetTest.cpp?rev=362835&view=auto
==============================================================================
--- llvm/trunk/unittests/ADT/StringSetTest.cpp (added)
+++ llvm/trunk/unittests/ADT/StringSetTest.cpp Fri Jun 7 13:23:03 2019
@@ -0,0 +1,44 @@
+//===- llvm/unittest/ADT/StringSetTest.cpp - StringSet unit tests ----------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ADT/StringSet.h"
+#include "gtest/gtest.h"
+using namespace llvm;
+
+namespace {
+
+// Test fixture
+class StringSetTest : public testing::Test {};
+
+TEST_F(StringSetTest, IterSetKeys) {
+ StringSet<> Set;
+ Set.insert("A");
+ Set.insert("B");
+ Set.insert("C");
+ Set.insert("D");
+
+ auto Keys = to_vector<4>(Set.keys());
+ llvm::sort(Keys);
+
+ SmallVector<StringRef, 4> Expected = {"A", "B", "C", "D"};
+ EXPECT_EQ(Expected, Keys);
+}
+
+TEST_F(StringSetTest, InsertAndCountStringMapEntry) {
+ // Test insert(StringMapEntry) and count(StringMapEntry)
+ // which are required for set_difference(StringSet, StringSet).
+ StringSet<> Set;
+ StringMapEntry<StringRef> *Element = StringMapEntry<StringRef>::Create("A");
+ Set.insert(*Element);
+ size_t Count = Set.count(*Element);
+ size_t Expected = 1;
+ EXPECT_EQ(Expected, Count);
+ Element->Destroy();
+}
+
+} // end anonymous namespace
More information about the llvm-commits
mailing list