Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

ACE_Map_Const_Iterator_Base Class Template Reference

Const iterator for the ACE_Map_Manager. More...

#include <Map_Manager.h>

Inheritance diagram for ACE_Map_Const_Iterator_Base:

Inheritance graph
[legend]
Collaboration diagram for ACE_Map_Const_Iterator_Base:

Collaboration graph
[legend]
List of all members.

Public Methods

 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. More...

int 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. More...

int done (void) const
 Returns 1 when all items have been seen, else 0. More...

ACE_Map_Entry< EXT_ID, INT_ID > & operator * (void) const
 Returns a reference to the interal element <this> is pointing to. More...

const ACE_Map_Manager< EXT_ID,
INT_ID, ACE_LOCK > & 
map (void) const
 Returns reference the Map_Manager that is being iterated over. More...

int operator== (const ACE_Map_Const_Iterator_Base< EXT_ID, INT_ID, ACE_LOCK > &) const
 Check if two iterators point to the same position. More...

int 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. More...


Protected Methods

int forward_i (void)
 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. More...

int reverse_i (void)
 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. More...

void dump_i (void) const
 Dump the state of an object. More...


Protected Attributes

const ACE_Map_Manager< EXT_ID,
INT_ID, ACE_LOCK > * 
map_man_
 Map we are iterating over. More...

ACE_UINT32 next_
 Keeps track of how far we've advanced... More...


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 507 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 375 of file Map_Manager.i.

00376   : map_man_ (&mm),
00377     next_ (this->map_man_->occupied_list_id ())
00378 {
00379 }


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 394 of file Map_Manager.i.

References map_man_, and next_.

Referenced by ACE_Map_Const_Iterator::ACE_Map_Const_Iterator, forward_i, and reverse_i.

00395 {
00396   return this->next_ == this->map_man_->occupied_list_id ();
00397 }

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 635 of file Map_Manager.cpp.

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

Referenced by ACE_Map_Const_Iterator::dump.

00636 {
00637   ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
00638   ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("next_ = %d"), this->next_));
00639   ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
00640 }

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 400 of file Map_Manager.i.

References done, map_man_, and next_.

Referenced by ACE_Map_Const_Iterator::advance, and ACE_Map_Const_Iterator::operator++.

00401 {
00402 
00403 #if defined (ACE_HAS_LAZY_MAP_MANAGER)
00404 
00405   while (1)
00406     {
00407       // Go to the next item in the list.
00408       this->next_ = this->map_man_->search_structure_[this->next_].next ();
00409 
00410       // Stop if we reach the end.
00411       if (this->done ())
00412         break;
00413 
00414       // Break if we find a non-free slot.
00415       if (!this->map_man_->search_structure_[this->next_].free_)
00416         {
00417           break;
00418         }
00419     }
00420 
00421 #else
00422 
00423   this->next_ = this->map_man_->search_structure_[this->next_].next ();
00424 
00425 #endif /* ACE_HAS_LAZY_MAP_MANAGER */
00426 
00427   return this->next_ != this->map_man_->occupied_list_id ();
00428 }

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 463 of file Map_Manager.i.

References map_man_.

00464 {
00465   return *this->map_man_;
00466 }

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 382 of file Map_Manager.i.

References map_man_, and next_.

Referenced by operator *.

00383 {
00384   if (this->next_ != this->map_man_->occupied_list_id ())
00385     {
00386       mm = &this->map_man_->search_structure_[this->next_];
00387       return 1;
00388     }
00389   else
00390     return 0;
00391 }

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 660 of file Map_Manager.cpp.

References ACE_ASSERT, and next.

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

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

References operator==.

00477 {
00478   return !this->operator== (rhs);
00479 }

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

References map_man_, and next_.

Referenced by operator!=.

00470 {
00471   return (this->map_man_ == rhs.map_man_ &&
00472           this->next_ == rhs.next_);
00473 }

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 431 of file Map_Manager.i.

References done, map_man_, and next_.

Referenced by ACE_Map_Const_Iterator::operator--.

00432 {
00433 
00434 #if defined (ACE_HAS_LAZY_MAP_MANAGER)
00435 
00436   while (1)
00437     {
00438       // Go to the prev item in the list.
00439       this->next_ = this->map_man_->search_structure_[this->next_].prev ();
00440 
00441       // Stop if we reach the end.
00442       if (this->done ())
00443         break;
00444 
00445       // Break if we find a non-free slot.
00446       if (!this->map_man_->search_structure_[this->next_].free_)
00447         {
00448           break;
00449         }
00450     }
00451 
00452 #else
00453 
00454   this->next_ = this->map_man_->search_structure_[this->next_].prev ();
00455 
00456 #endif /* ACE_HAS_LAZY_MAP_MANAGER */
00457 
00458   return this->next_ != this->map_man_->occupied_list_id ();
00459 }


Member Data Documentation

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

Declare the dynamic allocation hooks.

Reimplemented in ACE_Map_Const_Iterator.

Definition at line 536 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::map_man_ [protected]
 

Map we are iterating over.

Definition at line 551 of file Map_Manager.h.

Referenced by ACE_Map_Const_Iterator::ACE_Map_Const_Iterator, done, forward_i, map, next, operator==, and reverse_i.

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

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

Definition at line 554 of file Map_Manager.h.

Referenced by ACE_Map_Const_Iterator::ACE_Map_Const_Iterator, done, forward_i, next, operator==, and reverse_i.


The documentation for this class was generated from the following files:
Generated on Mon Jun 16 12:49:56 2003 for ACE by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002