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 >
33 virtual T current()
const = 0;
34 virtual void advance() = 0;
38 template<
typename T >
45 template<
typename T,
typename W >
52 virtual void advance() { this->wrapped().advance(); }
53 virtual T
current()
const {
return this->wrapped().current(); }
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 >
100 Iterator(
const IteratorInterface< T > &i ) : Super( i ) {}
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;
116 virtual Value
current()
const {
return *m_iterator; }
122 template<
typename I >
T operator*() const
Definition: iterator.h:73
Iterator< typename I::value_type > iterator(I i)
Definition: iterator.h:123
T * pointer
Definition: iterator.h:66
T ElementType
Definition: iterator.h:61
Definition: iterator.h:17
SortabilityTag Sorted
Definition: iterator.h:23
Self & operator++()
Definition: iterator.h:75
Definition: iterator.h:39
Definition: iterator.h:46
T ElementType
Definition: iterator.h:98
T value_type
Definition: iterator.h:64
virtual void advance()
Definition: iterator.h:52
bool SortabilityTag
Definition: iterator.h:14
std::forward_iterator_tag iterator_category
Definition: iterator.h:63
Definition: iterator.h:32
SortabilityTag Unsorted
Definition: iterator.h:18
virtual ~IteratorInterface()
Definition: iterator.h:35
Iterator()
Definition: iterator.h:101
virtual void advance()
Definition: iterator.h:115
IteratorMorph(const Wrapped &w)
Definition: iterator.h:50
Definition: iterator.h:57
virtual void advance()
Definition: iterator.h:105
Self operator++(int)
Definition: iterator.h:76
std::iterator_traits< It >::value_type Value
Definition: iterator.h:113
SortabilityTag Sorted
Definition: iterator.h:28
virtual T current() const
Definition: iterator.h:53
IteratorTraits< T, I >::Unsorted isSortedT(I, I)
Definition: iterator.h:84
Definition: iterator.h:94
bool operator<=(const Iterator &i) const
Definition: iterator.h:102
ptrdiff_t difference_type
Definition: iterator.h:65
T & reference
Definition: iterator.h:67
Iterator(const IteratorInterface< T > &i)
Definition: iterator.h:100
virtual Value current() const
Definition: iterator.h:116
T x
Definition: iterator.h:41
const T * operator->() const
Definition: iterator.h:42
W Wrapped
Definition: iterator.h:48
Amorph< Iterator< T >, IteratorInterface< T >, 0 > Super
Definition: iterator.h:97
StlIterator(It i)
Definition: iterator.h:114
T current() const
Definition: iterator.h:104
IteratorMorph()
Definition: iterator.h:49
IteratorProxy< T > operator->() const
Definition: iterator.h:70
Self next() const
Definition: iterator.h:72
IteratorProxy(T _x)
Definition: iterator.h:40
const T & const_reference
Definition: iterator.h:68
bool operator==(const StlIterator< It > &o)
Definition: iterator.h:117
Definition: iterator.h:111
It m_iterator
Definition: iterator.h:119