4 #ifndef PROXY_ITERATOR_H_
5 #define PROXY_ITERATOR_H_
21 template<
bool,
class T>
37 template <
class Cond,
class T>
41 template <
class T,
class U>
44 static const bool value =
false;
54 static const bool value = ! T::value;
57 template<
class P,
class C>
74 proxy(other.proxy.m_list, other.proxy.m_index) {}
94 return proxy.m_list != NULL;
99 return other.
proxy.m_list == proxy.m_list &&
100 other.
proxy.m_index == proxy.m_index;
145 return proxy.m_index - other.
proxy.m_index;
150 if (proxy.m_index == other.
proxy.m_index)
152 else if (proxy.m_index > other.
proxy.m_index)
171 return P(proxy.m_list,proxy.m_index+i);
175 template<
class P1,
class P2,
class C>
181 template<
class P1,
class P2,
class C>
188 template<
class P,
class C>
194 template<
class P,
class C>
200 template<
class P,
class C>
207 template<
class P,
class C>
213 template<
class P,
class C>
217 return a.
cmp(b) >= 0;
219 template<
class P,
class C>
220 inline bool operator<(const ProxyIterator<P,C> &a,
225 template<
class P,
class C>
226 inline bool operator<=(const ProxyIterator<P,C> &a,
229 return a.
cmp(b) <= 0;
232 template<
class P,
class C>
ProxyIterator & operator+=(difference_type i)
reference operator*() const
ProxyIterator & operator=(ProxyIterator other)
const value_type operator[](difference_type i) const
const ProxyIterator< P, C > operator-(const ProxyIterator< P, C > &a, typename ProxyIterator< P, C >::difference_type i)
random_access_iterator_tag iterator_category
const ProxyIterator< P, C > operator+(typename ProxyIterator< P, C >::difference_type i, const ProxyIterator< P, C > &a)
bool operator!=(const ProxyIterator< P1, C > &a, const ProxyIterator< P2, C > &b)
ProxyIterator operator--(int)
ProxyIterator(typename P::list_type *list, int index)
const value_type & reference
void swap(count_ptr< T > &a, count_ptr< T > &b)
void swap(ProxyIterator other)
ProxyIterator & operator-=(difference_type i)
difference_type diff(const ProxyIterator &other) const
ProxyIterator & operator++()
const_iterator_type_1::type const_iterator_type
int cmp(const ProxyIterator &other) const
ProxyIterator operator++(int)
const value_type * pointer
ProxyIterator(const ProxyIterator &other)
const ProxyIterator add(difference_type i) const
EnableIf< Not< IsSame< P, C > >, ProxyIterator< C, C > > const_iterator_type_1
bool operator==(const ProxyIterator< P1, C > &a, const ProxyIterator< P2, C > &b)
ProxyIterator & operator--()
bool operator>(const ProxyIterator< P, C > &a, const ProxyIterator< P, C > &b)
bool equals(const ProxyIterator &other) const
pointer operator->() const
bool operator>=(const ProxyIterator< P, C > &a, const ProxyIterator< P, C > &b)