diff options
author | Ryan Govostes <rzg@apple.com> | 2013-02-13 22:37:27 +0000 |
---|---|---|
committer | Ryan Govostes <rzg@apple.com> | 2013-02-13 22:37:27 +0000 |
commit | 779a96362e18d008e224c1683e54181ba1fbe943 (patch) | |
tree | 839550d8489ed291f72bf86a7664070cc5ddbf72 /include | |
parent | 76308d8d287e427cce8ea4374acc8e78648dcf79 (diff) |
Fix iterator definitions for ImmutableSet and ImmutableMap.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175097 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/ADT/ImmutableMap.h | 16 | ||||
-rw-r--r-- | include/llvm/ADT/ImmutableSet.h | 28 |
2 files changed, 24 insertions, 20 deletions
diff --git a/include/llvm/ADT/ImmutableMap.h b/include/llvm/ADT/ImmutableMap.h index a84ad25bee..81ac9cc31d 100644 --- a/include/llvm/ADT/ImmutableMap.h +++ b/include/llvm/ADT/ImmutableMap.h @@ -211,24 +211,24 @@ public: friend class ImmutableMap; public: - value_type_ref operator*() const { return itr->getValue(); } - value_type* operator->() const { return &itr->getValue(); } + typedef ImmutableMap<KeyT,ValT,ValInfo>::value_type value_type; + typedef ImmutableMap<KeyT,ValT,ValInfo>::value_type_ref reference; + typedef iterator::value_type *pointer; + typedef std::bidirectional_iterator_tag iterator_category; + + iterator::reference operator*() const { return itr->getValue(); } + iterator::pointer operator->() const { return &itr->getValue(); } key_type_ref getKey() const { return itr->getValue().first; } data_type_ref getData() const { return itr->getValue().second; } - iterator& operator++() { ++itr; return *this; } iterator operator++(int) { iterator tmp(*this); ++itr; return tmp; } iterator& operator--() { --itr; return *this; } iterator operator--(int) { iterator tmp(*this); --itr; return tmp; } + bool operator==(const iterator& RHS) const { return RHS.itr == itr; } bool operator!=(const iterator& RHS) const { return RHS.itr != itr; } - - typedef ImmutableMap<KeyT,ValT,ValInfo>::value_type value_type; - typedef value_type *pointer; - typedef value_type &reference; - typedef std::bidirectional_iterator_tag iterator_category; }; iterator begin() const { return iterator(Root); } diff --git a/include/llvm/ADT/ImmutableSet.h b/include/llvm/ADT/ImmutableSet.h index 247b544660..4c3c3a0d6d 100644 --- a/include/llvm/ADT/ImmutableSet.h +++ b/include/llvm/ADT/ImmutableSet.h @@ -1054,23 +1054,27 @@ public: class iterator { typename TreeTy::iterator itr; + + iterator() {} iterator(TreeTy* t) : itr(t) {} friend class ImmutableSet<ValT,ValInfo>; - public: - iterator() {} - inline value_type_ref operator*() const { return itr->getValue(); } - inline iterator& operator++() { ++itr; return *this; } - inline iterator operator++(int) { iterator tmp(*this); ++itr; return tmp; } - inline iterator& operator--() { --itr; return *this; } - inline iterator operator--(int) { iterator tmp(*this); --itr; return tmp; } - inline bool operator==(const iterator& RHS) const { return RHS.itr == itr; } - inline bool operator!=(const iterator& RHS) const { return RHS.itr != itr; } - inline value_type *operator->() const { return &(operator*()); } + public: typedef ImmutableSet<ValT,ValInfo>::value_type value_type; - typedef value_type *pointer; - typedef value_type &reference; + typedef ImmutableSet<ValT,ValInfo>::value_type_ref reference; + typedef iterator::value_type *pointer; typedef std::bidirectional_iterator_tag iterator_category; + + iterator::reference operator*() const { return itr->getValue(); } + iterator::pointer operator->() const { return &(operator*()); } + + iterator& operator++() { ++itr; return *this; } + iterator operator++(int) { iterator tmp(*this); ++itr; return tmp; } + iterator& operator--() { --itr; return *this; } + iterator operator--(int) { iterator tmp(*this); --itr; return tmp; } + + bool operator==(const iterator& RHS) const { return RHS.itr == itr; } + bool operator!=(const iterator& RHS) const { return RHS.itr != itr; } }; iterator begin() const { return iterator(Root); } |