156 return (Head.Next == &Head);
161 if (Head.Next == &Head) {
164 assert(Head.Next->Object != 0);
165 return Head.Next->Object;
220template <
class ObjectType>
234 bool Add(ObjectType * obj,
bool onlyonce =
true)
239 bool Add_Tail(ObjectType * obj,
bool onlyonce =
true)
244 bool Add_After(ObjectType * obj,
const ObjectType * existing_list_member,
bool onlyonce =
true)
294template <
class ObjectType>
341template <
class ObjectType>
353 bool Add(ObjectType * obj,
bool onlyonce =
true)
357 if (result ==
true) {
363 bool Add_Tail(ObjectType * obj,
bool onlyonce =
true)
367 if (result ==
true) {
373 bool Add_After(ObjectType * obj,
const ObjectType * existing_list_member,
bool onlyonce =
true)
377 if (result ==
true) {
445template <
class ObjectType>
487template <
class ObjectType>
504 (*object) = (ObjectType *)
CurNode->Object;
bool Is_In_List(MultiListObjectClass *obj)
bool Contains(MultiListObjectClass *obj)
friend class MultiListObjectClass
bool Internal_Remove(MultiListObjectClass *obj)
GenericMultiListClass(void)
bool Internal_Add(MultiListObjectClass *obj, bool onlyonce=true)
MultiListObjectClass * Internal_Get_List_Head(void)
bool Internal_Add_Tail(MultiListObjectClass *obj, bool onlyonce=true)
virtual ~GenericMultiListClass(void)
MultiListObjectClass * Internal_Remove_List_Head(void)
bool Internal_Add_After(MultiListObjectClass *obj, const MultiListObjectClass *existing_list_member, bool onlyonce=true)
friend class GenericMultiListIterator
void First(GenericMultiListClass *list)
MultiListObjectClass * Current_Object(void)
GenericMultiListIterator(GenericMultiListClass *list)
void Last(GenericMultiListClass *list)
GenericMultiListClass * List
MultiListNodeClass * CurNode
bool Add(ObjectType *obj, bool onlyonce=true)
ObjectType * Remove_Head()
bool Add_Tail(ObjectType *obj, bool onlyonce=true)
bool Remove(ObjectType *obj)
bool Add_After(ObjectType *obj, const ObjectType *existing_list_member, bool onlyonce=true)
virtual ~MultiListClass(void)
void Remove_Current_Object(void)
ObjectType * Get_Obj(void)
MultiListIterator(MultiListClass< ObjectType > *list)
ObjectType * Peek_Obj(void)
MultiListObjectClass * Object
MultiListNodeClass * Prev
GenericMultiListClass * List
MultiListNodeClass * NextList
MultiListNodeClass * Next
MultiListObjectClass(void)
void Set_List_Node(MultiListNodeClass *node)
virtual ~MultiListObjectClass(void)
MultiListNodeClass * Get_List_Node() const
bool Process_Head(ObjectType **object)
PriorityMultiListIterator(MultiListClass< ObjectType > *list)
MultiListNodeClass * OriginalHead
virtual ~RefMultiListClass(void)
bool Add(ObjectType *obj, bool onlyonce=true)
ObjectType * Remove_Head()
bool Remove(ObjectType *obj)
bool Add_After(ObjectType *obj, const ObjectType *existing_list_member, bool onlyonce=true)
bool Add_Tail(ObjectType *obj, bool onlyonce=true)
ObjectType * Get_Obj(void)
void Remove_Current_Object(void)
RefMultiListIterator(RefMultiListClass< ObjectType > *list)
ObjectType * Peek_Obj(void)