ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > Class Template Reference

Const iterator for the ACE_Map_Manager. More...

#include <Map_Manager.h>

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

Inheritance graph
[legend]
List of all members.

Public Member Functions

 ACE_Map_Const_Iterator_Base (const 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.
const ACE_Map_Manager< EXT_ID,
INT_ID, ACE_LOCK > & 
map (void) const
bool operator== (const ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &) const
 Check if two iterators point to the same position.
bool operator!= (const ACE_Map_Const_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

const 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_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >

Const iterator for the ACE_Map_Manager.

This class factors out common code from its templatized subclasses.

Definition at line 512 of file Map_Manager.h.


Constructor & Destructor Documentation

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Const_Iterator_Base ( const 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 389 of file Map_Manager.inl.

00390   : map_man_ (&mm),
00391     next_ (this->map_man_->occupied_list_id ())
00392 {
00393 }


Member Function Documentation

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

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

Definition at line 408 of file Map_Manager.inl.

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

00409 {
00410   return this->next_ == this->map_man_->occupied_list_id ();
00411 }

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

Dump the state of an object.

Definition at line 634 of file Map_Manager.cpp.

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

Referenced by ACE_Map_Const_Iterator< EXT_ID, INT_ID, ACE_LOCK >::dump().

00635 {
00636 #if defined (ACE_HAS_DUMP)
00637   ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
00638   ACE_DEBUG ((LM_DEBUG,  ACE_TEXT ("next_ = %d"), this->next_));
00639   ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
00640 #endif /* ACE_HAS_DUMP */
00641 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE int ACE_Map_Const_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 414 of file Map_Manager.inl.

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

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

00415 {
00416 
00417 #if defined (ACE_HAS_LAZY_MAP_MANAGER)
00418 
00419   while (1)
00420     {
00421       // Go to the next item in the list.
00422       this->next_ = this->map_man_->search_structure_[this->next_].next ();
00423 
00424       // Stop if we reach the end.
00425       if (this->done ())
00426         break;
00427 
00428       // Break if we find a non-free slot.
00429       if (!this->map_man_->search_structure_[this->next_].free_)
00430         {
00431           break;
00432         }
00433     }
00434 
00435 #else
00436 
00437   this->next_ = this->map_man_->search_structure_[this->next_].next ();
00438 
00439 #endif /* ACE_HAS_LAZY_MAP_MANAGER */
00440 
00441   return this->next_ != this->map_man_->occupied_list_id ();
00442 }

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

Returns reference the Map_Manager that is being iterated over.

Definition at line 477 of file Map_Manager.inl.

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

00478 {
00479   return *this->map_man_;
00480 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE int ACE_Map_Const_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 396 of file Map_Manager.inl.

References ACE_Map_Entry< EXT_ID, INT_ID >::next_.

Referenced by ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator *().

00397 {
00398   if (this->next_ != this->map_man_->occupied_list_id ())
00399     {
00400       mm = &this->map_man_->search_structure_[this->next_];
00401       return 1;
00402     }
00403   else
00404     return 0;
00405 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_Map_Entry< EXT_ID, INT_ID > & ACE_Map_Const_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 661 of file Map_Manager.cpp.

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

00662 {
00663   // @@ This function should be inlined.  We moved it here to avoid a
00664   // compiler bug in SunCC 4.2.  Once we know the correct patch to fix
00665   // the compiler problem, it should be moved back to .i file again.
00666   ACE_Map_Entry<EXT_ID, INT_ID> *retv = 0;
00667 
00668   int result = this->next (retv);
00669   ACE_ASSERT (result != 0);
00670   ACE_UNUSED_ARG (result);
00671 
00672   return *retv;
00673 }

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

Definition at line 490 of file Map_Manager.inl.

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

00491 {
00492   return !this->operator== (rhs);
00493 }

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

Check if two iterators point to the same position.

Definition at line 483 of file Map_Manager.inl.

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

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

00484 {
00485   return (this->map_man_ == rhs.map_man_ &&
00486           this->next_ == rhs.next_);
00487 }

template<class EXT_ID, class INT_ID, class ACE_LOCK>
ACE_INLINE int ACE_Map_Const_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 445 of file Map_Manager.inl.

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

Referenced by ACE_Map_Const_Iterator< EXT_ID, INT_ID, ACE_LOCK >::operator--().

00446 {
00447 
00448 #if defined (ACE_HAS_LAZY_MAP_MANAGER)
00449 
00450   while (1)
00451     {
00452       // Go to the prev item in the list.
00453       this->next_ = this->map_man_->search_structure_[this->next_].prev ();
00454 
00455       // Stop if we reach the end.
00456       if (this->done ())
00457         break;
00458 
00459       // Break if we find a non-free slot.
00460       if (!this->map_man_->search_structure_[this->next_].free_)
00461         {
00462           break;
00463         }
00464     }
00465 
00466 #else
00467 
00468   this->next_ = this->map_man_->search_structure_[this->next_].prev ();
00469 
00470 #endif /* ACE_HAS_LAZY_MAP_MANAGER */
00471 
00472   return this->next_ != this->map_man_->occupied_list_id ();
00473 }


Member Data Documentation

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

Declare the dynamic allocation hooks.

Reimplemented in ACE_Map_Const_Iterator< EXT_ID, INT_ID, ACE_LOCK >.

Definition at line 541 of file Map_Manager.h.

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

Map we are iterating over.

Definition at line 556 of file Map_Manager.h.

Referenced by ACE_Map_Const_Iterator< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Const_Iterator(), ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::done(), ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::forward_i(), ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::map(), ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator==(), and ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::reverse_i().

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

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

Definition at line 559 of file Map_Manager.h.

Referenced by ACE_Map_Const_Iterator< EXT_ID, INT_ID, ACE_LOCK >::ACE_Map_Const_Iterator(), ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::done(), ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::forward_i(), ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK >::operator==(), and ACE_Map_Const_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