//#include "kryIterator.h" template class kryListIterator; template struct kryListNode { struct kryListNode *prev; struct kryListNode *next; T data; }; template class kryList { public: kryList(); kryList(kryList & list); ~kryList(); kryListNode * Append(T data); kryListNode * Add(T data) { return Append(data); } //kryListNode *nth(int index); T GetNthData(int index); int GetLength(); int GetCount(); void ForEach(GFunc func, void *userdata); void Insert(T data, int position); struct kryListNode *Find(T data, GEqualFunc func = NULL, int *index = NULL); int IndexOf(T data, GEqualFunc func = NULL); void Remove(T data, GEqualFunc func = NULL); void Clear(); void operator =(kryList & list); T operator[] (int index); kryListNode *m_head; kryListNode *m_tail; void GetIterator(kryListIterator *iter); void GetNthIterator(kryListIterator *iter, int index); void AddIterator(kryListIterator *iter); void RemoveIterator(kryListIterator *iter); void PrintDebug(); friend class kryListIterator; //friend kryListIterator; private: void Remove(kryListNode *node); int m_length; int m_id; GList *m_iterators; };