From 182907645c9c2da22dba78255f0c8541f5d9f50d Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 23 Jan 2007 01:16:19 +0000 Subject: [PATCH] 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 --- include/llvm/ADT/SmallSet.h | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/include/llvm/ADT/SmallSet.h b/include/llvm/ADT/SmallSet.h index 709c2938c57..dd1081e3889 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 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) { -- 2.34.1