5 #ifndef __IRR_LIST_H_INCLUDED__
6 #define __IRR_LIST_H_INCLUDED__
27 SKListNode(
const T& e) : Next(0), Prev(0), Element(e) {}
52 while (num-- && this->Current != 0) ++(*this);
56 while(num++ && this->Current != 0) --(*this);
70 #if defined (_MSC_VER) && (_MSC_VER < 1300)
71 #pragma warning(disable:4284) // infix notation problem when using iterator operator ->
103 while(num-- && this->Current != 0) ++(*this);
107 while(num++ && this->Current != 0) --(*this);
137 : First(0), Last(0), Size(0) {}
164 SKListNode* node = other.First;
191 SKListNode * next = First->Next;
215 SKListNode* node = allocator.
allocate(1);
236 SKListNode* node = allocator.
allocate(1);
259 return Iterator(First);
267 return ConstIterator(First);
283 return ConstIterator(0);
291 return Iterator(Last);
299 return ConstIterator(Last);
310 SKListNode* node = allocator.
allocate(1);
313 node->Next = it.Current->Next;
315 if (it.Current->Next)
316 it.Current->Next->Prev = node;
318 node->Prev = it.Current;
319 it.Current->Next = node;
322 if (it.Current == Last)
334 SKListNode* node = allocator.
allocate(1);
337 node->Prev = it.Current->Prev;
339 if (it.Current->Prev)
340 it.Current->Prev->Next = node;
342 node->Next = it.Current;
343 it.Current->Prev = node;
346 if (it.Current == First)
359 Iterator returnIterator(it);
362 if(it.Current == First)
364 First = it.Current->Next;
368 it.Current->Prev->Next = it.Current->Next;
371 if(it.Current == Last)
373 Last = it.Current->Prev;
377 it.Current->Next->Prev = it.Current->Prev;
385 return returnIterator;