34 #ifndef __EST_TITERATOR_H__ 35 #define __EST_TITERATOR_H__ 77 template <
class Container,
class IPo
inter,
class Entry>
79 template <
class Container,
class IPo
inter,
class Entry>
81 template <
class Container,
class IPo
inter,
class Entry>
84 template <
class Container,
class IPo
inter,
class Entry>
112 { cont=orig.
cont; pos=orig.
pos; pointer=orig.
pointer;
return *
this;}
116 {
begin(over);
return *
this;}
120 {cont=((Container *)(
void *)&over);
beginning();}
124 {
if (cont) cont->point_to_first(pointer); pos=0;}
131 {
return cont && cont->points_to_something(pointer);}
149 {cont->move_pointer_forwards(pointer); pos++;}
153 {
next();
return *
this;}
168 {
return cont->points_at(pointer);}
176 const Entry *operator ->()
const 183 const Entry &it = cont->points_at(pointer);
184 cont->move_pointer_forwards(pointer);
190 unsigned int n()
const {
return pos; }
202 template <
class Container,
class IPo
inter,
class Entry>
219 { this->
begin(over); }
221 const Entry *operator ->()
const 225 template <
class Container,
class IPo
inter,
class Entry>
267 Entry *operator ->()
const 282 template <
class Container,
class IPo
inter,
class Entry>
299 { this->
begin(over); }
301 Entry *operator ->()
const
EST_TStructIterator()
Create an iterator not associated with any specific container.
const Entry & operator*() const
The * operator returns the current element.
Container * cont
The container we are looking at.
void next()
Next moves to the next entry.
EST_TRwIterator< Container, IPointer, Entry > Iter
Can't access constant containers this way.
unsigned int pos
Position in the structure. May or may not be useful.
const Entry & next_element()
Return the current element and move the pointer forwards.
EST_TIterator< Container, IPointer, Entry > Iter
Name for an iterator like this.
EST_TRwIterator(Container &over)
Create an iterator ready to run over the given container.
EST_TRwStructIterator(Container &over)
Create an iterator ready to run over the given container.
unsigned int n() const
Return the current position.
EST_TStructIterator(const Container &over)
Create an iterator ready to run over the given container.
EST_TRwStructIterator< Container, IPointer, Entry > Iter
void begin(Container &over)
Set the iterator ready to run over this container.
Entry & next_element()
Return the current element and move the pointer forwards.
EST_TRwIterator()
Create an iterator not associated with any specific container.
EST_TRwStructIterator()
Create an iterator not associated with any specific container.
bool at_end() const
True when there are no more.
EST_TIterator(const Container &over)
Create an iterator ready to run over the given container.
const Entry & current() const
Return the element currently pointed to.
void beginning()
Reset to the start of the container.
void begin(const Container &over)
Set the iterator ready to run over this container.
EST_TIterator()
Create an iterator not associated with any specific container.
EST_TIterator< Container, IPointer, Entry > Iter
Iter & operator=(const Iter &orig)
Copy an iterator by assignment.
Iter & operator++()
The increment operator does the same as next.
Entry & current() const
Return the element currently pointed to.
bool has_more_elements() const
True if there are more elements to look at.