--- deliantra/server/include/object.h 2006/09/11 20:28:37 1.28 +++ deliantra/server/include/object.h 2006/09/12 01:09:53 1.30 @@ -239,6 +239,41 @@ void set_owner (object *owner); object *get_owner (); + // fully recursive iterator + struct iterator_base + { + object *item; + + iterator_base (object *container) + : item (container) + { + } + + operator object *() const { return item; } + + object *operator ->() const { return item; } + object &operator * () const { return *item; } + }; + + // depth-first recursive iterator + struct depth_iterator : iterator_base + { + depth_iterator (object *container); + void next (); + object *operator ++( ) { next (); return item; } + object *operator ++(int) { object *i = item; next (); return i; } + }; + + object *begin () + { + return this; + } + + object *end () + { + return this; + } + protected: friend struct archetype;