ACE_Array_Iterator< T > Class Template Reference

Implement an iterator over an ACE_Array. More...

#include <Array_Base.h>

List of all members.

Public Member Functions

 ACE_Array_Iterator (ACE_Array_Base< T > &)
int next (T *&next_item)
int advance (void)
int done (void) const
 Returns 1 when all items have been seen, else 0.

void dump (void) const
 Dump the state of an object.


Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.


Private Attributes

size_t current_
 Pointer to the current item in the iteration.

ACE_Array_Base< T > & array_
 Pointer to the Array we're iterating over.


Detailed Description

template<class T>
class ACE_Array_Iterator< T >

Implement an iterator over an ACE_Array.

This iterator is safe in the face of array element deletions. But it is NOT safe if the array is resized (via the ACE_Array assignment operator) during iteration. That would be very odd, and dangerous.

Definition at line 162 of file Array_Base.h.


Constructor & Destructor Documentation

template<class T>
ACE_INLINE ACE_Array_Iterator< T >::ACE_Array_Iterator ACE_Array_Base< T > &   ) 
 

Definition at line 59 of file Array_Base.inl.

00060     : current_ (0),
00061       array_ (a)
00062 {
00063   // ACE_TRACE ("ACE_Array_Iterator<T>::ACE_Array_Iterator");
00064 }


Member Function Documentation

template<class T>
ACE_INLINE int ACE_Array_Iterator< T >::advance void   ) 
 

Move forward by one element in the Array. Returns 0 when all the items in the Array have been seen, else 1.

Definition at line 67 of file Array_Base.inl.

References ACE_Array_Iterator< T >::current_.

Referenced by ACE_DLL_Handle::open().

00068 {
00069   // ACE_TRACE ("ACE_Array_Iterator<T>::advance");
00070 
00071   if (this->current_ < array_.size ())
00072     {
00073       ++this->current_;
00074       return 1;
00075     }
00076   else
00077     {
00078       // Already finished iterating.
00079       return 0;
00080     }
00081 }

template<class T>
ACE_INLINE int ACE_Array_Iterator< T >::done void   )  const
 

Returns 1 when all items have been seen, else 0.

Definition at line 84 of file Array_Base.inl.

References ACE_TRACE, and ACE_Array_Iterator< T >::current_.

Referenced by ACE_Array_Iterator< T >::next().

00085 {
00086   ACE_TRACE ("ACE_Array_Iterator<T>::done");
00087 
00088   return this->current_ >= array_.size ();
00089 }

template<class T>
ACE_INLINE void ACE_Array_Iterator< T >::dump void   )  const
 

Dump the state of an object.

Definition at line 51 of file Array_Base.inl.

00052 {
00053 #if defined (ACE_HAS_DUMP)
00054   // ACE_TRACE ("ACE_Array_Iterator<T>::dump");
00055 #endif /* ACE_HAS_DUMP */
00056 }

template<class T>
int ACE_Array_Iterator< T >::next T *&  next_item  ) 
 

Pass back the that hasn't been seen in the Array. Returns 0 when all items have been seen, else 1.

Definition at line 188 of file Array_Base.cpp.

References ACE_Array_Iterator< T >::current_, and ACE_Array_Iterator< T >::done().

Referenced by ACE_DLL_Handle::open().

00189 {
00190   // ACE_TRACE ("ACE_Array_Iterator<T>::next");
00191 
00192   if (this->done ())
00193     {
00194       item = 0;
00195       return 0;
00196     }
00197   else
00198     {
00199       item = &array_[current_];
00200       return 1;
00201     }
00202 }


Member Data Documentation

template<class T>
ACE_Array_Iterator< T >::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

Definition at line 185 of file Array_Base.h.

template<class T>
ACE_Array_Base<T>& ACE_Array_Iterator< T >::array_ [private]
 

Pointer to the Array we're iterating over.

Definition at line 192 of file Array_Base.h.

template<class T>
size_t ACE_Array_Iterator< T >::current_ [private]
 

Pointer to the current item in the iteration.

Definition at line 189 of file Array_Base.h.

Referenced by ACE_Array_Iterator< T >::advance(), ACE_Array_Iterator< T >::done(), and ACE_Array_Iterator< T >::next().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 11:19:14 2006 for ACE by doxygen 1.3.6