138 return static_cast<T*
>(this->
the_last);
144 return (elem ==
last()) ? 0 : elem->next();
150 return (elem ==
first()) ? 0 : elem->prev();
163 last()->next() = elem;
164 elem->prev() =
last();
176 elem->next() =
first();
177 first()->prev() = elem;
192 elem->next() = after->next();
193 elem->prev() = after;
194 after->next() = elem->next()->prev() = elem;
224 list.
last()->next() = after->next();
225 list.
first()->prev() = after;
226 after->next() = list.
first();
230 list.
last()->next()->prev() = list.
last();
253 else if (elem ==
last())
257 elem->next()->prev() = elem->prev();
258 elem->prev()->next() = elem->next();
265 if (
first() != 0 && list.first() != 0)
267 assert(
find(list.first()));
268 assert(
find(list.last()));
269 if (
first() == list.first())
271 if (
last() == list.last())
276 else if (
last() == list.last())
277 this->
the_last = list.last()->prev();
281 for (; after->next() != list.first(); after = after->next())
283 if (
last() == list.last())
286 after->next() = list.last()->next();
306 for (elem =
last(); elem; elem =
prev(elem))
308 elem->prev() =
reinterpret_cast<T*
>(
309 reinterpret_cast<char*
>(elem->prev()) + delta);
316 #ifdef ENABLE_CONSISTENCY_CHECKS
317 const T* my_first =
first();
318 const T* my_last =
last();
319 for (
const T * it = my_first; it; it =
next(it))
321 if (it != my_first && it->prev()->next() != it)
324 if (it != my_last && it->next()->prev() != it)
344 :
IsList<T>(pfirst, plast)