2 #ifndef HACD_CIRCULAR_LIST_INL
\r
3 #define HACD_CIRCULAR_LIST_INL
\r
5 #include "hacdVersion.h"
\r
8 template < typename T >
\r
9 inline bool CircularList<T>::Delete(CircularListElement<T> * element)
\r
17 CircularListElement<T> * next = element->GetNext();
\r
18 CircularListElement<T> * prev = element->GetPrev();
\r
21 if (element == m_head)
\r
25 next->GetPrev() = prev;
\r
26 prev->GetNext() = next;
\r
29 else if (m_size == 1)
\r
42 template < typename T >
\r
43 inline bool CircularList<T>::Delete()
\r
47 CircularListElement<T> * next = m_head->GetNext();
\r
48 CircularListElement<T> * prev = m_head->GetPrev();
\r
52 next->GetPrev() = prev;
\r
53 prev->GetNext() = next;
\r
56 else if (m_size == 1)
\r
68 template < typename T >
\r
69 inline CircularListElement<T> * CircularList<T>::Add(const T * data)
\r
75 m_head = new CircularListElement<T>(*data);
\r
79 m_head = new CircularListElement<T>();
\r
81 m_head->GetNext() = m_head->GetPrev() = m_head;
\r
85 CircularListElement<T> * next = m_head->GetNext();
\r
86 CircularListElement<T> * element = m_head;
\r
89 m_head = new CircularListElement<T>(*data);
\r
93 m_head = new CircularListElement<T>;
\r
95 m_head->GetNext() = next;
\r
96 m_head->GetPrev() = element;
\r
97 element->GetNext() = m_head;
\r
98 next->GetPrev() = m_head;
\r
103 template < typename T >
\r
104 inline CircularListElement<T> * CircularList<T>::Add(const T & data)
\r
106 const T * pData = &data;
\r
109 template < typename T >
\r
110 inline bool CircularList<T>::Next()
\r
116 m_head = m_head->GetNext();
\r
119 template < typename T >
\r
120 inline bool CircularList<T>::Prev()
\r
126 m_head = m_head->GetPrev();
\r
129 template < typename T >
\r
130 inline CircularList<T>::CircularList(const CircularList& rhs)
\r
132 if (rhs.m_size > 0)
\r
134 CircularListElement<T> * current = rhs.m_head;
\r
137 current = current->GetNext();
\r
138 Add(current->GetData());
\r
140 while ( current != rhs.m_head );
\r
143 template < typename T >
\r
144 inline const CircularList<T>& CircularList<T>::operator=(const CircularList& rhs)
\r
149 if (rhs.m_size > 0)
\r
151 CircularListElement<T> * current = rhs.m_head;
\r
154 current = current->GetNext();
\r
155 Add(current->GetData());
\r
157 while ( current != rhs.m_head );
\r