reSIProcate/rutil  9694
Classes | Public Member Functions | Static Public Member Functions | Protected Attributes | Friends
resip::IntrusiveListElement1< P > Class Template Reference

#include <IntrusiveListElement.hxx>

Inheritance diagram for resip::IntrusiveListElement1< P >:
Inheritance graph
[legend]
Collaboration diagram for resip::IntrusiveListElement1< P >:
Collaboration graph
[legend]

List of all members.

Classes

class  iterator

Public Member Functions

 IntrusiveListElement1 ()
virtual ~IntrusiveListElement1 ()
bool empty () const
iterator begin ()
iterator end ()
void push_front (P elem)
void push_back (P elem)
void remove ()

Static Public Member Functions

static P makeList (P elem)

Protected Attributes

mNext
mPrev

Friends

class iterator

Detailed Description

template<class P>
class resip::IntrusiveListElement1< P >

Definition at line 198 of file IntrusiveListElement.hxx.


Constructor & Destructor Documentation

template<class P>
resip::IntrusiveListElement1< P >::IntrusiveListElement1 ( ) [inline]

Definition at line 201 of file IntrusiveListElement.hxx.

         : mNext(0),
           mPrev(0)
      {}
template<class P>
virtual resip::IntrusiveListElement1< P >::~IntrusiveListElement1 ( ) [inline, virtual]

Definition at line 206 of file IntrusiveListElement.hxx.

      {
         remove();
      }

Member Function Documentation

template<class P>
iterator resip::IntrusiveListElement1< P >::begin ( ) [inline]
template<class P>
bool resip::IntrusiveListElement1< P >::empty ( ) const [inline]

Definition at line 222 of file IntrusiveListElement.hxx.

References resip::IntrusiveListElement1< P >::mNext, and resip::IntrusiveListElement1< P >::mPrev.

      {
         assert(mPrev);
         assert(mNext);

         return static_cast<const IntrusiveListElement1<P>*>(mNext) == static_cast<const IntrusiveListElement1<P>*>(this);
      }
template<class P>
iterator resip::IntrusiveListElement1< P >::end ( ) [inline]
template<class P>
static P resip::IntrusiveListElement1< P >::makeList ( elem) [inline, static]

Definition at line 212 of file IntrusiveListElement.hxx.

References resip::IntrusiveListElement1< P >::mNext, and resip::IntrusiveListElement1< P >::mPrev.

      {
         assert(!elem->IntrusiveListElement1<P>::mNext);

         elem->IntrusiveListElement1<P>::mPrev = elem;
         elem->IntrusiveListElement1<P>::mNext = elem;

         return elem;
      }
template<class P>
void resip::IntrusiveListElement1< P >::push_back ( elem) [inline]

Definition at line 300 of file IntrusiveListElement.hxx.

References resip::IntrusiveListElement1< P >::mNext, and resip::IntrusiveListElement1< P >::mPrev.

      {
         assert(mPrev);
         assert(mNext);

         elem->IntrusiveListElement1<P>::mPrev = mPrev;
         elem->IntrusiveListElement1<P>::mNext = static_cast<P>(this);
         
         elem->IntrusiveListElement1<P>::mPrev->IntrusiveListElement1<P>::mNext = elem;
         elem->IntrusiveListElement1<P>::mNext->IntrusiveListElement1<P>::mPrev = elem;
      }
template<class P>
void resip::IntrusiveListElement1< P >::push_front ( elem) [inline]

Definition at line 287 of file IntrusiveListElement.hxx.

References resip::IntrusiveListElement1< P >::mNext, and resip::IntrusiveListElement1< P >::mPrev.

      {
         assert(mPrev);
         assert(mNext);

         elem->IntrusiveListElement1<P>::mNext = mNext;
         elem->IntrusiveListElement1<P>::mPrev = static_cast<P>(this);
         
         elem->IntrusiveListElement1<P>::mNext->IntrusiveListElement1<P>::mPrev = elem;
         elem->IntrusiveListElement1<P>::mPrev->IntrusiveListElement1<P>::mNext = elem;
      }
template<class P>
void resip::IntrusiveListElement1< P >::remove ( ) [inline]

Definition at line 312 of file IntrusiveListElement.hxx.

References resip::IntrusiveListElement1< P >::mNext, and resip::IntrusiveListElement1< P >::mPrev.

      {
         if (mNext)
         {
            // prev  -> this -> next
            //       <-      <-
            //
            // prev -> next
            //      <-
            mNext->IntrusiveListElement1<P>::mPrev = mPrev;
            mPrev->IntrusiveListElement1<P>::mNext = mNext;
         }

         mNext = 0;
         mPrev = 0;
      }

Friends And Related Function Documentation

template<class P>
friend class iterator [friend]

Member Data Documentation

template<class P>
P resip::IntrusiveListElement1< P >::mNext [mutable, protected]
template<class P>
P resip::IntrusiveListElement1< P >::mPrev [mutable, protected]

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