aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-01-23 01:16:19 +0000
committerChris Lattner <sabre@nondot.org>2007-01-23 01:16:19 +0000
commit182907645c9c2da22dba78255f0c8541f5d9f50d (patch)
tree3cd6c36cbb651c7cbd5a7ec9849c5fca95cde16a
parent08a4d5a343e886816b31a78d9b7e70240d9c67be (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.h19
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) {