37 template <
class type_t>
45 template <
class type_t>
50 for (ptr = p.root; ptr != NULL; ptr = ptr->next) append (ptr->
data);
54 template <
class type_t>
66 template <
class type_t>
69 if (root) root->prev = entry;
78 template <
class type_t>
85 for (p = root; p->next != NULL; p = p->next) ;
97 template <
class type_t>
103 template <
class type_t>
108 if (p->data == ptr) {
111 if (root) root->prev = NULL;
114 p->prev->next = p->next;
115 if (p->next) p->next->prev = p->prev;
124 template <
class type_t>
128 if (p->data == ptr) count++;
134 template <
class type_t>
138 if (p->data == ptr)
break;
144 template <
class type_t>
147 for (
int i = 0 ;
i < idx && ptr != NULL; ptr = ptr->next,
i++) ;
148 return ptr ? ptr->
data : NULL;
152 template <
class type_t>
160 template <
class type_t>
163 _first = _last = _current = NULL;
167 template <
class type_t>
172 template <
class type_t>
174 return _ptrlist->size;
178 template <
class type_t>
180 _current = _first = _ptrlist->root;
181 return _current ? _current->data : NULL;
185 template <
class type_t>
187 for (_last = _ptrlist->root; _last && _last->next; _last = _last->next) ;
189 return _current ? _current->data : NULL;
193 template <
class type_t>
195 _current = _current->next;
196 return _current ? _current->data : NULL;
200 template <
class type_t>
202 _current = _current->prev;
203 return _current ? _current->data : NULL;
207 template <
class type_t>
209 return _current ? _current->data : NULL;
213 template <
class type_t>
215 return _first ? _first->data : NULL;
219 template <
class type_t>
221 return _last ? _last->data : NULL;