139 return static_cast<T*
>(this->
the_last);
145 return (elem ==
last()) ? 0 : elem->next();
151 return (elem ==
first()) ? 0 : elem->prev();
164 last()->next() = elem;
165 elem->prev() =
last();
177 elem->next() =
first();
178 first()->prev() = elem;
193 elem->next() = after->next();
194 elem->prev() = after;
195 after->next() = elem->next()->prev() = elem;
225 list.
last()->next() = after->next();
226 list.
first()->prev() = after;
227 after->next() = list.
first();
231 list.
last()->next()->prev() = list.
last();
254 else if (elem ==
last())
258 elem->next()->prev() = elem->prev();
259 elem->prev()->next() = elem->next();
266 if (
first() != 0 && list.first() != 0)
268 assert(
find(list.first()));
269 assert(
find(list.last()));
270 if (
first() == list.first())
272 if (
last() == list.last())
277 else if (
last() == list.last())
278 this->
the_last = list.last()->prev();
282 for (; after->next() != list.first(); after = after->next())
284 if (
last() == list.last())
287 after->next() = list.last()->next();
307 for (elem =
last(); elem; elem =
prev(elem))
309 elem->prev() =
reinterpret_cast<T*
>(
310 reinterpret_cast<char*
>(elem->prev()) + delta);
317 #ifdef ENABLE_CONSISTENCY_CHECKS
318 const T* my_first =
first();
319 const T* my_last =
last();
320 for (
const T * it = my_first; it; it =
next(it))
322 if (it != my_first && it->prev()->next() != it)
325 if (it != my_last && it->next()->prev() != it)
344 IdList(T* pfirst = 0, T* plast = 0,
bool pDestroyElements =
false)
345 :
IsList<T>(pfirst, plast, pDestroyElements)