diff options
author | Chris Lattner <sabre@nondot.org> | 2007-01-23 01:16:19 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-01-23 01:16:19 +0000 |
commit | 182907645c9c2da22dba78255f0c8541f5d9f50d (patch) | |
tree | 3cd6c36cbb651c7cbd5a7ec9849c5fca95cde16a | |
parent | 08a4d5a343e886816b31a78d9b7e70240d9c67be (diff) |
make the SmallSet interface more std::set-like
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33458 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ADT/SmallSet.h | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/include/llvm/ADT/SmallSet.h b/include/llvm/ADT/SmallSet.h index 709c2938c5..dd1081e388 100644 --- a/include/llvm/ADT/SmallSet.h +++ b/include/llvm/ADT/SmallSet.h @@ -41,19 +41,26 @@ public: bool empty() const { return Vector.empty(); } unsigned size() const { return Vector.size(); } + iterator find(const T &V) const { + for (iterator I = begin(), E = end(); I != E; ++I) + if (*I == V) + return I; + return end(); + } + /// count - Return true if the element is in the set. unsigned count(const T &V) const { // Since the collection is small, just do a linear search. - for (iterator I = begin(), E = end(); I != E; ++I) - if (*I == V) - return 1; - return 0; + return find(V) != end(); } /// insert - Insert an element into the set if it isn't already there. - void insert(const T &V) { - if (count(V)) return; // Don't reinsert if it already exists. + std::pair<iterator,bool> insert(const T &V) { + iterator I = find(V); + if (I == end()) // Don't reinsert if it already exists. + return std::make_pair(I, false); Vector.push_back(V); + return std::make_pair(end()-1, true); } void erase(const T &V) { |