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

ACE_Hash_Map_Bucket_Iterator Class Template Reference

Forward iterator for the <ACE_Hash_Map_Manager_Ex> which only traverses a particular bucket. The particular bucket is specified by the <EXT_ID> parameter specified in the constructor. More...

#include <Hash_Map_Manager_T.h>

Collaboration diagram for ACE_Hash_Map_Bucket_Iterator:

Collaboration graph
[legend]
List of all members.

Public Methods

 ACE_Hash_Map_Bucket_Iterator (ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &mm, const EXT_ID &ext_id, int tail=0)
ACE_Hash_Map_Bucket_Iterator<
EXT_ID, INT_ID, HASH_KEY,
COMPARE_KEYS, ACE_LOCK > & 
operator++ (void)
 Prefix advance. More...

ACE_Hash_Map_Bucket_Iterator<
EXT_ID, INT_ID, HASH_KEY,
COMPARE_KEYS, ACE_LOCK > 
operator++ (int)
 Postfix advance. More...

ACE_Hash_Map_Bucket_Iterator<
EXT_ID, INT_ID, HASH_KEY,
COMPARE_KEYS, ACE_LOCK > & 
operator-- (void)
 Prefix reverse. More...

ACE_Hash_Map_Bucket_Iterator<
EXT_ID, INT_ID, HASH_KEY,
COMPARE_KEYS, ACE_LOCK > 
operator-- (int)
 Postfix reverse. More...

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

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_Bucket_Iterator< 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_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &) const

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


Protected Attributes

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_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >

Forward iterator for the <ACE_Hash_Map_Manager_Ex> which only traverses a particular bucket. The particular bucket is specified by the <EXT_ID> parameter specified in the constructor.

This class does not perform any internal locking of the <ACE_Hash_Map_Manager_Ex> it is iterating upon since locking is inherently inefficient and/or error-prone within an STL-style iterator. If you require locking, you can explicitly use an <ACE_Guard> or <ACE_Read_Guard> on the <ACE_Hash_Map_Manager_Ex>'s internal lock, which is accessible via its <mutex> method. Note that this iterator cannot be created by calling a method on the map, since this would require adding explicit template instantiations for bucket iterators on platforms with broken templates.

Definition at line 708 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_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::ACE_Hash_Map_Bucket_Iterator ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &    mm,
const EXT_ID &    ext_id,
int    tail = 0
 

Definition at line 681 of file Hash_Map_Manager_T.i.

References ACE_TRACE, forward_i, index_, map_man_, and next_.

00684   : map_man_ (&mm)
00685 {
00686   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::ACE_Hash_Map_Bucket_Iterator");
00687 
00688   this->index_ = this->map_man_->hash (ext_id) % this->map_man_->total_size_;
00689   this->next_ = &this->map_man_->table_[this->index_];
00690 
00691   if (tail == 0)
00692     this->forward_i ();
00693 }


Member Function Documentation

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
int ACE_Hash_Map_Bucket_Iterator< 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 738 of file Hash_Map_Manager_T.i.

References ACE_TRACE, index_, map_man_, and next_.

Referenced by ACE_Hash_Map_Bucket_Iterator, and operator++.

00739 {
00740   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::forward_i");
00741 
00742   this->next_ = this->next_->next_;
00743   return this->next_ != &this->map_man_->table_[this->index_];
00744 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE ACE_Hash_Map_Manager_Ex< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & ACE_Hash_Map_Bucket_Iterator< 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 766 of file Hash_Map_Manager_T.i.

References ACE_TRACE, and map_man_.

00767 {
00768   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::map");
00769   return *this->map_man_;
00770 }

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

References ACE_TRACE, and next_.

00758 {
00759   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator*");
00760 
00761   return *this->next_;
00762 }

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

Definition at line 782 of file Hash_Map_Manager_T.i.

References ACE_TRACE, index_, map_man_, and next_.

00783 {
00784   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator!=");
00785   return this->next_ != rhs.next_
00786     || this->index_ != rhs.index_
00787     || this->map_man_ != rhs.map_man_;
00788 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE ACE_Hash_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > ACE_Hash_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator++ int   
 

Postfix advance.

Definition at line 707 of file Hash_Map_Manager_T.i.

References ACE_TRACE, and forward_i.

00708 {
00709   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (int)");
00710 
00711   ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> retv (*this);
00712   this->forward_i ();
00713   return retv;
00714 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE ACE_Hash_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & ACE_Hash_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator++ void   
 

Prefix advance.

Definition at line 697 of file Hash_Map_Manager_T.i.

References ACE_TRACE, and forward_i.

00698 {
00699   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (void)");
00700 
00701   this->forward_i ();
00702   return *this;
00703 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE ACE_Hash_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > ACE_Hash_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator-- int   
 

Postfix reverse.

Definition at line 728 of file Hash_Map_Manager_T.i.

References ACE_TRACE, and reverse_i.

00729 {
00730   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (int)");
00731 
00732   ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> retv (*this);
00733   this->reverse_i ();
00734   return retv;
00735 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
ACE_INLINE ACE_Hash_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & ACE_Hash_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator-- void   
 

Prefix reverse.

Definition at line 718 of file Hash_Map_Manager_T.i.

References ACE_TRACE, and reverse_i.

00719 {
00720   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (void)");
00721 
00722   this->reverse_i ();
00723   return *this;
00724 }

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

Check if two iterators point to the same position.

Definition at line 773 of file Hash_Map_Manager_T.i.

References ACE_TRACE, index_, map_man_, and next_.

00774 {
00775   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator==");
00776   return this->map_man_ == rhs.map_man_
00777     && this->index_ == rhs.index_
00778     && this->next_ == rhs.next_;
00779 }

template<class EXT_ID, class INT_ID, class HASH_KEY, class COMPARE_KEYS, class ACE_LOCK>
int ACE_Hash_Map_Bucket_Iterator< 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 747 of file Hash_Map_Manager_T.i.

References ACE_TRACE, index_, map_man_, and next_.

Referenced by operator--.

00748 {
00749   ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::reverse_i");
00750 
00751   this->next_ = this->next_->prev_;
00752   return this->next_ != &this->map_man_->table_[this->index_];
00753 }


Member Data Documentation

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

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

Definition at line 754 of file Hash_Map_Manager_T.h.

Referenced by ACE_Hash_Map_Bucket_Iterator, forward_i, operator!=, operator==, and reverse_i.

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

Map we are iterating over.

Definition at line 751 of file Hash_Map_Manager_T.h.

Referenced by ACE_Hash_Map_Bucket_Iterator, forward_i, map, 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_Bucket_Iterator::next_ [protected]
 

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

Definition at line 758 of file Hash_Map_Manager_T.h.

Referenced by ACE_Hash_Map_Bucket_Iterator, forward_i, operator *, operator!=, operator==, and reverse_i.


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