Implement an intrusive double linked list. More...
#include <Intrusive_List.h>

| Public Member Functions | |
| ACE_Intrusive_List (void) | |
| ~ACE_Intrusive_List (void) | |
| Destructor. | |
| bool | is_empty (void) const | 
| Returns true if the container is empty, otherwise returns false. | |
| bool | empty (void) const | 
| void | push_front (T *node) | 
| Insert an element at the beginning of the list. | |
| void | push_back (T *node) | 
| Insert an element at the end of the list. | |
| T * | pop_front (void) | 
| Remove the element at the beginning of the list. | |
| T * | pop_back (void) | 
| Remove the element at the end of the list. | |
| T * | head (void) const | 
| Get the element at the head of the queue. | |
| T * | tail (void) const | 
| Get the element at the tail of the queue. | |
| void | remove (T *node) | 
| Remove a element from the list. | |
| void | swap (ACE_Intrusive_List< T > &rhs) | 
| Swap two lists. | |
| void | unsafe_remove (T *node) | 
| Remove a element from the list without checking. | |
| Private Member Functions | |
| Disallow copying | |
| ACE_Intrusive_List (const ACE_Intrusive_List< T > &) | |
| ACE_Intrusive_List< T > & | operator= (const ACE_Intrusive_List< T > &) | 
| Private Attributes | |
| T * | head_ | 
| Head of the list. | |
| T * | tail_ | 
| Tail of the list. | |
Implement an intrusive double linked list.
Intrusive lists assume that the elements they contain the pointers required to build the list. They are useful as light-weight containers and free-lists.
The template argument T must implement the following methods:
A simple way to satisfy the Intrusive_List requirements would be to implement a helper class:
class My_Object : public ACE_Intrusive_List_Node<My_Object> {
 ....
 };
typedef ACE_Intrusive_List<My_Object> My_Object_List;
However, ACE is supported on platforms that would surely get confused using such templates.
| ACE_Intrusive_List< T >::ACE_Intrusive_List | ( | void | ) |  [inline] | 
Constructor. Use user specified allocation strategy if specified.
| ACE_Intrusive_List< T >::~ACE_Intrusive_List | ( | void | ) |  [inline] | 
Destructor.
| ACE_Intrusive_List< T >::ACE_Intrusive_List | ( | const ACE_Intrusive_List< T > & | ) |  [private] | 
| bool ACE_Intrusive_List< T >::empty | ( | void | ) | const  [inline] | 
Returns true if the container is empty, otherwise returns false.
| T * ACE_Intrusive_List< T >::head | ( | void | ) | const  [inline] | 
Get the element at the head of the queue.
| bool ACE_Intrusive_List< T >::is_empty | ( | void | ) | const  [inline] | 
Returns true if the container is empty, otherwise returns false.
| ACE_Intrusive_List<T>& ACE_Intrusive_List< T >::operator= | ( | const ACE_Intrusive_List< T > & | ) |  [private] | 
| T * ACE_Intrusive_List< T >::pop_back | ( | void | ) |  [inline] | 
Remove the element at the end of the list.
| T * ACE_Intrusive_List< T >::pop_front | ( | void | ) |  [inline] | 
Remove the element at the beginning of the list.
| void ACE_Intrusive_List< T >::push_back | ( | T * | node | ) |  [inline] | 
Insert an element at the end of the list.
| void ACE_Intrusive_List< T >::push_front | ( | T * | node | ) |  [inline] | 
Insert an element at the beginning of the list.
| void ACE_Intrusive_List< T >::remove | ( | T * | node | ) |  [inline] | 
Remove a element from the list.
Verify that the element is still in the list before removing it.
| void ACE_Intrusive_List< T >::swap | ( | ACE_Intrusive_List< T > & | rhs | ) |  [inline] | 
Swap two lists.
| T * ACE_Intrusive_List< T >::tail | ( | void | ) | const  [inline] | 
Get the element at the tail of the queue.
| void ACE_Intrusive_List< T >::unsafe_remove | ( | T * | node | ) |  [inline] | 
Remove a element from the list without checking.
No attempts are performed to check if T* really belongs to the list. The effects of removing an invalid element are unspecified
| T* ACE_Intrusive_List< T >::head_  [private] | 
Head of the list.
| T* ACE_Intrusive_List< T >::tail_  [private] | 
Tail of the list.
 1.6.2
 1.6.2