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]
List of all members.

Public Member Functions

void operator= (const ACE_DLList< T > &l)
 Delegates to ACE_Double_Linked_List.
T * insert_tail (T *new_item)
 Delegates to ACE_Double_Linked_List.
T * insert_head (T *new_item)
 Delegates to ACE_Double_Linked_List.
T * delete_head (void)
 Delegates to ACE_Double_Linked_List.
T * delete_tail (void)
 Delegates to ACE_Double_Linked_List.
int get (T *&item, size_t slot=0)
void dump (void) const
 Delegates to ACE_Double_Linked_List.
int remove (ACE_DLList_Node *n)
 Delegates to ACE_Double_Linked_List.
 ACE_DLList (ACE_Allocator *the_allocator=0)
 Delegates to ACE_Double_Linked_List.
 ACE_DLList (const ACE_DLList< T > &l)
 Delegates to ACE_Double_Linked_List.
 ~ACE_DLList (void)
 Deletes the list starting from the head.

Friends

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

Detailed Description

template<class T>
class ACE_DLList< T >

A double-linked list container class.

This implementation uses ACE_Double_Linked_List to perform the logic behind this container class. It delegates all of its calls to ACE_Double_Linked_List.

Definition at line 1024 of file Containers_T.h.


Constructor & Destructor Documentation

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

Delegates to ACE_Double_Linked_List.

Definition at line 353 of file Containers_T.inl.

00354   : ACE_DLList_Base (alloc)
00355 {
00356 }

template<class T>
ACE_INLINE ACE_DLList< T >::ACE_DLList ( const ACE_DLList< T > &  l  ) 

Delegates to ACE_Double_Linked_List.

Definition at line 359 of file Containers_T.inl.

00360   : ACE_DLList_Base ((ACE_DLList<T> &) l)
00361 {
00362 }

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

Deletes the list starting from the head.

Definition at line 365 of file Containers_T.inl.

00366 {
00367   while (this->delete_head ()) ;
00368 }


Member Function Documentation

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

Delegates to ACE_Double_Linked_List.

Reimplemented from ACE_Double_Linked_List< ACE_DLList_Node >.

Definition at line 1884 of file Containers_T.cpp.

References ACE_DES_FREE, ACE_Double_Linked_List< ACE_DLList_Node >::delete_head(), and ACE_DLList_Node::item_.

01885 {
01886   ACE_DLList_Node *temp1 = ACE_DLList_Base::delete_head ();
01887   T *temp2 = (T *) (temp1 ? temp1->item_ : 0);
01888   ACE_DES_FREE (temp1,
01889                 this->allocator_->free,
01890                 ACE_DLList_Node);
01891 
01892   return temp2;
01893 }

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

Delegates to ACE_Double_Linked_List.

Reimplemented from ACE_Double_Linked_List< ACE_DLList_Node >.

Definition at line 1896 of file Containers_T.cpp.

References ACE_DES_FREE, ACE_Double_Linked_List< ACE_DLList_Node >::delete_tail(), and ACE_DLList_Node::item_.

01897 {
01898   ACE_DLList_Node *temp1 = ACE_DLList_Base::delete_tail ();
01899   T *temp2 = (T *) (temp1 ? temp1->item_ : 0);
01900   ACE_DES_FREE (temp1,
01901                 this->allocator_->free,
01902                 ACE_DLList_Node);
01903   return temp2;
01904 }

template<class T>
ACE_INLINE void ACE_DLList< T >::dump ( void   )  const

Delegates to ACE_Double_Linked_List.

Reimplemented from ACE_Double_Linked_List< ACE_DLList_Node >.

Definition at line 335 of file Containers_T.inl.

References ACE_Double_Linked_List< ACE_DLList_Node >::dump().

00336 {
00337 #if defined (ACE_HAS_DUMP)
00338   ACE_DLList_Base::dump ();
00339 #endif /* ACE_HAS_DUMP */
00340 }

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

Delegates to {ACE_Double_Linked_List}, but where {ACE_Double_Linked_List} returns the node as the item, this get returns the contents of the node in item.

Definition at line 325 of file Containers_T.inl.

References ACE_Double_Linked_List< ACE_DLList_Node >::get(), and ACE_DLList_Node::item_.

00326 {
00327   ACE_DLList_Node *node;
00328   int result = ACE_DLList_Base::get (node, index);
00329   if (result != -1)
00330     item = (T *) node->item_;
00331   return result;
00332 }

template<class T>
T * ACE_DLList< T >::insert_head ( T *  new_item  ) 

Delegates to ACE_Double_Linked_List.

Definition at line 1873 of file Containers_T.cpp.

References ACE_DLList< T >::ACE_DLList_Node, ACE_NEW_MALLOC_RETURN, and ACE_Double_Linked_List< ACE_DLList_Node >::insert_head().

01874 {
01875   ACE_DLList_Node *temp1 = 0;
01876   ACE_NEW_MALLOC_RETURN (temp1,
01877                          (ACE_DLList_Node *) this->allocator_->malloc (sizeof (ACE_DLList_Node)),
01878                          ACE_DLList_Node (new_item), 0);
01879   ACE_DLList_Node *temp2 = ACE_DLList_Base::insert_head (temp1);
01880   return (T *) (temp2 ? temp2->item_ : 0);
01881 }

template<class T>
T * ACE_DLList< T >::insert_tail ( T *  new_item  ) 

Delegates to ACE_Double_Linked_List.

Definition at line 1861 of file Containers_T.cpp.

References ACE_NEW_MALLOC_RETURN, and ACE_Double_Linked_List< ACE_DLList_Node >::insert_tail().

01862 {
01863   ACE_DLList_Node *temp1 = 0;
01864   ACE_NEW_MALLOC_RETURN (temp1,
01865                          static_cast<ACE_DLList_Node *> (this->allocator_->malloc (sizeof (ACE_DLList_Node))),
01866                          ACE_DLList_Node (new_item),
01867                          0);
01868   ACE_DLList_Node *temp2 = ACE_DLList_Base::insert_tail (temp1);
01869   return (T *) (temp2 ? temp2->item_ : 0);
01870 }

template<class T>
ACE_INLINE void ACE_DLList< T >::operator= ( const ACE_DLList< T > &  l  ) 

Delegates to ACE_Double_Linked_List.

Definition at line 319 of file Containers_T.inl.

00320 {
00321   *(ACE_DLList_Base *) this = l;
00322 }

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

Delegates to ACE_Double_Linked_List.

Reimplemented from ACE_Double_Linked_List< ACE_DLList_Node >.

Definition at line 343 of file Containers_T.inl.

References ACE_DES_FREE, and ACE_Double_Linked_List< ACE_DLList_Node >::remove().

00344 {
00345   int result = ACE_DLList_Base::remove (n);
00346   ACE_DES_FREE (n,
00347                 this->allocator_->free,
00348                 ACE_DLList_Node);
00349   return result;
00350 }


Friends And Related Function Documentation

template<class T>
friend class ACE_DLList_Iterator< T > [friend]

Definition at line 1028 of file Containers_T.h.

template<class T>
friend class ACE_DLList_Node [friend]

Definition at line 1026 of file Containers_T.h.

Referenced by ACE_DLList< T >::insert_head().

template<class T>
friend class ACE_DLList_Reverse_Iterator< T > [friend]

Definition at line 1029 of file Containers_T.h.

template<class T>
friend class ACE_Double_Linked_List_Iterator< T > [friend]

Reimplemented from ACE_Double_Linked_List< ACE_DLList_Node >.

Definition at line 1027 of file Containers_T.h.


The documentation for this class was generated from the following files:
Generated on Tue Feb 2 17:35:04 2010 for ACE by  doxygen 1.4.7