summaryrefslogtreecommitdiffabout
path: root/include/opkele/iterator.h
Unidiff
Diffstat (limited to 'include/opkele/iterator.h') (more/less context) (ignore whitespace changes)
-rw-r--r--include/opkele/iterator.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/opkele/iterator.h b/include/opkele/iterator.h
index 8f86234..94da7e4 100644
--- a/include/opkele/iterator.h
+++ b/include/opkele/iterator.h
@@ -90,33 +90,33 @@ namespace opkele {
90 virtual void advance() { ++i; } 90 virtual void advance() { ++i; }
91 }; 91 };
92 92
93 template<typename T,typename TR=T&,typename TP=T*> 93 template<typename T,typename TR=T&,typename TP=T*>
94 class forward_iterator_proxy : public iterator<forward_iterator_tag,T,void,TP,TR> { 94 class forward_iterator_proxy : public iterator<forward_iterator_tag,T,void,TP,TR> {
95 public: 95 public:
96 basic_forward_iterator_proxy_impl<T,TR,TP> *I; 96 basic_forward_iterator_proxy_impl<T,TR,TP> *I;
97 97
98 template<typename IT> 98 template<typename IT>
99 forward_iterator_proxy(const IT& i) 99 forward_iterator_proxy(const IT& i)
100 : I(new forward_iterator_proxy_impl<IT>(i)) { } 100 : I(new forward_iterator_proxy_impl<IT>(i)) { }
101 forward_iterator_proxy(const forward_iterator_proxy<T,TR,TP>& x) 101 forward_iterator_proxy(const forward_iterator_proxy<T,TR,TP>& x)
102 : I(x.I->dup()) { } 102 : I(x.I->dup()) { }
103 ~forward_iterator_proxy() { delete I; } 103 ~forward_iterator_proxy() { delete I; }
104 104
105 forward_iterator_proxy& operator=(const forward_iterator_proxy<T,TR,TP>& x) { 105 forward_iterator_proxy& operator=(const forward_iterator_proxy<T,TR,TP>& x) {
106 delete I; I = x.I->dup(); } 106 delete I; I = x.I->dup(); return *this; }
107 107
108 bool operator==(const forward_iterator_proxy<T,TR,TP>& x) const { 108 bool operator==(const forward_iterator_proxy<T,TR,TP>& x) const {
109 return (*I)==(*(x.I)); } 109 return (*I)==(*(x.I)); }
110 bool operator!=(const forward_iterator_proxy<T,TR,TP>& x) const { 110 bool operator!=(const forward_iterator_proxy<T,TR,TP>& x) const {
111 return (*I)!=(*(x.I)); } 111 return (*I)!=(*(x.I)); }
112 112
113 TR operator*() const { 113 TR operator*() const {
114 return **I; } 114 return **I; }
115 TP operator->() const { 115 TP operator->() const {
116 return I->operator->(); } 116 return I->operator->(); }
117 117
118 forward_iterator_proxy<T,TR,TP>& operator++() { 118 forward_iterator_proxy<T,TR,TP>& operator++() {
119 I->advance(); return *this; } 119 I->advance(); return *this; }
120 forward_iterator_proxy<T,TR,TP>& operator++(int) { 120 forward_iterator_proxy<T,TR,TP>& operator++(int) {
121 forward_iterator_proxy<T,TR,TP> rv(*this); 121 forward_iterator_proxy<T,TR,TP> rv(*this);
122 I->advance(); return rv; } 122 I->advance(); return rv; }