summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-10-11 00:14:49 +0000
committerTed Kremenek <kremenek@apple.com>2007-10-11 00:14:49 +0000
commit41eee516d7475983a656bb3eab6c7d285d949e7d (patch)
treede5ebbcacadb9c46fa5da410ae09a4f2263a70ae /llvm
parent6a97cf6d6506fa72fa5bd626ab14797eb57bb8ce (diff)
downloadbcm5719-llvm-41eee516d7475983a656bb3eab6c7d285d949e7d.tar.gz
bcm5719-llvm-41eee516d7475983a656bb3eab6c7d285d949e7d.zip
Added iterators to ImmutableSet.
llvm-svn: 42851
Diffstat (limited to 'llvm')
-rw-r--r--llvm/include/llvm/ADT/ImmutableSet.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/llvm/include/llvm/ADT/ImmutableSet.h b/llvm/include/llvm/ADT/ImmutableSet.h
index a0a28df2a36..30815751de2 100644
--- a/llvm/include/llvm/ADT/ImmutableSet.h
+++ b/llvm/include/llvm/ADT/ImmutableSet.h
@@ -633,8 +633,8 @@ public:
inline bool operator!=(const _Self& x) const { return !operator==(x); }
- inline TreeTy* operator*() { return *InternalItr; }
- inline TreeTy* operator->() { return *InternalItr; }
+ inline TreeTy* operator*() const { return *InternalItr; }
+ inline TreeTy* operator->() const { return *InternalItr; }
inline _Self& operator++() {
do ++InternalItr;
@@ -821,7 +821,7 @@ public:
void operator=(const Factory& RHS) {};
};
- friend class Factory;
+ friend class Factory;
/// contains - Returns true if the set contains the specified value.
bool contains(const value_type_ref V) const {
@@ -844,6 +844,27 @@ public:
template <typename Callback>
void foreach() { if (Root) { Callback C; Root->foreach(C); } }
+
+ //===--------------------------------------------------===//
+ // Iterators.
+ //===--------------------------------------------------===//
+
+ class iterator {
+ typename TreeTy::iterator itr;
+
+ iterator() {}
+ iterator(TreeTy* t) : itr(t) {}
+ friend class ImmutableSet<ValT,ValInfo>;
+ public:
+ inline value_type_ref operator*() const { return itr->getValue(); }
+ inline iterator& operator++() { ++itr; return *this; }
+ inline iterator& operator--() { --itr; return *this; }
+ inline bool operator==(const iterator& RHS) const { return RHS.itr == itr; }
+ inline bool operator!=(const iterator& RHS) const { return RHS.itr != itr; }
+ };
+
+ iterator begin() const { return iterator(Root); }
+ iterator end() const { return iterator(); }
//===--------------------------------------------------===//
// For testing.
OpenPOWER on IntegriCloud