#include <TAPsHEVertexList.hpp>
Public Member Functions | |
| void | Append (HEVertex< T > *const n) |
| HEVertex< T > * | Current () const |
| void | Delete (HEVertex< T > *pVertex) |
| HEVertex< T > * | Head () |
| HEVertexList () | |
| void | InsertAfter (HEVertex< T > *const n) |
| void | InsertBefore (HEVertex< T > *const n) |
| bool | IsEmpty () const |
| bool | IsHead () const |
| bool | IsTail () const |
| int | Length () const |
| HEVertex< T > * | NextCurrent () |
| void | Prepend (HEVertex< T > *const n) |
| HEVertex< T > * | PrevCurrent () |
| HEVertex< T > * | Remove (HEVertex< T > *pVertex) |
| HEVertex< T > * | Remove () |
| int | Size () const |
| HEVertex< T > * | Tail () |
| virtual | ~HEVertexList () |
Protected Attributes | |
| int | m_iLength |
| HEVertex< T > * | pCurrent |
| HEVertex< T > * | pHead |
| HEVertex< T > * | pTail |
Definition at line 18 of file TAPsHEVertexList.hpp.
| BEGIN_NAMESPACE_TAPs HEVertexList< T >::HEVertexList | ( | ) | [inline] |
| HEVertexList< T >::~HEVertexList | ( | ) | [inline, virtual] |
Definition at line 28 of file TAPsHEVertexList.cpp.
00029 { 00030 HEVertex<T> *tmp; 00031 pCurrent = pHead; 00032 while ( pHead != NULL ) { 00033 tmp = Remove(); 00034 if ( tmp != NULL ) delete tmp; 00035 } 00036 m_iLength = 0; 00037 }
| void HEVertexList< T >::Append | ( | HEVertex< T > *const | n | ) | [inline] |
Definition at line 115 of file TAPsHEVertexList.cpp.
00116 { 00117 // case empty list 00118 if ( pHead == NULL ) { 00119 pCurrent = pHead = pTail = n; 00120 n->Next( NULL ); 00121 n->Prev( NULL ); 00122 ++m_iLength; 00123 } 00124 // case non-empty list 00125 else { 00126 n->Prev( pTail ); 00127 n->Next( NULL ); 00128 pTail = n; 00129 n->Prev()->Next( n ); 00130 ++m_iLength; 00131 } 00132 }
| HEVertex<T>* HEVertexList< T >::Current | ( | ) | const [inline] |
| void HEVertexList< T >::Delete | ( | HEVertex< T > * | pVertex | ) | [inline] |
Definition at line 225 of file TAPsHEVertexList.cpp.
00226 { 00227 HEVertex<T> * removeItem = Remove( pVertex ); 00228 if ( removeItem ) delete removeItem; 00229 }
| HEVertex<T>* HEVertexList< T >::Head | ( | ) | [inline] |
| void HEVertexList< T >::InsertAfter | ( | HEVertex< T > *const | n | ) | [inline] |
Definition at line 64 of file TAPsHEVertexList.cpp.
00065 { 00066 // case empty list 00067 if ( pHead == NULL ) { 00068 pCurrent = pHead = pTail = n; 00069 n->Next( NULL ); 00070 n->Prev( NULL ); 00071 ++m_iLength; 00072 } 00073 // case pCurrent == pTail 00074 else if ( pCurrent == pTail ) { 00075 Append( n ); 00076 //n->Prev( pCurrent ); 00077 //n->Next( NULL ); 00078 //pCurrent->Next( n ); 00079 //pCurrent = pTail = n; 00080 } 00081 // case pCurrent != pTail 00082 else { 00083 n->Prev( pCurrent ); 00084 n->Next( pCurrent->Next() ); 00085 n->Next()->Prev( n ); 00086 pCurrent->Next( n ); 00087 pCurrent = n; 00088 ++m_iLength; 00089 } 00090 }
| void HEVertexList< T >::InsertBefore | ( | HEVertex< T > *const | n | ) | [inline] |
Definition at line 43 of file TAPsHEVertexList.cpp.
00043 { 00044 // case empty list 00045 if ( pHead == NULL ) { 00046 pCurrent = pHead = pTail = n; 00047 n->Next( NULL ); 00048 n->Prev( NULL ); 00049 ++m_iLength; 00050 } 00051 // case pCurrent == pHead 00052 else if ( pCurrent == pHead ) { 00053 Prepend( n ); 00054 } 00055 // case non-empty list 00056 else { 00057 pCurrent = pCurrent->Prev(); 00058 InsertAfter( n ); 00059 } 00060 }
| bool HEVertexList< T >::IsEmpty | ( | ) | const [inline] |
| bool HEVertexList< T >::IsHead | ( | ) | const [inline] |
| bool HEVertexList< T >::IsTail | ( | ) | const [inline] |
| int HEVertexList< T >::Length | ( | ) | const [inline] |
| HEVertex<T>* HEVertexList< T >::NextCurrent | ( | ) | [inline] |
| void HEVertexList< T >::Prepend | ( | HEVertex< T > *const | n | ) | [inline] |
Definition at line 94 of file TAPsHEVertexList.cpp.
00095 { 00096 // case empty list 00097 if ( pHead == NULL ) { 00098 pCurrent = pHead = pTail = n; 00099 n->Next( NULL ); 00100 n->Prev( NULL ); 00101 ++m_iLength; 00102 } 00103 // case non-empty list 00104 else { 00105 n->Prev( NULL ); 00106 n->Next( pHead ); 00107 pHead->Prev( n ); 00108 pHead = n; 00109 ++m_iLength; 00110 } 00111 }
| HEVertex<T>* HEVertexList< T >::PrevCurrent | ( | ) | [inline] |
| HEVertex< T > * HEVertexList< T >::Remove | ( | HEVertex< T > * | pVertex | ) | [inline] |
Definition at line 180 of file TAPsHEVertexList.cpp.
00181 { 00182 // case empty list 00183 if ( pVertex == NULL ) return NULL; 00184 //--------------------------------------------------------------- 00185 HEVertex<T> *tmp = pVertex; 00186 //----------------------------------------------------- 00187 // case one element list 00188 if ( pHead == pTail && pVertex == pHead ) { 00189 //std::cout << "TAPsHEVertexList.cpp::Remove(): case one element list\n"; 00190 pVertex = pHead = pTail = NULL; // make list empty 00191 m_iLength = 0; // size is zero 00192 return tmp; 00193 } 00194 //----------------------------------------------------- 00195 // case pVertex == pHead 00196 else if ( pHead == pVertex ) { 00197 //std::cout << "TAPsHEVertexList.cpp::Remove(): case pVertex == pHead\n"; 00198 pVertex = pHead = pHead->Next(); // change current and head to next item 00199 pHead->Prev( NULL ); // set head prev point to null 00200 } 00201 //----------------------------------------------------- 00202 // case pVertex == pTail 00203 else if ( pTail == pVertex ) { 00204 //std::cout << "TAPsHEVertexList.cpp::Remove(): case pVertex == pTail\n"; 00205 pVertex = pTail = pTail->Prev(); // change current and tail to previous item 00206 pTail->Next( NULL ); // set tail next point to null 00207 } 00208 //----------------------------------------------------- 00209 // case pVertex is between pHead and pTail 00210 else { 00211 //std::cout << "TAPsHEVertexList.cpp::Remove(): case pVertex is between pHead and pTail\n"; 00212 pVertex = pVertex->Next(); 00213 tmp->Prev()->Next( pVertex ); 00214 pVertex->Prev( tmp->Prev() ); 00215 } 00216 //----------------------------------------------------- 00217 tmp->Prev( NULL ); // isolate tmp by setting its prev and next to null 00218 tmp->Next( NULL ); 00219 --m_iLength; // reduce the list size by one 00220 return tmp; // return tmp 00221 }
| HEVertex< T > * HEVertexList< T >::Remove | ( | ) | [inline] |
Definition at line 136 of file TAPsHEVertexList.cpp.
00137 { 00138 return Remove( pCurrent ); 00139 00140 /* 00141 // case empty list 00142 if ( pCurrent == NULL ) return NULL; 00143 //--------------------------------------------------------------- 00144 HEVertex<T> *tmp = pCurrent; 00145 //----------------------------------------------------- 00146 // case one element list 00147 if ( pHead == pTail && pCurrent == pHead ) { 00148 pCurrent = pHead = pTail = NULL; // make list empty 00149 m_iLength = 0; // size is zero 00150 return tmp; 00151 } 00152 //----------------------------------------------------- 00153 // case pCurrent == pHead 00154 else if ( pHead == pCurrent ) { 00155 pCurrent = pHead = pHead->Next(); // change current and head to next item 00156 pHead->Prev( NULL ); // set head prev point to null 00157 } 00158 //----------------------------------------------------- 00159 // case pCurrent == pTail 00160 else if ( pTail == pCurrent ) { 00161 pCurrent = pTail = pTail->Prev(); // change current and tail to previous item 00162 pTail->Next( NULL ); // set tail next point to null 00163 } 00164 //----------------------------------------------------- 00165 // case pCurrent is between pHead and pTail 00166 else { 00167 pCurrent = pCurrent->Next(); 00168 tmp->Prev()->Next( pCurrent ); 00169 pCurrent->Prev( tmp->Prev() ); 00170 } 00171 tmp->Prev( NULL ); // isolate tmp by setting its prev and next to null 00172 tmp->Next( NULL ); 00173 --m_iLength; // reduce the list size by one 00174 return tmp; // return tmp 00175 //*/ 00176 }
| int HEVertexList< T >::Size | ( | ) | const [inline] |
| HEVertex<T>* HEVertexList< T >::Tail | ( | ) | [inline] |
int HEVertexList< T >::m_iLength [protected] |
Definition at line 23 of file TAPsHEVertexList.hpp.
HEVertex<T>* HEVertexList< T >::pCurrent [protected] |
Definition at line 26 of file TAPsHEVertexList.hpp.
HEVertex<T>* HEVertexList< T >::pHead [protected] |
Definition at line 24 of file TAPsHEVertexList.hpp.
HEVertex<T>* HEVertexList< T >::pTail [protected] |
Definition at line 25 of file TAPsHEVertexList.hpp.
1.5.6