OpenBarnyard
 
Loading...
Searching...
No Matches
TDList.cpp
Go to the documentation of this file.
1#include "ToshiPCH.h"
2#include "TDList.h"
3
4//-----------------------------------------------------------------------------
5// Enables memory debugging.
6// Note: Should be the last include!
7//-----------------------------------------------------------------------------
9
11
13{
14 Reset();
15}
16
20
25
27{
28 TASSERT( !IsLinked(), "TNode::InsertAfter - TNode shouldn't be linked" );
29
30 m_pPrev = a_pNode;
31 m_pNext = a_pNode->m_pNext;
32 a_pNode->m_pNext = this;
33 m_pNext->m_pPrev = this;
34}
35
37{
38 TASSERT( !IsLinked(), "TNode::InsertBefore - TNode shouldn't be linked" );
39
40 m_pNext = a_pNode;
41 m_pPrev = a_pNode->m_pPrev;
42 a_pNode->m_pPrev = this;
43 m_pPrev->m_pNext = this;
44}
45
47{
48 m_pNext->m_pPrev = m_pPrev;
49 m_pPrev->m_pNext = m_pNext;
50 Reset();
51}
52
53void TGenericDList::TNode::Reset()
54{
55 m_pPrev = this;
56 m_pNext = this;
57}
58
59void TGenericDList::InsertSegmentAfter( TNode* a_pNode1, TNode* a_pNode2, TNode* a_pNode3 )
60{
61 a_pNode1->m_pNext = a_pNode3;
62 a_pNode2->m_pPrev = a_pNode3->m_pPrev;
63 a_pNode1->m_pNext->m_pPrev = a_pNode1;
64 a_pNode2->m_pPrev->m_pNext = a_pNode2;
65}
66
67void TGenericDList::InsertSegmentBefore( TNode* a_pNode1, TNode* a_pNode2, TNode* a_pNode3 )
68{
69 a_pNode2->m_pPrev = a_pNode3;
70 a_pNode1->m_pNext = a_pNode3->m_pNext;
71 a_pNode2->m_pPrev->m_pNext = a_pNode2;
72 a_pNode1->m_pNext->m_pPrev = a_pNode1;
73}
74
78
83
85{
86 a_pNode1->m_pNext = &m_oRoot;
87 a_pNode2->m_pPrev = m_oRoot.m_pPrev;
88 a_pNode1->m_pNext->m_pPrev = a_pNode1;
89 a_pNode2->m_pPrev->m_pNext = a_pNode2;
90}
91
93{
94 a_pNode2->m_pPrev = &m_oRoot;
95 a_pNode1->m_pNext = m_oRoot.m_pNext;
96 a_pNode2->m_pPrev->m_pNext = a_pNode2;
97 a_pNode1->m_pNext->m_pPrev = a_pNode1;
98}
99
101{
102 while ( !IsEmpty() )
103 {
104 RemoveHead();
105 }
106}
107
#define TASSERT(X,...)
Definition Defines.h:138
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
void InsertSegmentAtHead(TNode *a_pNode1, TNode *a_pNode2)
Definition TDList.cpp:84
void InsertSegmentAtTail(TNode *a_pNode1, TNode *a_pNode2)
Definition TDList.cpp:92
void RemoveAll()
Definition TDList.cpp:100
static void InsertSegmentAfter(TNode *a_pNode1, TNode *a_pNode2, TNode *a_pNode3)
Definition TDList.cpp:59
static void InsertSegmentBefore(TNode *a_pNode1, TNode *a_pNode2, TNode *a_pNode3)
Definition TDList.cpp:67
TBOOL IsEmpty()
Definition TDList.h:62
void RemoveHead()
Definition TDList.h:54
void InsertBefore(TNode *a_pNode)
Definition TDList.cpp:36
TBOOL IsLinked() const
Definition TDList.h:38
void InsertAfter(TNode *a_pNode)
Definition TDList.cpp:26