--- deliantra/server/include/util.h 2007/06/04 13:04:00 1.49 +++ deliantra/server/include/util.h 2007/06/24 00:33:54 1.50 @@ -442,27 +442,29 @@ // - only works for pointers to structs // // NOTE: only some forms of erase/insert are available -template +typedef int object_vector_index; + +template struct object_vector : std::vector > { typedef typename object_vector::iterator iterator; bool contains (const T *obj) const { - return obj->*index; + return obj->*indexmember; } iterator find (const T *obj) { - return obj->*index - ? this->begin () + obj->*index - 1 + return obj->*indexmember + ? this->begin () + obj->*indexmember - 1 : this->end (); } void insert (T *obj) { push_back (obj); - obj->*index = this->size (); + obj->*indexmember = this->size (); } void insert (T &obj) @@ -472,13 +474,13 @@ void erase (T *obj) { - unsigned int pos = obj->*index; - obj->*index = 0; + unsigned int pos = obj->*indexmember; + obj->*indexmember = 0; if (pos < this->size ()) { (*this)[pos - 1] = (*this)[this->size () - 1]; - (*this)[pos - 1]->*index = pos; + (*this)[pos - 1]->*indexmember = pos; } this->pop_back (); @@ -486,7 +488,7 @@ void erase (T &obj) { - errase (&obj); + erase (&obj); } };