OpenBarnyard
 
Loading...
Searching...
No Matches
TPriList.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 TASSERT( !IsLinked(), "TNode::InsertAfter - TNode shouldn't be linked" );
15
16 m_iPriority = -0x8000;
17 m_pPrev = a_pNode;
18 m_pNext = a_pNode->m_pNext;
19 a_pNode->m_pNext = this;
20 m_pNext->m_pPrev = this;
21}
22
24{
25 TASSERT( !IsLinked(), "TNode::InsertBefore - TNode shouldn't be linked" );
26
27 m_iPriority = 0x7FFF;
28 m_pNext = a_pNode;
29 m_pPrev = a_pNode->m_pPrev;
30 a_pNode->m_pPrev = this;
31 m_pPrev->m_pNext = this;
32}
33
35{
36 TINT iPriority = a_pNode->m_iPriority;
37
38 if ( iPriority < 0 )
39 {
40 TNode* pCurNode = m_pNext;
41
42 while ( pCurNode != End() && pCurNode->m_iPriority <= iPriority )
43 {
44 pCurNode = pCurNode->m_pNext;
45 }
46
47 a_pNode->m_pNext = pCurNode;
48 a_pNode->m_pPrev = pCurNode->m_pPrev;
49 pCurNode->m_pPrev = a_pNode;
50 a_pNode->m_pPrev->m_pNext = a_pNode;
51 }
52 else
53 {
54 TNode* pCurNode = m_pPrev;
55 while ( pCurNode != End() && iPriority < pCurNode->m_iPriority )
56 {
57 pCurNode = pCurNode->m_pPrev;
58 }
59 a_pNode->m_pPrev = pCurNode;
60 a_pNode->m_pNext = pCurNode->m_pNext;
61 pCurNode->m_pNext = a_pNode;
62 a_pNode->m_pNext->m_pPrev = a_pNode;
63 }
64}
65
66void TGenericPriList::Insert( TNode* a_pNode, TINT iPriority )
67{
68 a_pNode->SetPriority( iPriority );
69 Insert( a_pNode );
70}
71
73{
74 TNode* pNode = m_pNext;
75
76 while ( pNode != End() )
77 {
78 pNode->Remove();
79 pNode = m_pNext;
80 }
81}
82
86
87
89{
90 Reset();
91}
92
97
99{
100 m_pNext = a_pNode.m_pNext;
101 m_pPrev = a_pNode.m_pPrev;
102 SetPriority( a_pNode.GetPriority() );
103 return *this;
104}
105
106void TGenericPriList::TNode::Reset()
107{
108 m_pNext = this;
109 m_pPrev = this;
110 SetPriority( 0 );
111}
112
114{
115 m_pPrev->m_pNext = m_pNext;
116 m_pNext->m_pPrev = m_pPrev;
117 m_pNext = this;
118 m_pPrev = this;
119}
120
122{
123 m_pNext = End();
124 m_pPrev = End();
125}
126
131
#define TASSERT(X,...)
Definition Defines.h:138
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
int TINT
Definition Typedefs.h:7
void Insert(TNode *a_pNode, TINT iPriority)
Definition TPriList.cpp:66
TNode * End()
Definition TDList.h:135
TINT GetPriority() const
Definition TDList.h:117
TNode & operator=(const TNode &a_pNode)
Definition TPriList.cpp:98
void InsertBefore(TNode *a_pNode)
Definition TPriList.cpp:23
void InsertAfter(TNode *a_pNode)
Definition TPriList.cpp:12
void SetPriority(TINT priority)
Definition TDList.h:116
TBOOL IsLinked() const
Definition TDList.h:114