ACE  6.3.3
Public Member Functions | Friends | List of all members
ACE_DLList< T > Class Template Reference

A double-linked list container class. More...

#include <Containers_T.h>

Inheritance diagram for ACE_DLList< T >:
Inheritance graph
[legend]
Collaboration diagram for ACE_DLList< T >:
Collaboration graph
[legend]

Public Member Functions

void operator= (const ACE_DLList< T > &l)
 Delegates to ACE_Double_Linked_List. More...
 
int get (T *&item, size_t slot=0)
 
void dump (void) const
 Delegates to ACE_Double_Linked_List. More...
 
int remove (ACE_DLList_Node *n)
 Delegates to ACE_Double_Linked_List. More...
 
 ACE_DLList (ACE_Allocator *the_allocator=0)
 
 ACE_DLList (const ACE_DLList< T > &l)
 Delegates to ACE_Double_Linked_List. More...
 
 ~ACE_DLList (void)
 
Queue-like insert and delete methods
T * insert_tail (T *new_item)
 
T * insert_head (T *new_item)
 
T * delete_head (void)
 
T * delete_tail (void)
 
- Public Member Functions inherited from ACE_Double_Linked_List< ACE_DLList_Node >
 ACE_Double_Linked_List (ACE_Allocator *the_allocator=0)
 
 ACE_Double_Linked_List (const ACE_Double_Linked_List< ACE_DLList_Node > &)
 Copy constructor. More...
 
void operator= (const ACE_Double_Linked_List< ACE_DLList_Node > &)
 Assignment operator. More...
 
 ~ACE_Double_Linked_List (void)
 Destructor. More...
 
int is_empty (void) const
 Returns 1 if the container is empty, 0 otherwise. More...
 
int is_full (void) const
 The list is unbounded, so this always returns 0. More...
 
ACE_DLList_Nodeinsert_tail (ACE_DLList_Node *new_item)
 
ACE_DLList_Nodeinsert_head (ACE_DLList_Node *new_item)
 
ACE_DLList_Nodedelete_head (void)
 Removes the head of the list and returns a pointer to that item. More...
 
ACE_DLList_Nodedelete_tail (void)
 Removes the tail of the list and returns a pointer to that item. More...
 
void reset (void)
 Empty the list. More...
 
int get (ACE_DLList_Node *&item, size_t slot=0)
 
size_t size (void) const
 The number of items in the queue. More...
 
void dump (void) const
 Dump the state of an object. More...
 
int remove (ACE_DLList_Node *n)
 Use DNode address directly. More...
 

Friends

class ACE_DLList_Node
 
class ACE_Double_Linked_List_Iterator< T >
 
class ACE_DLList_Iterator< T >
 
class ACE_DLList_Reverse_Iterator< T >
 

Additional Inherited Members

- Public Types inherited from ACE_Double_Linked_List< ACE_DLList_Node >
typedef ACE_Double_Linked_List_Iterator< ACE_DLList_NodeITERATOR
 
typedef ACE_Double_Linked_List_Reverse_Iterator< ACE_DLList_NodeREVERSE_ITERATOR
 
- Public Attributes inherited from ACE_Double_Linked_List< ACE_DLList_Node >
 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...
 
- Protected Member Functions inherited from ACE_Double_Linked_List< ACE_DLList_Node >
void delete_nodes (void)
 Delete all the nodes in the list. More...
 
void copy_nodes (const ACE_Double_Linked_List< ACE_DLList_Node > &rhs)
 Copy nodes from {rhs} into this list. More...
 
void init_head (void)
 Setup header pointer. Called after we create the head node in ctor. More...
 
int insert_element (ACE_DLList_Node *new_item, int before=0, ACE_DLList_Node *old_item=0)
 Constant time insert a new item into the list structure. More...
 
int remove_element (ACE_DLList_Node *item)
 Constant time delete an item from the list structure. More...
 
- Protected Attributes inherited from ACE_Double_Linked_List< ACE_DLList_Node >
ACE_DLList_Nodehead_
 Head of the circular double-linked list. More...
 
size_t size_
 Size of this list. More...
 
ACE_Allocatorallocator_
 Allocation Strategy of the queue. More...
 

Detailed Description

template<class T>
class ACE_DLList< T >

A double-linked list container class.

ACE_DLList is a simple, unbounded container implemented using a double-linked list. It is critical to remember that ACE_DLList inherits from ACE_Double_Linked_List, wrapping each T pointer in a ACE_DLList_Node object which satisfies the next/prev pointer requirements imposed by ACE_Double_Linked_List.

Each item inserted to an ACE_DLList is a pointer to a T object. The caller is responsible for lifetime of the T object. ACE_DLList takes no action on the T object; it is not copied on insertion and it is not deleted on removal from the ACE_DLList.

Constructor & Destructor Documentation

template<class T >
ACE_DLList< T >::ACE_DLList ( ACE_Allocator the_allocator = 0)
inline

Constructor.

Parameters
the_allocatorAllocator to use for allocating ACE_DLList_Node objects that wrap T objects for inclusion in the list. If 0, ACE_Allocator::instance() is used.
template<class T >
ACE_DLList< T >::ACE_DLList ( const ACE_DLList< T > &  l)
inline

Delegates to ACE_Double_Linked_List.

template<class T >
ACE_DLList< T >::~ACE_DLList ( void  )
inline

Deletes all ACE_DLList_Node objects in the list starting from the head. No T objects referred to by the deleted ACE_DLList_Node objects are modified or freed. If you desire all of the T objects in the list to be deleted as well, code such as this should be used prior to destroying the ACE_DLList:

... // insert dynamically allocated Items...
Item *p;
while ((p = list.delete_head()) != 0)
delete *p;

Member Function Documentation

template<class T >
T * ACE_DLList< T >::delete_head ( void  )

Removes the item at the head of the list and returns its pointer.

Returns
Pointer to previously inserted item; 0 if the list is empty, an error occurred, or the original pointer inserted was 0.
template<class T >
T * ACE_DLList< T >::delete_tail ( void  )

Removes the item at the tail of the list and returns its pointer.

Returns
Pointer to previously inserted item; 0 if the list is empty, an error occurred, or the original pointer inserted was 0.
template<class T >
void ACE_DLList< T >::dump ( void  ) const
inline

Delegates to ACE_Double_Linked_List.

template<class T >
int ACE_DLList< T >::get ( T *&  item,
size_t  slot = 0 
)
inline

Provide random access to any item in the list.

Parameters
itemReceives a pointer to the T object pointer held at the specified position in the list.
slotPosition in the list to access. The first position is 0.
Return values
0Success; T pointer returned in item.
-1Error, most likely slot is outside the range of the list.
template<class T >
T * ACE_DLList< T >::insert_head ( T *  new_item)

Insert pointer for a new item at the head of the list.

Returns
Pointer to item inserted; 0 on error.
template<class T >
T * ACE_DLList< T >::insert_tail ( T *  new_item)

Insert pointer for a new item at the tail of the list.

Returns
Pointer to item inserted; 0 on error.
template<class T >
void ACE_DLList< T >::operator= ( const ACE_DLList< T > &  l)
inline

Delegates to ACE_Double_Linked_List.

template<class T >
int ACE_DLList< T >::remove ( ACE_DLList_Node n)
inline

Delegates to ACE_Double_Linked_List.

Friends And Related Function Documentation

template<class T>
friend class ACE_DLList_Iterator< T >
friend
template<class T>
friend class ACE_DLList_Node
friend
template<class T>
friend class ACE_DLList_Reverse_Iterator< T >
friend
template<class T>
friend class ACE_Double_Linked_List_Iterator< T >
friend

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