10#if !defined(ECTLISTITERATORS_H)
11#define ECTLISTITERATORS_H
232#ifdef GUILIANI_USE_EXCEPTIONS
251enum Update_t {REMOVED, ADDED, KILL, REVERSE_ORDER};
335 else if (m_pSaveNextNode == pkUpdateNode)
337 assert(m_pSaveNextNode != NULL);
338 m_pSaveNextNode = m_pSaveNextNode->
m_pkNext;
341 else if (m_pSavePrevNode == pkUpdateNode)
343 assert(m_pSavePrevNode != NULL);
350 m_pSavePrevNode = NULL;
351 m_pSaveNextNode = NULL;
355 pkTempNode = m_pSaveNextNode;
356 m_pSaveNextNode = m_pSavePrevNode;
357 m_pSavePrevNode = pkTempNode;
367 m_pSavePrevNode = pkUpdateNode;
374 m_pSaveNextNode = pkUpdateNode;
381 && m_pSaveNextNode == pkUpdateNode->
m_pkNext)
392 if (m_pList != pList)
397 pTempList->UnregisterIterator(
this);
399 pList->RegisterIterator(
this);
411 m_pSaveNextNode(NULL),
412 m_pSavePrevNode(NULL)
423 SetList(kIter.m_pList);
424 m_pSaveNextNode = kIter.m_pSaveNextNode;
425 m_pSavePrevNode = kIter.m_pSavePrevNode;
442 SetList(kIter.m_pList);
443 m_pSaveNextNode = kIter.m_pSaveNextNode;
444 m_pSavePrevNode = kIter.m_pSavePrevNode;
458 && (m_pSavePrevNode == kIter.m_pSavePrevNode)
459 && (m_pSaveNextNode == kIter.m_pSaveNextNode));
471 || (m_pSavePrevNode != kIter.m_pSavePrevNode)
472 || (m_pSaveNextNode != kIter.m_pSaveNextNode));
489 m_pSavePrevNode = pOldNode;
491 if (m_pSaveNextNode != NULL)
493 m_pSaveNextNode = m_pSaveNextNode->
m_pkNext;
513 m_pSaveNextNode = pOldNode;
515 if (m_pSavePrevNode != NULL)
ListNode template class.
Definition: eC_TList_doubleLinked.h:27
ListNode * m_pkPrevious
pointer to previous node
Definition: eC_TList_doubleLinked.h:44
ListNode * m_pkNext
pointer to next node
Definition: eC_TList_doubleLinked.h:41
T m_tValue
value of this node
Definition: eC_TList_doubleLinked.h:47
Classic iterator implementation with operator++, operator–, operator*.
Definition: eC_TList_Iterators.h:36
eC_TIterator(Node *pNode)
Definition: eC_TList_Iterators.h:58
eC_Bool operator==(const Node *const ptrNode) const
Definition: eC_TList_Iterators.h:103
virtual eC_Bool IsInsideList() const
Definition: eC_TList_Iterators.h:139
eC_TIterator operator++(int)
Definition: eC_TList_Iterators.h:153
eC_TIterator operator--(int)
Definition: eC_TList_Iterators.h:190
ListNode< T > Node
typedef for node
Definition: eC_TList_Iterators.h:41
eC_TIterator & operator=(const eC_TIterator &kIter)
Definition: eC_TList_Iterators.h:78
eC_TIterator(const eC_TIterator< T > &x)
Definition: eC_TList_Iterators.h:69
eC_Bool operator==(const eC_TIterator &kIter) const
Definition: eC_TList_Iterators.h:91
Node * m_pNode
this node
Definition: eC_TList_Iterators.h:44
eC_Bool operator!=(const eC_TIterator &kIter) const
Definition: eC_TList_Iterators.h:115
virtual ~eC_TIterator()
Destructor.
Definition: eC_TList_Iterators.h:61
eC_TIterator & operator++()
Definition: eC_TList_Iterators.h:171
eC_TIterator()
Definition: eC_TList_Iterators.h:52
eC_TIterator & operator--()
Definition: eC_TList_Iterators.h:208
Node * GetNode() const
Definition: eC_TList_Iterators.h:242
eC_Bool IsValid() const
Definition: eC_TList_Iterators.h:128
T & operator*()
Definition: eC_TList_Iterators.h:225
Represents a double linked list template with header and tail node.
Definition: eC_TList_doubleLinked.h:67
An iterator that stays valid even if elements are deleted from the list.
Definition: eC_TList_Iterators.h:313
virtual eC_Bool IsInsideList() const
Definition: eC_TList_Iterators.h:530
eC_Bool operator!=(const eC_TSafeIterator &kIter)
Definition: eC_TList_Iterators.h:468
eC_Bool IsNextValid() const
Definition: eC_TList_Iterators.h:542
eC_TSafeIterator & operator--()
Definition: eC_TList_Iterators.h:507
eC_Bool IsPreviousValid() const
Definition: eC_TList_Iterators.h:539
eC_TSafeIterator & operator=(const eC_TSafeIterator &kIter)
Definition: eC_TList_Iterators.h:439
eC_TSafeIterator & operator++()
Definition: eC_TList_Iterators.h:483
eC_Bool operator==(const eC_TSafeIterator &kIter) const
Definition: eC_TList_Iterators.h:455
eC_TSafeIterator()
Definition: eC_TList_Iterators.h:409
eC_TSafeIterator(const eC_TSafeIterator< T > &kIter)
Definition: eC_TList_Iterators.h:419