HEVertexList< T > Class Template Reference

#include <TAPsHEVertexList.hpp>

List of all members.

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


Detailed Description

template<typename T>
class HEVertexList< T >

Definition at line 18 of file TAPsHEVertexList.hpp.


Constructor & Destructor Documentation

template<typename T>
BEGIN_NAMESPACE_TAPs HEVertexList< T >::HEVertexList (  )  [inline]

Definition at line 20 of file TAPsHEVertexList.cpp.

00021     : m_iLength( 0 ),
00022       pHead( NULL ), pTail( NULL ), pCurrent( NULL )
00023 {}

template<typename T>
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 }


Member Function Documentation

template<typename T>
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 }

template<typename T>
HEVertex<T>* HEVertexList< T >::Current (  )  const [inline]

Definition at line 60 of file TAPsHEVertexList.hpp.

00060 { return pCurrent; }

template<typename T>
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 }

template<typename T>
HEVertex<T>* HEVertexList< T >::Head (  )  [inline]

Definition at line 62 of file TAPsHEVertexList.hpp.

00062 { pCurrent = pHead; return pCurrent; }

template<typename T>
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 }

template<typename T>
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 }

template<typename T>
bool HEVertexList< T >::IsEmpty (  )  const [inline]

Definition at line 57 of file TAPsHEVertexList.hpp.

00057 { return pHead == NULL ? true : false; }

template<typename T>
bool HEVertexList< T >::IsHead (  )  const [inline]

Definition at line 66 of file TAPsHEVertexList.hpp.

00066 { return pHead == pCurrent ? true : false; }

template<typename T>
bool HEVertexList< T >::IsTail (  )  const [inline]

Definition at line 67 of file TAPsHEVertexList.hpp.

00067 { return pTail == pCurrent ? true : false; }

template<typename T>
int HEVertexList< T >::Length (  )  const [inline]

Definition at line 55 of file TAPsHEVertexList.hpp.

00055 { return m_iLength; }

template<typename T>
HEVertex<T>* HEVertexList< T >::NextCurrent (  )  [inline]

Definition at line 64 of file TAPsHEVertexList.hpp.

00064 { pCurrent = pCurrent->Next(); return pCurrent; }

template<typename T>
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 }

template<typename T>
HEVertex<T>* HEVertexList< T >::PrevCurrent (  )  [inline]

Definition at line 65 of file TAPsHEVertexList.hpp.

00065 { pCurrent = pCurrent->Prev(); return pCurrent; }

template<typename T>
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 }

template<typename T>
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 }

template<typename T>
int HEVertexList< T >::Size (  )  const [inline]

Definition at line 56 of file TAPsHEVertexList.hpp.

00056 { return m_iLength; }

template<typename T>
HEVertex<T>* HEVertexList< T >::Tail (  )  [inline]

Definition at line 63 of file TAPsHEVertexList.hpp.

00063 { pCurrent = pTail; return pCurrent; }


Member Data Documentation

template<typename T>
int HEVertexList< T >::m_iLength [protected]

Definition at line 23 of file TAPsHEVertexList.hpp.

template<typename T>
HEVertex<T>* HEVertexList< T >::pCurrent [protected]

Definition at line 26 of file TAPsHEVertexList.hpp.

template<typename T>
HEVertex<T>* HEVertexList< T >::pHead [protected]

Definition at line 24 of file TAPsHEVertexList.hpp.

template<typename T>
HEVertex<T>* HEVertexList< T >::pTail [protected]

Definition at line 25 of file TAPsHEVertexList.hpp.


The documentation for this class was generated from the following files:

Generated on Mon Oct 13 11:45:04 2008 for TAPs by  doxygen 1.5.6