ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > Class Template Reference

Iterator for the ACE_Map_Manager. More...

#include <Map_Manager.h>

Inheritance diagram for ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 ACE_Map_Iterator_Base (ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > &mm)
int next (ACE_Map_Entry< EXT_ID, INT_ID > *&next_entry) const
int done (void) const
 Returns 1 when all items have been seen, else 0.
ACE_Map_Entry< EXT_ID, INT_ID > & operator * (void) const
 Returns a reference to the interal element this is pointing to.
ACE_Map_Manager< EXT_ID, INT_ID,
ACE_LOCK > & 
map (void)
bool operator== (const ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &) const
 Check if two iterators point to the same position.
bool operator!= (const ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &) const

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Protected Member Functions

int forward_i (void)
int reverse_i (void)
void dump_i (void) const
 Dump the state of an object.

Protected Attributes

ACE_Map_Manager< EXT_ID, INT_ID,
ACE_LOCK > * 
map_man_
 Map we are iterating over.
ACE_UINT32 next_
 Keeps track of how far we've advanced...

Detailed Description

template<class EXT_ID, class INT_ID, class ACE_LOCK>
class ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >

Iterator for the ACE_Map_Manager.

This class factors out common code from its templatized subclasses.

Definition at line 453 of file Map_Manager.h.


Constructor & Destructor Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Iterator_Base ( ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > &  mm  ) 

Contructor. If head != 0, the iterator constructed is positioned at the head of the map, it is positioned at the end otherwise.

Definition at line 282 of file Map_Manager.inl.

00283   : map_man_ (&mm),
00284     next_ (map_man_->occupied_list_id ())
00285 {
00286 }


Member Function Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE int ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::done ( void   )  const

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

Definition at line 301 of file Map_Manager.inl.

References ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map_man_, and ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::next_.

00302 {
00303   return this->next_ == this->map_man_->occupied_list_id ();
00304 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
void ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::dump_i ( void   )  const [protected]

Dump the state of an object.

Definition at line 624 of file Map_Manager.cpp.

References ACE_BEGIN_DUMP, ACE_DEBUG, ACE_END_DUMP, ACE_TEXT, and LM_DEBUG.

Referenced by ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK >::dump(), and ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK >::dump().

00625 {
00626 #if defined (ACE_HAS_DUMP)
00627   ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
00628   ACE_DEBUG ((LM_DEBUG,  ACE_TEXT ("next_ = %d"), this->next_));
00629   ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
00630 #endif /* ACE_HAS_DUMP */
00631 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE int ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::forward_i ( void   )  [protected]

Move forward by one element in the set. Returns 0 when there's no more item in the set after the current items, else 1.

Definition at line 307 of file Map_Manager.inl.

References ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map_man_, and ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::next_.

Referenced by ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK >::advance(), ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK >::operator++(), and ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK >::operator--().

00308 {
00309 
00310 #if defined (ACE_HAS_LAZY_MAP_MANAGER)
00311 
00312   while (1)
00313     {
00314       // Go to the next item in the list.
00315       this->next_ = this->map_man_->search_structure_[this->next_].next ();
00316 
00317       // Stop if we reach the end.
00318       if (this->done ())
00319         break;
00320 
00321       // Break if we find a non-free slot.
00322       if (!this->map_man_->search_structure_[this->next_].free_)
00323         {
00324           break;
00325         }
00326     }
00327 
00328 #else
00329 
00330   this->next_ = this->map_man_->search_structure_[this->next_].next ();
00331 
00332 #endif /* ACE_HAS_LAZY_MAP_MANAGER */
00333 
00334   return this->next_ != this->map_man_->occupied_list_id ();
00335 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE ACE_Map_Manager< EXT_ID, INT_ID, ACE_LOCK > & ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map ( void   ) 

Returns reference the Map_Manager that is being iterated over.

Definition at line 370 of file Map_Manager.inl.

References ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map_man_.

00371 {
00372   return *this->map_man_;
00373 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE int ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::next ( ACE_Map_Entry< EXT_ID, INT_ID > *&  next_entry  )  const

Pass back the next <entry> that hasn't been seen in the Set. Returns 0 when all items have been seen, else 1.

Definition at line 289 of file Map_Manager.inl.

References ACE_Map_Entry< EXT_ID, INT_ID >::next_.

Referenced by ACE_Based_Pointer_Repository::find(), ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator *(), and ACE_Based_Pointer_Repository::unbind().

00290 {
00291   if (this->next_ != this->map_man_->occupied_list_id ())
00292     {
00293       mm = &this->map_man_->search_structure_[this->next_];
00294       return 1;
00295     }
00296   else
00297     return 0;
00298 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Entry< EXT_ID, INT_ID > & ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator * ( void   )  const

Returns a reference to the interal element this is pointing to.

Definition at line 645 of file Map_Manager.cpp.

References ACE_ASSERT, and ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::next().

00646 {
00647   // @@ This function should be inlined.  We moved it here to avoid a
00648   // compiler bug in SunCC 4.2.  Once we know the correct patch to fix
00649   // the compiler problem, it should be moved back to .i file again.
00650   ACE_Map_Entry<EXT_ID, INT_ID> *retv = 0;
00651 
00652   int result = this->next (retv);
00653   ACE_ASSERT (result != 0);
00654   ACE_UNUSED_ARG (result);
00655 
00656   return *retv;
00657 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE bool ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator!= ( const ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &   )  const

Definition at line 383 of file Map_Manager.inl.

References ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator==().

00384 {
00385   return !this->operator== (rhs);
00386 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE bool ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator== ( const ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &   )  const

Check if two iterators point to the same position.

Definition at line 376 of file Map_Manager.inl.

References ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map_man_, and ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::next_.

Referenced by ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator!=().

00377 {
00378   return (this->map_man_ == rhs.map_man_ &&
00379           this->next_ == rhs.next_);
00380 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE int ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::reverse_i ( void   )  [protected]

Move backware by one element in the set. Returns 0 when there's no more item in the set before the current item, else 1.

Definition at line 338 of file Map_Manager.inl.

References ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map_man_, and ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::next_.

Referenced by ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK >::advance(), ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK >::operator++(), and ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK >::operator--().

00339 {
00340 
00341 #if defined (ACE_HAS_LAZY_MAP_MANAGER)
00342 
00343   while (1)
00344     {
00345       // Go to the prev item in the list.
00346       this->next_ = this->map_man_->search_structure_[this->next_].prev ();
00347 
00348       // Stop if we reach the end.
00349       if (this->done ())
00350         break;
00351 
00352       // Break if we find a non-free slot.
00353       if (!this->map_man_->search_structure_[this->next_].free_)
00354         {
00355           break;
00356         }
00357     }
00358 
00359 #else
00360 
00361   this->next_ = this->map_man_->search_structure_[this->next_].prev ();
00362 
00363 #endif /* ACE_HAS_LAZY_MAP_MANAGER */
00364 
00365   return this->next_ != this->map_man_->occupied_list_id ();
00366 }


Member Data Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

Reimplemented in ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK >, ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK >, ACE_Map_Iterator< KEY, VALUE, ACE_Null_Mutex >, ACE_Map_Iterator< ACE_Active_Map_Manager_Key, VALUE, ACE_Null_Mutex >, ACE_Map_Reverse_Iterator< KEY, VALUE, ACE_Null_Mutex >, and ACE_Map_Reverse_Iterator< ACE_Active_Map_Manager_Key, VALUE, ACE_Null_Mutex >.

Definition at line 482 of file Map_Manager.h.

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Manager<EXT_ID, INT_ID, ACE_LOCK>* ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map_man_ [protected]

Map we are iterating over.

Definition at line 497 of file Map_Manager.h.

Referenced by ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Iterator(), ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Reverse_Iterator(), ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::done(), ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::forward_i(), ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map(), ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator==(), and ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::reverse_i().

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_UINT32 ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::next_ [protected]

Keeps track of how far we've advanced...

Definition at line 500 of file Map_Manager.h.

Referenced by ACE_Map_Iterator< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Iterator(), ACE_Map_Reverse_Iterator< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Reverse_Iterator(), ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::done(), ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::forward_i(), ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator==(), and ACE_Map_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::reverse_i().


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