diff options
| author | Justin Lebar <jlebar@google.com> | 2016-10-17 22:24:32 +0000 |
|---|---|---|
| committer | Justin Lebar <jlebar@google.com> | 2016-10-17 22:24:32 +0000 |
| commit | 61b9b6a9d540e780f7fb1c72f35184ed5529d54a (patch) | |
| tree | 321826002ed900b329faee589aff35ca0f843833 | |
| parent | 4bccb581bfe326e6b3aea4a2340c15cdc13e2008 (diff) | |
| download | bcm5719-llvm-61b9b6a9d540e780f7fb1c72f35184ed5529d54a.tar.gz bcm5719-llvm-61b9b6a9d540e780f7fb1c72f35184ed5529d54a.zip | |
[ADT] Add an initializer_list constructor to {Small,}DenseSet.
Reviewers: timshen
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D25629
llvm-svn: 284433
| -rw-r--r-- | llvm/include/llvm/ADT/DenseSet.h | 6 | ||||
| -rw-r--r-- | llvm/unittests/ADT/DenseSetTest.cpp | 15 |
2 files changed, 21 insertions, 0 deletions
diff --git a/llvm/include/llvm/ADT/DenseSet.h b/llvm/include/llvm/ADT/DenseSet.h index 21f7dfa3321..b25d3b7cba6 100644 --- a/llvm/include/llvm/ADT/DenseSet.h +++ b/llvm/include/llvm/ADT/DenseSet.h @@ -15,6 +15,7 @@ #define LLVM_ADT_DENSESET_H #include "llvm/ADT/DenseMap.h" +#include <initializer_list> namespace llvm { @@ -55,6 +56,11 @@ public: explicit DenseSetImpl(unsigned InitialReserve = 0) : TheMap(InitialReserve) {} + DenseSetImpl(std::initializer_list<ValueT> Elems) + : DenseSetImpl(Elems.size()) { + insert(Elems.begin(), Elems.end()); + } + bool empty() const { return TheMap.empty(); } size_type size() const { return TheMap.size(); } size_t getMemorySize() const { return TheMap.getMemorySize(); } diff --git a/llvm/unittests/ADT/DenseSetTest.cpp b/llvm/unittests/ADT/DenseSetTest.cpp index 8397c60a97c..4d5a82902f0 100644 --- a/llvm/unittests/ADT/DenseSetTest.cpp +++ b/llvm/unittests/ADT/DenseSetTest.cpp @@ -64,6 +64,21 @@ typedef ::testing::Types<DenseSet<unsigned, TestDenseSetInfo>, DenseSetTestTypes; TYPED_TEST_CASE(DenseSetTest, DenseSetTestTypes); +TYPED_TEST(DenseSetTest, InitializerList) { + TypeParam set({1, 2, 1, 4}); + EXPECT_EQ(3u, set.size()); + EXPECT_EQ(1u, set.count(1)); + EXPECT_EQ(1u, set.count(2)); + EXPECT_EQ(1u, set.count(4)); + EXPECT_EQ(0u, set.count(3)); +} + +TYPED_TEST(DenseSetTest, EmptyInitializerList) { + TypeParam set({}); + EXPECT_EQ(0u, set.size()); + EXPECT_EQ(0u, set.count(0)); +} + TYPED_TEST(DenseSetTest, FindAsTest) { auto &set = this->Set; // Size tests |

