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

ACE_Hash_Map_Const_Iterator_Base_Ex Class Template Reference

Base const iterator for the <ACE_Hash_Map_Manager_Ex>. More...

#include <Hash_Map_Manager_T.h>

Inheritance diagram for ACE_Hash_Map_Const_Iterator_Base_Ex:

Inheritance graph
[legend]
Collaboration diagram for ACE_Hash_Map_Const_Iterator_Base_Ex:

Collaboration graph
[legend]
List of all members.

Public Methods

 ACE_Hash_Map_Const_Iterator_Base_Ex (const ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &mm, int head)
 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_Hash_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_Hash_Map_Entry< EXT_ID,
INT_ID > & 
operator * (void) const
 Returns a reference to the interal element <this> is pointing to. More...

const ACE_Hash_Map_Manager_Ex<
EXT_ID, INT_ID, HASH_KEY,
COMPARE_KEYS, ACE_LOCK > & 
map (void)
 Returns reference the Hash_Map_Manager_Ex that is being iterated over. More...

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

int operator!= (const ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, 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 backward 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_Hash_Map_Manager_Ex<
EXT_ID, INT_ID, HASH_KEY,
COMPARE_KEYS, ACE_LOCK > * 
map_man_
 Map we are iterating over. More...

ssize_t index_
 Keeps track of how far we've advanced in the table. More...

ACE_Hash_Map_Entry< EXT_ID,
INT_ID > * 
next_
 Keeps track of how far we've advanced in a linked list in each table slot. More...


Detailed Description

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
class ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >

Base const iterator for the <ACE_Hash_Map_Manager_Ex>.

This class factors out common code from its templatized subclasses.

Definition at line 540 of file Hash_Map_Manager_T.h.


Constructor & Destructor Documentation

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::ACE_Hash_Map_Const_Iterator_Base_Ex const ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &    mm,
int    head
 

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 458 of file Hash_Map_Manager_T.i.

References ACE_TRACE, next_, ssize_t, ACE_Hash_Map_Manager_Ex::table_, and ACE_Hash_Map_Manager_Ex::total_size_.

00460   : map_man_ (&mm),
00461     index_ (head != 0 ? -1 : (ssize_t) mm.total_size_),
00462     next_ (0)
00463 {
00464   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::ACE_Hash_Map_Const_Iterator_Base_Ex");
00465 
00466   if (mm.table_ != 0)
00467     this->next_ = &mm.table_[head != 0 ? 0 : mm.total_size_ - 1];
00468 }


Member Function Documentation

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE int ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::done void    const
 

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

Definition at line 488 of file Hash_Map_Manager_T.i.

References ACE_TRACE, index_, and map_man_.

00489 {
00490   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::done");
00491 
00492   return this->map_man_->table_ == 0
00493     || this->index_ >= (ssize_t) this->map_man_->total_size_
00494     || this->index_ < 0;
00495 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
void ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::dump_i void    const [protected]
 

Dump the state of an object.

Definition at line 451 of file Hash_Map_Manager_T.cpp.

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

Referenced by ACE_Hash_Map_Const_Iterator_Ex::dump.

00452 {
00453   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::dump_i");
00454 
00455   ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this));
00456   ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("index_ = %d "), this->index_));
00457   ACE_DEBUG ((LM_DEBUG,  ACE_LIB_TEXT ("next_ = %x"), this->next_));
00458   ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP));
00459 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
int ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, 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 462 of file Hash_Map_Manager_T.cpp.

References ACE_TRACE, index_, map_man_, and next_.

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

00463 {
00464   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::forward_i");
00465 
00466   if (this->map_man_->table_ == 0)
00467     return -1;
00468   // Handle initial case specially.
00469   else if (this->index_ == -1)
00470     {
00471       this->index_++;
00472       return this->forward_i ();
00473     }
00474   else if (this->index_ >= (ssize_t) this->map_man_->total_size_)
00475     return 0;
00476 
00477   this->next_ = this->next_->next_;
00478   if (this->next_ == &this->map_man_->table_[this->index_])
00479     {
00480       while (++this->index_ < (ssize_t) this->map_man_->total_size_)
00481         {
00482           this->next_ = this->map_man_->table_[this->index_].next_;
00483           if (this->next_ != &this->map_man_->table_[this->index_])
00484             break;
00485         }
00486     }
00487 
00488   return this->index_ < (ssize_t) this->map_man_->total_size_;
00489 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE const ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map void   
 

Returns reference the Hash_Map_Manager_Ex that is being iterated over.

Definition at line 516 of file Hash_Map_Manager_T.i.

References ACE_TRACE, and map_man_.

00517 {
00518   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::map");
00519   return *this->map_man_;
00520 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE int ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next ACE_Hash_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 471 of file Hash_Map_Manager_T.i.

References ACE_TRACE, index_, map_man_, and next_.

Referenced by operator *.

00472 {
00473   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::next");
00474 
00475   if (this->map_man_->table_ != 0
00476       && this->index_ < (ssize_t) this->map_man_->total_size_
00477       && this->index_ >= 0
00478       && this->next_ != &this->map_man_->table_[this->index_])
00479     {
00480       entry = this->next_;
00481       return 1;
00482     }
00483   else
00484     return 0;
00485 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE ACE_Hash_Map_Entry< EXT_ID, INT_ID > & ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator * void    const
 

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

Definition at line 499 of file Hash_Map_Manager_T.i.

References ACE_ASSERT, ACE_TRACE, and next.

00500 {
00501   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator*");
00502   ACE_Hash_Map_Entry<EXT_ID, INT_ID> *retv = 0;
00503 
00504   int result = this->next (retv);
00505 
00506   ACE_UNUSED_ARG (result);
00507   ACE_ASSERT (result != 0);
00508 
00509   return *retv;
00510 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE int ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator!= const ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &    const
 

Definition at line 532 of file Hash_Map_Manager_T.i.

References ACE_TRACE, index_, map_man_, and next_.

00533 {
00534   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator!=");
00535   return this->next_ != rhs.next_
00536     || this->index_ != rhs.index_
00537     || this->map_man_ != rhs.map_man_;
00538 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE int ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator== const ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &    const
 

Check if two iterators point to the same position.

Definition at line 523 of file Hash_Map_Manager_T.i.

References ACE_TRACE, index_, map_man_, and next_.

00524 {
00525   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator==");
00526   return this->map_man_ == rhs.map_man_
00527     && this->index_ == rhs.index_
00528     && this->next_ == rhs.next_;
00529 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
int ACE_Hash_Map_Const_Iterator_Base_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::reverse_i void    [protected]
 

Move backward 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 492 of file Hash_Map_Manager_T.cpp.

References ACE_TRACE, index_, map_man_, and next_.

Referenced by ACE_Hash_Map_Const_Iterator_Ex::operator--.

00493 {
00494   ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::reverse_i");
00495 
00496   if (this->map_man_->table_ == 0)
00497     return -1;
00498   else if (this->index_ == (ssize_t) this->map_man_->total_size_)
00499     {
00500       this->index_--;
00501       return this->reverse_i ();
00502     }
00503   else if (this->index_ < 0)
00504     return 0;
00505 
00506   this->next_ = this->next_->prev_;
00507   if (this->next_ == &this->map_man_->table_[this->index_])
00508     {
00509       while (--this->index_ >= 0)
00510         {
00511           this->next_ = this->map_man_->table_[this->index_].prev_;
00512           if (this->next_ != &this->map_man_->table_[this->index_])
00513             break;
00514         }
00515     }
00516 
00517   return this->index_ >= 0;
00518 }


Member Data Documentation

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_Hash_Map_Const_Iterator_Base_Ex::ACE_ALLOC_HOOK_DECLARE
 

Declare the dynamic allocation hooks.

Reimplemented in ACE_Hash_Map_Const_Iterator_Ex.

Definition at line 570 of file Hash_Map_Manager_T.h.

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ssize_t ACE_Hash_Map_Const_Iterator_Base_Ex::index_ [protected]
 

Keeps track of how far we've advanced in the table.

Definition at line 588 of file Hash_Map_Manager_T.h.

Referenced by done, forward_i, next, operator!=, operator==, and reverse_i.

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
const ACE_Hash_Map_Manager_Ex<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>* ACE_Hash_Map_Const_Iterator_Base_Ex::map_man_ [protected]
 

Map we are iterating over.

Definition at line 585 of file Hash_Map_Manager_T.h.

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

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_Hash_Map_Entry<EXT_ID, INT_ID>* ACE_Hash_Map_Const_Iterator_Base_Ex::next_ [protected]
 

Keeps track of how far we've advanced in a linked list in each table slot.

Definition at line 592 of file Hash_Map_Manager_T.h.

Referenced by ACE_Hash_Map_Const_Iterator_Base_Ex, forward_i, next, operator!=, operator==, and reverse_i.


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