/* Some basic iterator stuff */
namespace {
template<class T>
struct ListEntry
{
ListEntry* prev, *next;
T val;
};
template<class T>
class ListIter
{
ListEntry<T>* entry;
public:
ListIter(ListEntry<T>* entry)
: entry(entry)
{}
T& operator*() const
{
return entry->val;
}
ListIter& operator++()
{
entry = entry->next;
return *this;
}
ListIter operator++(int)
{
ListIter cpy = *this;
++(*this);
return cpy;
}
};
}
Comments