#include <Intrusive_List.h>
Collaboration diagram for ACE_Intrusive_List< T >:
Public Member Functions | |
ACE_Intrusive_List (void) | |
~ACE_Intrusive_List (void) | |
Destructor. | |
int | is_empty (void) const |
Returns 1 if the container is empty, otherwise returns 0. | |
int | 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. | |
Private Member Functions | |
void | remove_i (T *node) |
Remove a element from the list. | |
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. |
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.
Definition at line 58 of file Intrusive_List.h.
|
Constructor. Use user specified allocation strategy if specified. Definition at line 19 of file Intrusive_List.cpp.
|
|
Destructor.
Definition at line 26 of file Intrusive_List.cpp.
00027 { 00028 } |
|
|
|
Returns 1 if the container is empty, otherwise returns 0.
Definition at line 14 of file Intrusive_List.inl. References ACE_Intrusive_List< T >::is_empty().
00015 { 00016 return this->is_empty (); 00017 } |
|
Get the element at the head of the queue.
Definition at line 20 of file Intrusive_List.inl.
00021 { 00022 return this->head_; 00023 } |
|
Returns 1 if the container is empty, otherwise returns 0.
Definition at line 8 of file Intrusive_List.inl. Referenced by ACE_Intrusive_List< T >::empty().
00009 { 00010 return this->head_ == 0; 00011 } |
|
|
|
Remove the element at the end of the list.
Definition at line 77 of file Intrusive_List.cpp. References ACE_Intrusive_List< T >::remove_i().
|
|
Remove the element at the beginning of the list.
Definition at line 67 of file Intrusive_List.cpp. References ACE_Intrusive_List< T >::remove_i().
|
|
Insert an element at the end of the list.
Definition at line 31 of file Intrusive_List.cpp.
|
|
Insert an element at the beginning of the list.
Definition at line 49 of file Intrusive_List.cpp.
|
|
Remove a element from the list. Verify that the element is still in the list before removing it. Definition at line 87 of file Intrusive_List.cpp. References ACE_Intrusive_List< T >::remove_i().
|
|
Remove a element from the list. No attempts are performed to check if T* really belongs to the list. The effects of removing an invalid element are unspecified Definition at line 100 of file Intrusive_List.cpp. Referenced by ACE_Intrusive_List< T >::pop_back(), ACE_Intrusive_List< T >::pop_front(), and ACE_Intrusive_List< T >::remove().
00101 { 00102 if (node->prev () != 0) 00103 node->prev ()->next (node->next ()); 00104 else 00105 this->head_ = node->next (); 00106 00107 if (node->next () != 0) 00108 node->next ()->prev (node->prev ()); 00109 else 00110 this->tail_ = node->prev (); 00111 00112 node->next (0); 00113 node->prev (0); 00114 } |
|
Get the element at the tail of the queue.
Definition at line 26 of file Intrusive_List.inl.
00027 { 00028 return this->tail_; 00029 } |
|
Head of the list.
Definition at line 120 of file Intrusive_List.h. |
|
Tail of the list.
Definition at line 123 of file Intrusive_List.h. |