9 #ifndef WIBBLE_ITERATOR_H
10 #define WIBBLE_ITERATOR_H
16 template<
typename T,
typename I >
21 template<
typename T >
26 template<
typename T >
31 template<
typename T >
38 template<
typename T >
45 template<
typename T,
typename W >
56 template<
typename T,
typename Self >
59 Self &
self() {
return *
static_cast< const Self *
>( this ); }
60 const Self &
self()
const {
return *
static_cast< const Self *
>( this ); }
72 Self
next()
const { Self n(
self() ); n.advance();
return n; }
83 template<
typename T,
typename I >
88 template<
typename T,
typename I >
93 template<
typename T >
104 T
current()
const {
return this->implInterface()->current(); }
105 virtual void advance() { this->implInterface()->advance(); }
110 template<
typename It >
113 typedef typename std::iterator_traits< It >::value_type
Value;
122 template<
typename I >
bool SortabilityTag
Definition: iterator.h:14
IteratorTraits< T, I >::Unsorted isSortedT(I, I)
Definition: iterator.h:84
Iterator< typename I::value_type > iterator(I i)
Definition: iterator.h:123
bool leq(const Iterator< T > &i) const
Definition: amorph.h:303
Definition: iterator.h:32
virtual T current() const =0
virtual ~IteratorInterface()
Definition: iterator.h:35
Definition: iterator.h:58
T operator*() const
Definition: iterator.h:73
Self & operator++()
Definition: iterator.h:75
std::forward_iterator_tag iterator_category
Definition: iterator.h:63
const T & const_reference
Definition: iterator.h:68
T value_type
Definition: iterator.h:64
IteratorProxy< T > operator->() const
Definition: iterator.h:70
Self operator++(int)
Definition: iterator.h:76
T * pointer
Definition: iterator.h:66
ptrdiff_t difference_type
Definition: iterator.h:65
T & reference
Definition: iterator.h:67
T ElementType
Definition: iterator.h:61
Self next() const
Definition: iterator.h:72
Definition: iterator.h:47
IteratorMorph(const Wrapped &w)
Definition: iterator.h:50
W Wrapped
Definition: iterator.h:48
IteratorMorph()
Definition: iterator.h:49
virtual void advance()
Definition: iterator.h:52
virtual T current() const
Definition: iterator.h:53
Definition: iterator.h:39
IteratorProxy(T _x)
Definition: iterator.h:40
const T * operator->() const
Definition: iterator.h:42
T x
Definition: iterator.h:41
SortabilityTag Sorted
Definition: iterator.h:28
SortabilityTag Sorted
Definition: iterator.h:23
Definition: iterator.h:17
SortabilityTag Unsorted
Definition: iterator.h:18
Definition: iterator.h:96
T current() const
Definition: iterator.h:104
bool operator<=(const Iterator &i) const
Definition: iterator.h:102
virtual void advance()
Definition: iterator.h:105
Amorph< Iterator< T >, IteratorInterface< T >, 0 > Super
Definition: iterator.h:97
T ElementType
Definition: iterator.h:98
Iterator()
Definition: iterator.h:101
Iterator(const IteratorInterface< T > &i)
Definition: iterator.h:100
const Wrapped & wrapped() const
Definition: amorph.h:181
Definition: iterator.h:112
StlIterator(It i)
Definition: iterator.h:114
It m_iterator
Definition: iterator.h:119
virtual void advance()
Definition: iterator.h:115
std::iterator_traits< It >::value_type Value
Definition: iterator.h:113
bool operator==(const StlIterator< It > &o)
Definition: iterator.h:117
virtual Value current() const
Definition: iterator.h:116