ACE_Hash_Multi_Map_Manager
which only traverses a particular bucket. The particular bucket is specified by the EXT_ID
parameter specified in the constructor.
More...
#include <Hash_Multi_Map_Manager_T.h>
Public Member Functions | |
ACE_Hash_Multi_Map_Bucket_Iterator (ACE_Hash_Multi_Map_Manager< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &mm, const EXT_ID &ext_id, int tail=0) | |
ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & | operator++ (void) |
Prefix advance. | |
ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > | operator++ (int) |
Postfix advance. | |
ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & | operator-- (void) |
Prefix reverse. | |
ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > | operator-- (int) |
Postfix reverse. | |
ACE_Hash_Multi_Map_Entry< EXT_ID, INT_ID > & | operator * (void) const |
Returns a reference to the interal element this object is pointing to. | |
ACE_Hash_Multi_Map_Entry< EXT_ID, INT_ID > * | operator-> (void) const |
Returns a pointer to the interal element this object is pointing to. | |
ACE_Hash_Multi_Map_Manager< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & | map (void) |
bool | operator== (const ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &) const |
Check if two iterators point to the same position. | |
bool | operator!= (const ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > &) const |
Protected Member Functions | |
int | forward_i (void) |
int | reverse_i (void) |
Protected Attributes | |
ACE_Hash_Multi_Map_Manager< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > * | map_man_ |
Map we are iterating over. | |
ssize_t | index_ |
Keeps track of how far we've advanced in the table. | |
ACE_Hash_Multi_Map_Entry< EXT_ID, INT_ID > * | next_ |
ACE_Hash_Multi_Map_Manager
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_Multi_Map_Manager
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_Multi_Map_Manager's
internal lock, which is accessible via its mutex
method.
Note that a creation method for this new iterator cannot be added to the hash map, since this would require adding explicit template instantiations for bucket iterators on platforms with broken templates.
Definition at line 850 of file Hash_Multi_Map_Manager_T.h.
ACE_INLINE ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::ACE_Hash_Multi_Map_Bucket_Iterator | ( | ACE_Hash_Multi_Map_Manager< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & | mm, | |
const EXT_ID & | ext_id, | |||
int | tail = 0 | |||
) |
Definition at line 806 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::forward_i(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::index_, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map_man_, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next_.
00809 : map_man_ (&mm) 00810 { 00811 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::ACE_Hash_Multi_Map_Bucket_Iterator"); 00812 00813 this->index_ = this->map_man_->hash (ext_id) % this->map_man_->total_size_; 00814 this->next_ = &this->map_man_->table_[this->index_]; 00815 00816 if (tail == 0) 00817 this->forward_i (); 00818 }
int ACE_Hash_Multi_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 863 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::index_, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map_man_, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next_.
Referenced by ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::ACE_Hash_Multi_Map_Bucket_Iterator(), and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator++().
00864 { 00865 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::forward_i"); 00866 00867 this->next_ = this->next_->next_; 00868 return this->next_ != &this->map_man_->table_[this->index_]; 00869 }
ACE_INLINE ACE_Hash_Multi_Map_Manager< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map | ( | void | ) |
Returns reference the Hash_Multi_Map_Manager that is being iterated over.
Definition at line 900 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map_man_.
00901 { 00902 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::map"); 00903 return *this->map_man_; 00904 }
ACE_INLINE ACE_Hash_Multi_Map_Entry< EXT_ID, INT_ID > & ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator * | ( | void | ) | const |
Returns a reference to the interal element this object is pointing to.
Definition at line 882 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next_.
00883 { 00884 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator*"); 00885 00886 return *this->next_; 00887 }
ACE_INLINE bool ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator!= | ( | const ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & | ) | const |
Definition at line 916 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::index_, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map_man_, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next_.
00917 { 00918 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator!="); 00919 return this->next_ != rhs.next_ 00920 || this->index_ != rhs.index_ 00921 || this->map_man_ != rhs.map_man_; 00922 }
ACE_INLINE ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator++ | ( | int | ) |
Postfix advance.
Definition at line 832 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE.
00833 { 00834 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (int)"); 00835 00836 ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> retv (*this); 00837 ++*this; 00838 return retv; 00839 }
ACE_INLINE ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator++ | ( | void | ) |
Prefix advance.
Definition at line 822 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::forward_i().
00823 { 00824 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator++ (void)"); 00825 00826 this->forward_i (); 00827 return *this; 00828 }
ACE_INLINE ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator-- | ( | int | ) |
Postfix reverse.
Definition at line 853 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE.
00854 { 00855 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (int)"); 00856 00857 ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK> retv (*this); 00858 --*this; 00859 return retv; 00860 }
ACE_INLINE ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK > & ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator-- | ( | void | ) |
Prefix reverse.
Definition at line 843 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::reverse_i().
00844 { 00845 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator-- (void)"); 00846 00847 this->reverse_i (); 00848 return *this; 00849 }
ACE_INLINE ACE_Hash_Multi_Map_Entry< EXT_ID, INT_ID > * ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator-> | ( | void | ) | const |
Returns a pointer to the interal element this object is pointing to.
Definition at line 891 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next_.
00892 { 00893 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator->"); 00894 00895 return this->next_; 00896 }
ACE_INLINE bool ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator== | ( | const ACE_Hash_Multi_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 907 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::index_, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map_man_, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next_.
00908 { 00909 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::operator=="); 00910 return this->map_man_ == rhs.map_man_ 00911 && this->index_ == rhs.index_ 00912 && this->next_ == rhs.next_; 00913 }
int ACE_Hash_Multi_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 872 of file Hash_Multi_Map_Manager_T.inl.
References ACE_TRACE, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::index_, ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map_man_, and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next_.
Referenced by ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator--().
00873 { 00874 ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>::reverse_i"); 00875 00876 this->next_ = this->next_->prev_; 00877 return this->next_ != &this->map_man_->table_[this->index_]; 00878 }
ssize_t ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::index_ [protected] |
Keeps track of how far we've advanced in the table.
Definition at line 899 of file Hash_Multi_Map_Manager_T.h.
Referenced by ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::ACE_Hash_Multi_Map_Bucket_Iterator(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::forward_i(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator!=(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator==(), and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::reverse_i().
ACE_Hash_Multi_Map_Manager<EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK>* ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map_man_ [protected] |
Map we are iterating over.
Definition at line 896 of file Hash_Multi_Map_Manager_T.h.
Referenced by ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::ACE_Hash_Multi_Map_Bucket_Iterator(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::forward_i(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::map(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator!=(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator==(), and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::reverse_i().
ACE_Hash_Multi_Map_Entry<EXT_ID, INT_ID>* ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::next_ [protected] |
Keeps track of how far we've advanced in a linked list in each table slot.
Definition at line 903 of file Hash_Multi_Map_Manager_T.h.
Referenced by ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::ACE_Hash_Multi_Map_Bucket_Iterator(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::forward_i(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator *(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator!=(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator->(), ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::operator==(), and ACE_Hash_Multi_Map_Bucket_Iterator< EXT_ID, INT_ID, HASH_KEY, COMPARE_KEYS, ACE_LOCK >::reverse_i().