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 207 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 114 of file Array_Base.inl.

00115     : current_ (0),
00116       array_ (a)
00117 {
00118   // ACE_TRACE ("ACE_Array_Iterator<T>::ACE_Array_Iterator");
00119 }


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 122 of file Array_Base.inl.

References ACE_Array_Iterator< T >::current_.

Referenced by ACE_DLL_Handle::open().

00123 {
00124   // ACE_TRACE ("ACE_Array_Iterator<T>::advance");
00125 
00126   if (this->current_ < array_.size ())
00127     {
00128       ++this->current_;
00129       return 1;
00130     }
00131   else
00132     {
00133       // Already finished iterating.
00134       return 0;
00135     }
00136 }

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 139 of file Array_Base.inl.

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

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

00140 {
00141   ACE_TRACE ("ACE_Array_Iterator<T>::done");
00142 
00143   return this->current_ >= array_.size ();
00144 }

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

Dump the state of an object.

Definition at line 106 of file Array_Base.inl.

00107 {
00108 #if defined (ACE_HAS_DUMP)
00109   // ACE_TRACE ("ACE_Array_Iterator<T>::dump");
00110 #endif /* ACE_HAS_DUMP */
00111 }

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 217 of file Array_Base.cpp.

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

Referenced by ACE_DLL_Handle::open().

00218 {
00219   // ACE_TRACE ("ACE_Array_Iterator<T>::next");
00220 
00221   if (this->done ())
00222     {
00223       item = 0;
00224       return 0;
00225     }
00226   else
00227     {
00228       item = &array_[current_];
00229       return 1;
00230     }
00231 }


Member Data Documentation

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

Declare the dynamic allocation hooks.

Definition at line 230 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 237 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 234 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 Sun Jan 27 12:54:00 2008 for ACE by doxygen 1.3.6