// -*- C++ -*- #include "ace/Guard_T.h" ACE_BEGIN_VERSIONED_NAMESPACE_DECL template ACE_INLINE ACE_Hash_Map_Manager_Ex::ACE_Hash_Map_Manager_Ex (size_t size, ACE_Allocator *table_alloc, ACE_Allocator *entry_alloc) : table_allocator_ (table_alloc), entry_allocator_ (entry_alloc), table_ (0), total_size_ (0), cur_size_ (0) { if (this->open (size, table_alloc, entry_alloc) == -1) ACELIB_ERROR ((LM_ERROR, ACE_TEXT ("ACE_Hash_Map_Manager_Ex\n"))); } template ACE_INLINE ACE_Hash_Map_Manager_Ex::ACE_Hash_Map_Manager_Ex (ACE_Allocator *table_alloc, ACE_Allocator *entry_alloc) : table_allocator_ (table_alloc), entry_allocator_ (entry_alloc), table_ (0), total_size_ (0), cur_size_ (0) { if (this->open (ACE_DEFAULT_MAP_SIZE, table_alloc, entry_alloc) == -1) ACELIB_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("ACE_Hash_Map_Manager_Ex open"))); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::close () { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->close_i (); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::unbind_all () { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->unbind_all_i (); } template ACE_INLINE ACE_Hash_Map_Manager_Ex::~ACE_Hash_Map_Manager_Ex () { this->close (); } template ACE_INLINE size_t ACE_Hash_Map_Manager_Ex::current_size () const { return this->cur_size_; } template ACE_INLINE size_t ACE_Hash_Map_Manager_Ex::total_size () const { return this->total_size_; } template ACE_INLINE ACE_LOCK & ACE_Hash_Map_Manager_Ex::mutex () { ACE_TRACE ("ACE_Hash_Map_Manager_Ex::mutex"); return this->lock_; } template ACE_INLINE u_long ACE_Hash_Map_Manager_Ex::hash (const EXT_ID &ext_id) { return this->hash_key_ (ext_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::equal (const EXT_ID &id1, const EXT_ID &id2) { return this->compare_keys_ (id1, id2); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::bind_i (const EXT_ID &ext_id, const INT_ID &int_id) { ACE_Hash_Map_Entry *temp; return this->bind_i (ext_id, int_id, temp); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::bind (const EXT_ID &ext_id, const INT_ID &int_id) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->bind_i (ext_id, int_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::bind (const EXT_ID &ext_id, const INT_ID &int_id, ACE_Hash_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->bind_i (ext_id, int_id, entry); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::trybind_i (const EXT_ID &ext_id, INT_ID &int_id) { ACE_Hash_Map_Entry *temp = 0; int result = this->trybind_i (ext_id, int_id, temp); if (result == 1) int_id = temp->int_id_; return result; } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::trybind (const EXT_ID &ext_id, INT_ID &int_id) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->trybind_i (ext_id, int_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::trybind (const EXT_ID &ext_id, INT_ID &int_id, ACE_Hash_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->trybind_i (ext_id, int_id, entry); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::unbind_i (const EXT_ID &ext_id) { INT_ID int_id; return this->unbind_i (ext_id, int_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::unbind (const EXT_ID &ext_id, INT_ID &int_id) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->unbind_i (ext_id, int_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::unbind ( typename ACE_Hash_Map_Manager_Ex::iterator pos) { return this->unbind (&(*pos)); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::unbind (const EXT_ID &ext_id) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->unbind_i (ext_id) == -1 ? -1 : 0; } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::unbind (ACE_Hash_Map_Entry *entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->unbind_i (entry) == -1 ? -1 : 0; } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::find_i (const EXT_ID &ext_id, INT_ID &int_id) { ACE_Hash_Map_Entry *entry = 0; size_t dummy; if (this->shared_find (ext_id, entry, dummy) == -1) return -1; else { int_id = entry->int_id_; return 0; } } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::find_i (const EXT_ID &ext_id) { ACE_Hash_Map_Entry *entry; size_t dummy; return this->shared_find (ext_id, entry, dummy); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::find (const EXT_ID &ext_id, INT_ID &int_id) const { ACE_Hash_Map_Manager_Ex *nc_this = const_cast *> (this); ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return nc_this->find_i (ext_id, int_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::find (const EXT_ID &ext_id) const { ACE_Hash_Map_Manager_Ex *nc_this = const_cast *> (this); ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return nc_this->find_i (ext_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::find_i (const EXT_ID &ext_id, ACE_Hash_Map_Entry *&entry) { size_t dummy; return this->shared_find (ext_id, entry, dummy); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::find (const EXT_ID &ext_id, ACE_Hash_Map_Entry *&entry) const { ACE_Hash_Map_Manager_Ex *nc_this = const_cast *> (this); ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return nc_this->find_i (ext_id, entry); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::rebind_i (const EXT_ID &ext_id, const INT_ID &int_id) { ACE_Hash_Map_Entry *node = 0; return this->rebind_i (ext_id, int_id, node); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::rebind_i (const EXT_ID &ext_id, const INT_ID &int_id, INT_ID &old_int_id) { ACE_Hash_Map_Entry *node = 0; return this->rebind_i (ext_id, int_id, old_int_id, node); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::rebind_i (const EXT_ID &ext_id, const INT_ID &int_id, EXT_ID &old_ext_id, INT_ID &old_int_id) { ACE_Hash_Map_Entry *node = 0; return this->rebind_i (ext_id, int_id, old_ext_id, old_int_id, node); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::rebind (const EXT_ID &ext_id, const INT_ID &int_id) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::rebind (const EXT_ID &ext_id, const INT_ID &int_id, ACE_Hash_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id, entry); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::rebind (const EXT_ID &ext_id, const INT_ID &int_id, INT_ID &old_int_id) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id, old_int_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::rebind (const EXT_ID &ext_id, const INT_ID &int_id, INT_ID &old_int_id, ACE_Hash_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id, old_int_id, entry); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::rebind (const EXT_ID &ext_id, const INT_ID &int_id, EXT_ID &old_ext_id, INT_ID &old_int_id) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id, old_ext_id, old_int_id); } template ACE_INLINE int ACE_Hash_Map_Manager_Ex::rebind (const EXT_ID &ext_id, const INT_ID &int_id, EXT_ID &old_ext_id, INT_ID &old_int_id, ACE_Hash_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id, old_ext_id, old_int_id, entry); } template ACE_INLINE typename ACE_Hash_Map_Manager_Ex::iterator ACE_Hash_Map_Manager_Ex::begin () { return iterator (*this); } template ACE_INLINE typename ACE_Hash_Map_Manager_Ex::iterator ACE_Hash_Map_Manager_Ex::end () { return iterator (*this, 1); } template ACE_INLINE typename ACE_Hash_Map_Manager_Ex::const_iterator ACE_Hash_Map_Manager_Ex::begin () const { return const_iterator (*this); } template ACE_INLINE typename ACE_Hash_Map_Manager_Ex::const_iterator ACE_Hash_Map_Manager_Ex::end () const { return const_iterator (*this, 1); } template ACE_INLINE typename ACE_Hash_Map_Manager_Ex::reverse_iterator ACE_Hash_Map_Manager_Ex::rbegin () { return reverse_iterator (*this); } template ACE_INLINE typename ACE_Hash_Map_Manager_Ex::reverse_iterator ACE_Hash_Map_Manager_Ex::rend () { return reverse_iterator (*this, 1); } template ACE_INLINE typename ACE_Hash_Map_Manager_Ex::const_reverse_iterator ACE_Hash_Map_Manager_Ex::rbegin () const { return const_reverse_iterator (*this); } template ACE_INLINE typename ACE_Hash_Map_Manager_Ex::const_reverse_iterator ACE_Hash_Map_Manager_Ex::rend () const { return const_reverse_iterator (*this, 1); } template ACE_INLINE ACE_Hash_Map_Entry * ACE_Hash_Map_Manager_Ex::table () { return this->table_; } template ACE_INLINE void ACE_Hash_Map_Manager_Ex::find ( EXT_ID const &ext_id, typename ACE_Hash_Map_Manager_Ex::iterator & pos) const { ENTRY * entry = 0; size_t index = 0; ACE_Hash_Map_Manager_Ex *nc_this = const_cast *> (this); ACE_READ_GUARD (ACE_LOCK, ace_mon, this->lock_); if (nc_this->shared_find (ext_id, entry, index) != -1) pos = iterator (*nc_this, entry, index); else pos = nc_this->end (); } // --------------------------------------------------------------------- template ACE_INLINE ACE_Hash_Map_Iterator_Base_Ex::ACE_Hash_Map_Iterator_Base_Ex ( ACE_Hash_Map_Manager_Ex &mm, bool head) : map_man_ (&mm), index_ (head ? -1 : (ssize_t) mm.total_size_), next_ (0) { if (mm.table_ != 0) this->next_ = &mm.table_[head ? 0 : mm.total_size_ - 1]; } template ACE_INLINE ACE_Hash_Map_Iterator_Base_Ex::ACE_Hash_Map_Iterator_Base_Ex ( ACE_Hash_Map_Manager_Ex & mm, ACE_Hash_Map_Entry * entry, size_t index) : map_man_ (&mm) , index_ (static_cast (index)) , next_ (entry) { } template ACE_INLINE int ACE_Hash_Map_Iterator_Base_Ex::next (ACE_Hash_Map_Entry *&entry) const { ACE_TRACE ("ACE_Hash_Map_Iterator_Base_Ex::next"); if (this->map_man_->table_ != 0 && this->index_ < static_cast (this->map_man_->total_size_) && this->index_ >= 0 && this->next_ != &this->map_man_->table_[this->index_]) { entry = this->next_; return 1; } else return 0; } template ACE_INLINE int ACE_Hash_Map_Iterator_Base_Ex::done () const { ACE_TRACE ("ACE_Hash_Map_Iterator_Base_Ex::done"); return this->map_man_->table_ == 0 || this->index_ >= static_cast (this->map_man_->total_size_) || this->index_ < 0; } template ACE_INLINE ACE_Hash_Map_Entry & ACE_Hash_Map_Iterator_Base_Ex::operator* () const { ACE_TRACE ("ACE_Hash_Map_Iterator_Base_Ex::operator*"); ACE_Hash_Map_Entry *retv = 0; int result = this->next (retv); ACE_UNUSED_ARG (result); ACE_ASSERT (result != 0); return *retv; } template ACE_INLINE ACE_Hash_Map_Entry * ACE_Hash_Map_Iterator_Base_Ex::operator-> () const { ACE_TRACE ("ACE_Hash_Map_Iterator_Base_Ex::operator->"); ACE_Hash_Map_Entry *retv = 0; int result = this->next (retv); ACE_UNUSED_ARG (result); ACE_ASSERT (result != 0); return retv; } // Returns the reference to the hash_map_manager_ex that is being // iterated over. template ACE_INLINE ACE_Hash_Map_Manager_Ex& ACE_Hash_Map_Iterator_Base_Ex::map () { ACE_TRACE ("ACE_Hash_Map_Iterator_Base_Ex::map"); return *this->map_man_; } template ACE_INLINE bool ACE_Hash_Map_Iterator_Base_Ex::operator== (const ACE_Hash_Map_Iterator_Base_Ex &rhs) const { ACE_TRACE ("ACE_Hash_Map_Iterator_Base_Ex::operator=="); return this->map_man_ == rhs.map_man_ && this->index_ == rhs.index_ && this->next_ == rhs.next_; } template ACE_INLINE bool ACE_Hash_Map_Iterator_Base_Ex::operator!= (const ACE_Hash_Map_Iterator_Base_Ex &rhs) const { ACE_TRACE ("ACE_Hash_Map_Iterator_Base_Ex::operator!="); return this->next_ != rhs.next_ || this->index_ != rhs.index_ || this->map_man_ != rhs.map_man_; } template ACE_INLINE ACE_Hash_Map_Const_Iterator_Base_Ex::ACE_Hash_Map_Const_Iterator_Base_Ex (const ACE_Hash_Map_Manager_Ex &mm, bool head) : map_man_ (&mm), index_ (head ? -1 : (ssize_t) mm.total_size_), next_ (0) { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex::ACE_Hash_Map_Const_Iterator_Base_Ex"); if (mm.table_ != 0) this->next_ = &mm.table_[head ? 0 : mm.total_size_ - 1]; } template ACE_INLINE int ACE_Hash_Map_Const_Iterator_Base_Ex::next (ACE_Hash_Map_Entry *&entry) const { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex::next"); if (this->map_man_->table_ != 0 && this->index_ < (ssize_t) this->map_man_->total_size_ && this->index_ >= 0 && this->next_ != &this->map_man_->table_[this->index_]) { entry = this->next_; return 1; } else return 0; } template ACE_INLINE int ACE_Hash_Map_Const_Iterator_Base_Ex::done () const { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex::done"); return this->map_man_->table_ == 0 || this->index_ >= (ssize_t) this->map_man_->total_size_ || this->index_ < 0; } template ACE_INLINE ACE_Hash_Map_Entry & ACE_Hash_Map_Const_Iterator_Base_Ex::operator* () const { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex::operator*"); ACE_Hash_Map_Entry *retv = 0; int result = this->next (retv); ACE_UNUSED_ARG (result); ACE_ASSERT (result != 0); return *retv; } template ACE_INLINE ACE_Hash_Map_Entry * ACE_Hash_Map_Const_Iterator_Base_Ex::operator-> () const { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex::operator->"); ACE_Hash_Map_Entry *retv = 0; int result = this->next (retv); ACE_UNUSED_ARG (result); ACE_ASSERT (result != 0); return retv; } // Returns the reference to the hash_map_manager_ex that is being // iterated over. template ACE_INLINE const ACE_Hash_Map_Manager_Ex& ACE_Hash_Map_Const_Iterator_Base_Ex::map () { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex::map"); return *this->map_man_; } template ACE_INLINE bool ACE_Hash_Map_Const_Iterator_Base_Ex::operator== (const ACE_Hash_Map_Const_Iterator_Base_Ex &rhs) const { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex::operator=="); return this->map_man_ == rhs.map_man_ && this->index_ == rhs.index_ && this->next_ == rhs.next_; } template ACE_INLINE bool ACE_Hash_Map_Const_Iterator_Base_Ex::operator!= (const ACE_Hash_Map_Const_Iterator_Base_Ex &rhs) const { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Base_Ex::operator!="); return this->next_ != rhs.next_ || this->index_ != rhs.index_ || this->map_man_ != rhs.map_man_; } template ACE_INLINE void ACE_Hash_Map_Iterator_Ex::dump () const { #if defined (ACE_HAS_DUMP) ACE_TRACE ("ACE_Hash_Map_Iterator_Ex::dump"); this->dump_i (); #endif /* ACE_HAS_DUMP */ } template ACE_INLINE ACE_Hash_Map_Iterator_Ex::ACE_Hash_Map_Iterator_Ex (ACE_Hash_Map_Manager_Ex &mm, int tail) : ACE_Hash_Map_Iterator_Base_Ex (mm, tail == 0 ? 1 : 0) { ACE_TRACE ("ACE_Hash_Map_Iterator_Ex::ACE_Hash_Map_Iterator_Ex"); if (tail == 0) this->forward_i (); } template ACE_INLINE ACE_Hash_Map_Iterator_Ex::ACE_Hash_Map_Iterator_Ex ( ACE_Hash_Map_Manager_Ex & mm, ACE_Hash_Map_Entry * entry, size_t index) : ACE_Hash_Map_Iterator_Base_Ex (mm, entry, index) { } template ACE_INLINE int ACE_Hash_Map_Iterator_Ex::advance () { ACE_TRACE ("ACE_Hash_Map_Iterator_Ex::advance"); return this->forward_i (); } template ACE_INLINE ACE_Hash_Map_Iterator_Ex & ACE_Hash_Map_Iterator_Ex::operator++ () { ACE_TRACE ("ACE_Hash_Map_Iterator_Ex::operator++ ()"); this->forward_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Iterator_Ex ACE_Hash_Map_Iterator_Ex::operator++ (int) { ACE_TRACE ("ACE_Hash_Map_Iterator_Ex::operator++ (int)"); ACE_Hash_Map_Iterator_Ex retv (*this); ++*this; return retv; } template ACE_INLINE ACE_Hash_Map_Iterator_Ex & ACE_Hash_Map_Iterator_Ex::operator-- () { ACE_TRACE ("ACE_Hash_Map_Iterator_Ex::operator-- ()"); this->reverse_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Iterator_Ex ACE_Hash_Map_Iterator_Ex::operator-- (int) { ACE_TRACE ("ACE_Hash_Map_Iterator_Ex::operator-- (int)"); ACE_Hash_Map_Iterator_Ex retv (*this); --*this; return retv; } template ACE_INLINE void ACE_Hash_Map_Const_Iterator_Ex::dump () const { #if defined (ACE_HAS_DUMP) ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Ex::dump"); this->dump_i (); #endif /* ACE_HAS_DUMP */ } template ACE_INLINE ACE_Hash_Map_Const_Iterator_Ex::ACE_Hash_Map_Const_Iterator_Ex (const ACE_Hash_Map_Manager_Ex &mm, int tail) : ACE_Hash_Map_Const_Iterator_Base_Ex (mm, tail == 0 ? 1 : 0) { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Ex::ACE_Hash_Map_Const_Iterator_Ex"); if (tail == 0) this->forward_i (); } template ACE_INLINE int ACE_Hash_Map_Const_Iterator_Ex::advance () { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Ex::advance"); return this->forward_i (); } template ACE_INLINE ACE_Hash_Map_Const_Iterator_Ex & ACE_Hash_Map_Const_Iterator_Ex::operator++ () { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Ex::operator++ ()"); this->forward_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Const_Iterator_Ex ACE_Hash_Map_Const_Iterator_Ex::operator++ (int) { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Ex::operator++ (int)"); ACE_Hash_Map_Const_Iterator_Ex retv (*this); ++*this; return retv; } template ACE_INLINE ACE_Hash_Map_Const_Iterator_Ex & ACE_Hash_Map_Const_Iterator_Ex::operator-- () { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Ex::operator-- ()"); this->reverse_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Const_Iterator_Ex ACE_Hash_Map_Const_Iterator_Ex::operator-- (int) { ACE_TRACE ("ACE_Hash_Map_Const_Iterator_Ex::operator-- (int)"); ACE_Hash_Map_Const_Iterator_Ex retv (*this); --*this; return retv; } template ACE_INLINE ACE_Hash_Map_Bucket_Iterator::ACE_Hash_Map_Bucket_Iterator (ACE_Hash_Map_Manager_Ex &mm, const EXT_ID &ext_id, int tail) : map_man_ (&mm) { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::ACE_Hash_Map_Bucket_Iterator"); this->index_ = this->map_man_->hash (ext_id) % this->map_man_->total_size_; this->next_ = &this->map_man_->table_[this->index_]; if (tail == 0) this->forward_i (); } template ACE_INLINE ACE_Hash_Map_Bucket_Iterator & ACE_Hash_Map_Bucket_Iterator::operator++ () { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::operator++ ()"); this->forward_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Bucket_Iterator ACE_Hash_Map_Bucket_Iterator::operator++ (int) { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::operator++ (int)"); ACE_Hash_Map_Bucket_Iterator retv (*this); ++*this; return retv; } template ACE_INLINE ACE_Hash_Map_Bucket_Iterator & ACE_Hash_Map_Bucket_Iterator::operator-- () { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::operator-- ()"); this->reverse_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Bucket_Iterator ACE_Hash_Map_Bucket_Iterator::operator-- (int) { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::operator-- (int)"); ACE_Hash_Map_Bucket_Iterator retv (*this); --*this; return retv; } template int ACE_Hash_Map_Bucket_Iterator::forward_i () { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::forward_i"); this->next_ = this->next_->next_; return this->next_ != &this->map_man_->table_[this->index_]; } template int ACE_Hash_Map_Bucket_Iterator::reverse_i () { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::reverse_i"); this->next_ = this->next_->prev_; return this->next_ != &this->map_man_->table_[this->index_]; } template ACE_INLINE ACE_Hash_Map_Entry & ACE_Hash_Map_Bucket_Iterator::operator* () const { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::operator*"); return *this->next_; } template ACE_INLINE ACE_Hash_Map_Entry * ACE_Hash_Map_Bucket_Iterator::operator-> () const { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::operator->"); return this->next_; } template ACE_INLINE ACE_Hash_Map_Manager_Ex & ACE_Hash_Map_Bucket_Iterator::map () { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::map"); return *this->map_man_; } template ACE_INLINE bool ACE_Hash_Map_Bucket_Iterator::operator== (const ACE_Hash_Map_Bucket_Iterator &rhs) const { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::operator=="); return this->map_man_ == rhs.map_man_ && this->index_ == rhs.index_ && this->next_ == rhs.next_; } template ACE_INLINE bool ACE_Hash_Map_Bucket_Iterator::operator!= (const ACE_Hash_Map_Bucket_Iterator &rhs) const { ACE_TRACE ("ACE_Hash_Map_Bucket_Iterator::operator!="); return this->next_ != rhs.next_ || this->index_ != rhs.index_ || this->map_man_ != rhs.map_man_; } template ACE_INLINE void ACE_Hash_Map_Reverse_Iterator_Ex::dump () const { #if defined (ACE_HAS_DUMP) ACE_TRACE ("ACE_Hash_Map_Reverse_Iterator_Ex::dump"); this->dump_i (); #endif /* ACE_HAS_DUMP */ } template ACE_INLINE ACE_Hash_Map_Reverse_Iterator_Ex::ACE_Hash_Map_Reverse_Iterator_Ex (ACE_Hash_Map_Manager_Ex &mm, bool head) : ACE_Hash_Map_Iterator_Base_Ex (mm, head) { ACE_TRACE ("ACE_Hash_Map_Reverse_Iterator_Ex::ACE_Hash_Map_Reverse_Iterator_Ex"); if (!head) this->reverse_i (); } template ACE_INLINE int ACE_Hash_Map_Reverse_Iterator_Ex::advance () { ACE_TRACE ("ACE_Hash_Map_Reverse_Iterator_Ex::advance"); return this->reverse_i (); } template ACE_INLINE ACE_Hash_Map_Reverse_Iterator_Ex & ACE_Hash_Map_Reverse_Iterator_Ex::operator++ () { ACE_TRACE ("ACE_Hash_Map_Reverse_Iterator_Ex::operator++ ()"); this->reverse_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Reverse_Iterator_Ex ACE_Hash_Map_Reverse_Iterator_Ex::operator++ (int) { ACE_TRACE ("ACE_Hash_Map_Reverse_Iterator_Ex::operator++ (int)"); ACE_Hash_Map_Reverse_Iterator_Ex retv (*this); ++*this; return retv; } template ACE_INLINE ACE_Hash_Map_Reverse_Iterator_Ex & ACE_Hash_Map_Reverse_Iterator_Ex::operator-- () { ACE_TRACE ("ACE_Hash_Map_Reverse_Iterator_Ex::operator-- ()"); this->forward_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Reverse_Iterator_Ex ACE_Hash_Map_Reverse_Iterator_Ex::operator-- (int) { ACE_TRACE ("ACE_Hash_Map_Reverse_Iterator_Ex::operator-- (int)"); ACE_Hash_Map_Reverse_Iterator_Ex retv (*this); --*this; return retv; } template ACE_INLINE void ACE_Hash_Map_Const_Reverse_Iterator_Ex::dump () const { #if defined (ACE_HAS_DUMP) ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex::dump"); this->dump_i (); #endif /* ACE_HAS_DUMP */ } template ACE_INLINE ACE_Hash_Map_Const_Reverse_Iterator_Ex::ACE_Hash_Map_Const_Reverse_Iterator_Ex (const ACE_Hash_Map_Manager_Ex &mm, bool head) : ACE_Hash_Map_Const_Iterator_Base_Ex (mm, head) { ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex::ACE_Hash_Map_Const_Reverse_Iterator_Ex"); if (!head) this->reverse_i (); } template ACE_INLINE int ACE_Hash_Map_Const_Reverse_Iterator_Ex::advance () { ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex::advance"); return this->reverse_i (); } template ACE_INLINE ACE_Hash_Map_Const_Reverse_Iterator_Ex & ACE_Hash_Map_Const_Reverse_Iterator_Ex::operator++ () { ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex::operator++ ()"); this->reverse_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Const_Reverse_Iterator_Ex ACE_Hash_Map_Const_Reverse_Iterator_Ex::operator++ (int) { ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex::operator++ (int)"); ACE_Hash_Map_Const_Reverse_Iterator_Ex retv (*this); ++*this; return retv; } template ACE_INLINE ACE_Hash_Map_Const_Reverse_Iterator_Ex & ACE_Hash_Map_Const_Reverse_Iterator_Ex::operator-- () { ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex::operator-- ()"); this->forward_i (); return *this; } template ACE_INLINE ACE_Hash_Map_Const_Reverse_Iterator_Ex ACE_Hash_Map_Const_Reverse_Iterator_Ex::operator-- (int) { ACE_TRACE ("ACE_Hash_Map_Const_Reverse_Iterator_Ex::operator-- (int)"); ACE_Hash_Map_Const_Reverse_Iterator_Ex retv (*this); --*this; return retv; } template ACE_Hash_Map_Manager::ACE_Hash_Map_Manager (ACE_Allocator *table_alloc, ACE_Allocator *entry_alloc) : ACE_Hash_Map_Manager_Ex, ACE_Equal_To, ACE_LOCK> (table_alloc, entry_alloc) { } template ACE_Hash_Map_Manager::ACE_Hash_Map_Manager (size_t size, ACE_Allocator *table_alloc, ACE_Allocator *entry_alloc) : ACE_Hash_Map_Manager_Ex, ACE_Equal_To, ACE_LOCK> (size, table_alloc, entry_alloc) { } template int ACE_Hash_Map_Manager::equal (const EXT_ID &id1, const EXT_ID &id2) { return ACE_Hash_Map_Manager_Ex, ACE_Equal_To, ACE_LOCK>::equal (id1, id2); } template u_long ACE_Hash_Map_Manager::hash (const EXT_ID &ext_id) { return ACE_Hash_Map_Manager_Ex, ACE_Equal_To, ACE_LOCK>::hash (ext_id); } template ACE_Hash_Map_Iterator::ACE_Hash_Map_Iterator (ACE_Hash_Map_Manager &mm, int tail) : ACE_Hash_Map_Iterator_Ex, ACE_Equal_To, ACE_LOCK> (mm, tail) { } template ACE_Hash_Map_Iterator::ACE_Hash_Map_Iterator (const ACE_Hash_Map_Iterator_Ex, ACE_Equal_To, ACE_LOCK> &base) : ACE_Hash_Map_Iterator_Ex, ACE_Equal_To, ACE_LOCK> (base) { } template ACE_Hash_Map_Iterator & ACE_Hash_Map_Iterator::operator= (const ACE_Hash_Map_Iterator_Ex, ACE_Equal_To, ACE_LOCK> &rhs) { if (this != &rhs) { ACE_Hash_Map_Iterator_Ex, ACE_Equal_To, ACE_LOCK> &base = *this; base = rhs; } return *this; } template ACE_Hash_Map_Const_Iterator::ACE_Hash_Map_Const_Iterator (const ACE_Hash_Map_Manager &mm, int tail) : ACE_Hash_Map_Const_Iterator_Ex, ACE_Equal_To, ACE_LOCK> (mm, tail) { } template ACE_Hash_Map_Const_Iterator::ACE_Hash_Map_Const_Iterator (const ACE_Hash_Map_Const_Iterator_Ex, ACE_Equal_To, ACE_LOCK> &base) : ACE_Hash_Map_Const_Iterator_Ex, ACE_Equal_To, ACE_LOCK> (base) { } template ACE_Hash_Map_Const_Iterator & ACE_Hash_Map_Const_Iterator::operator= (const ACE_Hash_Map_Const_Iterator_Ex, ACE_Equal_To, ACE_LOCK> &rhs) { if (this != &rhs) { ACE_Hash_Map_Const_Iterator_Ex, ACE_Equal_To, ACE_LOCK> &base = *this; base = rhs; } return *this; } template ACE_Hash_Map_Reverse_Iterator::ACE_Hash_Map_Reverse_Iterator (ACE_Hash_Map_Manager &mm, bool head) : ACE_Hash_Map_Reverse_Iterator_Ex, ACE_Equal_To, ACE_LOCK> (mm, head) { } template ACE_Hash_Map_Reverse_Iterator::ACE_Hash_Map_Reverse_Iterator (const ACE_Hash_Map_Reverse_Iterator_Ex, ACE_Equal_To, ACE_LOCK> &base) : ACE_Hash_Map_Reverse_Iterator_Ex, ACE_Equal_To, ACE_LOCK> (base) { } template ACE_Hash_Map_Reverse_Iterator & ACE_Hash_Map_Reverse_Iterator::operator= (const ACE_Hash_Map_Reverse_Iterator_Ex, ACE_Equal_To, ACE_LOCK> &rhs) { ACE_Hash_Map_Reverse_Iterator_Ex, ACE_Equal_To, ACE_LOCK> &base = *this; base = rhs; return *this; } ACE_END_VERSIONED_NAMESPACE_DECL