// -*- C++ -*- #include "ace/Guard_T.h" ACE_BEGIN_VERSIONED_NAMESPACE_DECL template ACE_INLINE ACE_Hash_Multi_Map_Manager::ACE_Hash_Multi_Map_Manager (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_Multi_Map_Manager\n"))); } template ACE_INLINE ACE_Hash_Multi_Map_Manager::ACE_Hash_Multi_Map_Manager (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 ("ACE_Hash_Multi_Map_Manager\n"))); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::close () { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->close_i (); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::unbind_all () { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->unbind_all_i (); } template ACE_INLINE ACE_Hash_Multi_Map_Manager::~ACE_Hash_Multi_Map_Manager () { this->close (); } template ACE_INLINE size_t ACE_Hash_Multi_Map_Manager::current_size () const { return this->cur_size_; } template ACE_INLINE size_t ACE_Hash_Multi_Map_Manager::total_size () const { return this->total_size_; } template ACE_INLINE ACE_LOCK & ACE_Hash_Multi_Map_Manager::mutex () { ACE_TRACE ("ACE_Hash_Multi_Map_Manager::mutex"); return this->lock_; } template ACE_INLINE u_long ACE_Hash_Multi_Map_Manager::hash (const EXT_ID &ext_id) { return this->hash_key_ (ext_id); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::equal (const EXT_ID &id1, const EXT_ID &id2) { return this->compare_keys_ (id1, id2); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::bind_i (const EXT_ID &ext_id, const INT_ID &int_id) { ACE_Hash_Multi_Map_Entry *temp = 0; return this->bind_i (ext_id, int_id, temp); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::bind_i (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set) { ACE_Hash_Multi_Map_Entry *temp; return this->bind_i (ext_id, int_id_set, temp); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::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_Multi_Map_Manager::bind (const EXT_ID &ext_id, const INT_ID &int_id, ACE_Hash_Multi_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_Multi_Map_Manager::bind (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->bind_i (ext_id, int_id_set); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::bind (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set, ACE_Hash_Multi_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->bind_i (ext_id, int_id_set, entry); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::trybind_i (const EXT_ID &ext_id, ACE_Unbounded_Set &int_id_set) { ACE_Hash_Multi_Map_Entry *temp; int result = this->trybind_i (ext_id, int_id_set, temp); if (result == 1) int_id_set = temp->int_id_set_; return result; } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::trybind (const EXT_ID &ext_id, ACE_Unbounded_Set &int_id_set) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->trybind_i (ext_id, int_id_set); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::trybind (const EXT_ID &ext_id, ACE_Unbounded_Set &int_id_set, ACE_Hash_Multi_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->trybind_i (ext_id, int_id_set, entry); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::unbind_i (const EXT_ID &ext_id) { ACE_Unbounded_Set int_id_set; return this->unbind_i (ext_id, int_id_set); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::unbind (const EXT_ID &ext_id, ACE_Unbounded_Set &int_id_set) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->unbind_i (ext_id, int_id_set); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::unbind (const EXT_ID &ext_id, const 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_Multi_Map_Manager::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_Multi_Map_Manager::unbind (ACE_Hash_Multi_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_Multi_Map_Manager::find_i (const EXT_ID &ext_id, ACE_Unbounded_Set &int_id_set) { ACE_Hash_Multi_Map_Entry *entry; size_t dummy; if (this->shared_find (ext_id, entry, dummy) == -1) return -1; else { int_id_set = entry->int_id_set_; return 0; } } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::find_i (const EXT_ID &ext_id, const INT_ID &int_id) { ACE_Hash_Multi_Map_Entry *entry; size_t dummy; if (this->shared_find (ext_id, entry, dummy) == -1) return -1; else { if (0 == entry->int_id_set_.find (int_id)) return 0; else return -1; } } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::find_i (const EXT_ID &ext_id) { ACE_Hash_Multi_Map_Entry *entry; size_t dummy; return this->shared_find (ext_id, entry, dummy); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::find (const EXT_ID &ext_id, ACE_Unbounded_Set &int_id_set) const { ACE_Hash_Multi_Map_Manager *nc_this = const_cast *> (this); ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, nc_this->lock_, -1); return nc_this->find_i (ext_id, int_id_set); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::find (const EXT_ID &ext_id, const INT_ID &int_id) const { ACE_Hash_Multi_Map_Manager *nc_this = const_cast *> (this); ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, nc_this->lock_, -1); return nc_this->find_i (ext_id, int_id); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::find (const EXT_ID &ext_id) const { ACE_Hash_Multi_Map_Manager *nc_this = const_cast *> (this); ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, nc_this->lock_, -1); return nc_this->find_i (ext_id); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::find_i (const EXT_ID &ext_id, ACE_Hash_Multi_Map_Entry *&entry) { size_t dummy; return this->shared_find (ext_id, entry, dummy); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::find (const EXT_ID &ext_id, ACE_Hash_Multi_Map_Entry *&entry) const { ACE_Hash_Multi_Map_Manager *nc_this = const_cast *> (this); ACE_READ_GUARD_RETURN (ACE_LOCK, ace_mon, nc_this->lock_, -1); return nc_this->find_i (ext_id, entry); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::rebind_i (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set) { ACE_Hash_Multi_Map_Entry *node; return this->rebind_i (ext_id, int_id_set, node); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::rebind_i (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set, ACE_Unbounded_Set &old_int_id_set) { ACE_Hash_Multi_Map_Entry *node; return this->rebind_i (ext_id, int_id_set, old_int_id_set, node); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::rebind_i (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set, EXT_ID &old_ext_id, ACE_Unbounded_Set &old_int_id_set) { ACE_Hash_Multi_Map_Entry *node; return this->rebind_i (ext_id, int_id_set, old_ext_id, old_int_id_set, node); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::rebind (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id_set); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::rebind (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set, ACE_Hash_Multi_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id_set, entry); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::rebind (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set, ACE_Unbounded_Set &old_int_id_set) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id_set, old_int_id_set); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::rebind (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set, ACE_Unbounded_Set &old_int_id_set, ACE_Hash_Multi_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id_set, old_int_id_set, entry); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::rebind (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set, EXT_ID &old_ext_id, ACE_Unbounded_Set &old_int_id_set) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id_set, old_ext_id, old_int_id_set); } template ACE_INLINE int ACE_Hash_Multi_Map_Manager::rebind (const EXT_ID &ext_id, const ACE_Unbounded_Set &int_id_set, EXT_ID &old_ext_id, ACE_Unbounded_Set &old_int_id_set, ACE_Hash_Multi_Map_Entry *&entry) { ACE_WRITE_GUARD_RETURN (ACE_LOCK, ace_mon, this->lock_, -1); return this->rebind_i (ext_id, int_id_set, old_ext_id, old_int_id_set, entry); } template ACE_INLINE ACE_Hash_Multi_Map_Iterator ACE_Hash_Multi_Map_Manager::begin () { return ACE_Hash_Multi_Map_Iterator (*this); } template ACE_INLINE ACE_Hash_Multi_Map_Iterator ACE_Hash_Multi_Map_Manager::end () { return ACE_Hash_Multi_Map_Iterator (*this, 1); } template ACE_INLINE ACE_Hash_Multi_Map_Reverse_Iterator ACE_Hash_Multi_Map_Manager::rbegin () { return ACE_Hash_Multi_Map_Reverse_Iterator (*this); } template ACE_INLINE ACE_Hash_Multi_Map_Reverse_Iterator ACE_Hash_Multi_Map_Manager::rend () { return ACE_Hash_Multi_Map_Reverse_Iterator (*this, 1); } template ACE_INLINE ACE_Hash_Multi_Map_Entry * ACE_Hash_Multi_Map_Manager::table () { return this->table_; } template ACE_INLINE size_t ACE_Hash_Multi_Map_Manager::cur_size () const { return this->cur_size_; } template ACE_INLINE ACE_Hash_Multi_Map_Iterator_Base::ACE_Hash_Multi_Map_Iterator_Base (ACE_Hash_Multi_Map_Manager &mm, int head) : map_man_ (&mm), index_ (head != 0 ? -1 : (ssize_t) mm.total_size_), next_ (0) { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator_Base::ACE_Hash_Multi_Map_Iterator_Base"); if (mm.table_ != 0) this->next_ = &mm.table_[head != 0 ? 0 : mm.total_size_ - 1]; } template ACE_INLINE int ACE_Hash_Multi_Map_Iterator_Base::next (ACE_Hash_Multi_Map_Entry *&entry) const { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator_Base::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_Multi_Map_Iterator_Base::done () const { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator_Base::done"); return this->map_man_->table_ == 0 || this->index_ >= static_cast (this->map_man_->total_size_) || this->index_ < 0; } template ACE_INLINE ACE_Hash_Multi_Map_Entry & ACE_Hash_Multi_Map_Iterator_Base::operator* () const { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator_Base::operator*"); ACE_Hash_Multi_Map_Entry *retv = 0; int result = this->next (retv); ACE_UNUSED_ARG (result); ACE_ASSERT (result != 0); return *retv; } template ACE_INLINE ACE_Hash_Multi_Map_Entry * ACE_Hash_Multi_Map_Iterator_Base::operator-> () const { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator_Base::operator->"); ACE_Hash_Multi_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_Multi_Map_manager_ex that is being // iterated over. template ACE_INLINE ACE_Hash_Multi_Map_Manager& ACE_Hash_Multi_Map_Iterator_Base::map () { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator_Base::map"); return *this->map_man_; } template ACE_INLINE bool ACE_Hash_Multi_Map_Iterator_Base::operator== (const ACE_Hash_Multi_Map_Iterator_Base &rhs) const { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator_Base::operator=="); return this->map_man_ == rhs.map_man_ && this->index_ == rhs.index_ && this->next_ == rhs.next_; } template ACE_INLINE bool ACE_Hash_Multi_Map_Iterator_Base::operator!= (const ACE_Hash_Multi_Map_Iterator_Base &rhs) const { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator_Base::operator!="); return this->next_ != rhs.next_ || this->index_ != rhs.index_ || this->map_man_ != rhs.map_man_; } template ACE_INLINE ACE_Hash_Multi_Map_Const_Iterator_Base::ACE_Hash_Multi_Map_Const_Iterator_Base (const ACE_Hash_Multi_Map_Manager &mm, int head) : map_man_ (&mm), index_ (head != 0 ? -1 : (ssize_t) mm.total_size_), next_ (0) { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator_Base::ACE_Hash_Multi_Map_Const_Iterator_Base"); if (mm.table_ != 0) this->next_ = &mm.table_[head != 0 ? 0 : mm.total_size_ - 1]; } template ACE_INLINE int ACE_Hash_Multi_Map_Const_Iterator_Base::next (ACE_Hash_Multi_Map_Entry *&entry) const { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator_Base::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_Multi_Map_Const_Iterator_Base::done () const { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator_Base::done"); return this->map_man_->table_ == 0 || this->index_ >= (ssize_t) this->map_man_->total_size_ || this->index_ < 0; } template ACE_INLINE ACE_Hash_Multi_Map_Entry & ACE_Hash_Multi_Map_Const_Iterator_Base::operator* () const { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator_Base::operator*"); ACE_Hash_Multi_Map_Entry *retv = 0; int result = this->next (retv); ACE_UNUSED_ARG (result); ACE_ASSERT (result != 0); return *retv; } template ACE_INLINE ACE_Hash_Multi_Map_Entry * ACE_Hash_Multi_Map_Const_Iterator_Base::operator-> () const { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator_Base::operator->"); ACE_Hash_Multi_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_Multi_Map_manager_ex that is being // iterated over. template ACE_INLINE const ACE_Hash_Multi_Map_Manager& ACE_Hash_Multi_Map_Const_Iterator_Base::map () { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator_Base::map"); return *this->map_man_; } template ACE_INLINE bool ACE_Hash_Multi_Map_Const_Iterator_Base::operator== (const ACE_Hash_Multi_Map_Const_Iterator_Base &rhs) const { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator_Base::operator=="); return this->map_man_ == rhs.map_man_ && this->index_ == rhs.index_ && this->next_ == rhs.next_; } template ACE_INLINE bool ACE_Hash_Multi_Map_Const_Iterator_Base::operator!= (const ACE_Hash_Multi_Map_Const_Iterator_Base &rhs) const { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator_Base::operator!="); return this->next_ != rhs.next_ || this->index_ != rhs.index_ || this->map_man_ != rhs.map_man_; } template ACE_INLINE void ACE_Hash_Multi_Map_Iterator::dump () const { #if defined (ACE_HAS_DUMP) ACE_TRACE ("ACE_Hash_Multi_Map_Iterator::dump"); this->dump_i (); #endif /* ACE_HAS_DUMP */ } template ACE_INLINE ACE_Hash_Multi_Map_Iterator::ACE_Hash_Multi_Map_Iterator (ACE_Hash_Multi_Map_Manager &mm, int tail) : ACE_Hash_Multi_Map_Iterator_Base (mm, tail == 0 ? 1 : 0) { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator::ACE_Hash_Multi_Map_Iterator"); if (tail == 0) this->forward_i (); } template ACE_INLINE int ACE_Hash_Multi_Map_Iterator::advance () { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator::advance"); return this->forward_i (); } template ACE_INLINE ACE_Hash_Multi_Map_Iterator & ACE_Hash_Multi_Map_Iterator::operator++ () { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator::operator++ ()"); this->forward_i (); return *this; } template ACE_INLINE ACE_Hash_Multi_Map_Iterator ACE_Hash_Multi_Map_Iterator::operator++ (int) { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator::operator++ (int)"); ACE_Hash_Multi_Map_Iterator retv (*this); ++*this; return retv; } template ACE_INLINE ACE_Hash_Multi_Map_Iterator & ACE_Hash_Multi_Map_Iterator::operator-- () { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator::operator-- ()"); this->reverse_i (); return *this; } template ACE_INLINE ACE_Hash_Multi_Map_Iterator ACE_Hash_Multi_Map_Iterator::operator-- (int) { ACE_TRACE ("ACE_Hash_Multi_Map_Iterator::operator-- (int)"); ACE_Hash_Multi_Map_Iterator retv (*this); --*this; return retv; } template ACE_INLINE void ACE_Hash_Multi_Map_Const_Iterator::dump () const { #if defined (ACE_HAS_DUMP) ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator::dump"); this->dump_i (); #endif /* ACE_HAS_DUMP */ } template ACE_INLINE ACE_Hash_Multi_Map_Const_Iterator::ACE_Hash_Multi_Map_Const_Iterator (const ACE_Hash_Multi_Map_Manager &mm, int tail) : ACE_Hash_Multi_Map_Const_Iterator_Base (mm, tail == 0 ? 1 : 0) { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator::ACE_Hash_Multi_Map_Const_Iterator"); if (tail == 0) this->forward_i (); } template ACE_INLINE int ACE_Hash_Multi_Map_Const_Iterator::advance () { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator::advance"); return this->forward_i (); } template ACE_INLINE ACE_Hash_Multi_Map_Const_Iterator & ACE_Hash_Multi_Map_Const_Iterator::operator++ () { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator::operator++ ()"); this->forward_i (); return *this; } template ACE_INLINE ACE_Hash_Multi_Map_Const_Iterator ACE_Hash_Multi_Map_Const_Iterator::operator++ (int) { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator::operator++ (int)"); ACE_Hash_Multi_Map_Const_Iterator retv (*this); ++*this; return retv; } template ACE_INLINE ACE_Hash_Multi_Map_Const_Iterator & ACE_Hash_Multi_Map_Const_Iterator::operator-- () { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator::operator-- ()"); this->reverse_i (); return *this; } template ACE_INLINE ACE_Hash_Multi_Map_Const_Iterator ACE_Hash_Multi_Map_Const_Iterator::operator-- (int) { ACE_TRACE ("ACE_Hash_Multi_Map_Const_Iterator::operator-- (int)"); ACE_Hash_Multi_Map_Const_Iterator retv (*this); --*this; return retv; } template ACE_INLINE ACE_Hash_Multi_Map_Bucket_Iterator::ACE_Hash_Multi_Map_Bucket_Iterator (ACE_Hash_Multi_Map_Manager &mm, const EXT_ID &ext_id, int tail) : map_man_ (&mm) { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::ACE_Hash_Multi_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_Multi_Map_Bucket_Iterator & ACE_Hash_Multi_Map_Bucket_Iterator::operator++ () { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::operator++ ()"); this->forward_i (); return *this; } template ACE_INLINE ACE_Hash_Multi_Map_Bucket_Iterator ACE_Hash_Multi_Map_Bucket_Iterator::operator++ (int) { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::operator++ (int)"); ACE_Hash_Multi_Map_Bucket_Iterator retv (*this); ++*this; return retv; } template ACE_INLINE ACE_Hash_Multi_Map_Bucket_Iterator & ACE_Hash_Multi_Map_Bucket_Iterator::operator-- () { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::operator-- ()"); this->reverse_i (); return *this; } template ACE_INLINE ACE_Hash_Multi_Map_Bucket_Iterator ACE_Hash_Multi_Map_Bucket_Iterator::operator-- (int) { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::operator-- (int)"); ACE_Hash_Multi_Map_Bucket_Iterator retv (*this); --*this; return retv; } template int ACE_Hash_Multi_Map_Bucket_Iterator::forward_i () { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::forward_i"); this->next_ = this->next_->next_; return this->next_ != &this->map_man_->table_[this->index_]; } template int ACE_Hash_Multi_Map_Bucket_Iterator::reverse_i () { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::reverse_i"); this->next_ = this->next_->prev_; return this->next_ != &this->map_man_->table_[this->index_]; } template ACE_INLINE ACE_Hash_Multi_Map_Entry & ACE_Hash_Multi_Map_Bucket_Iterator::operator* () const { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::operator*"); return *this->next_; } template ACE_INLINE ACE_Hash_Multi_Map_Entry * ACE_Hash_Multi_Map_Bucket_Iterator::operator-> () const { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::operator->"); return this->next_; } template ACE_INLINE ACE_Hash_Multi_Map_Manager & ACE_Hash_Multi_Map_Bucket_Iterator::map () { ACE_TRACE ("ACE_Hash_Multi_Map_Bucket_Iterator::map"); return *this->map_man_; } template ACE_INLINE bool ACE_Hash_Multi_Map_Bucket_Iterator::operator== (const ACE_Hash_Multi_Map_Bucket_Iterator &rhs) const { ACE_TRACE ("ACE_Hash_Multi_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_Multi_Map_Bucket_Iterator::operator!= (const ACE_Hash_Multi_Map_Bucket_Iterator &rhs) const { ACE_TRACE ("ACE_Hash_Multi_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_Multi_Map_Reverse_Iterator::dump () const { #if defined (ACE_HAS_DUMP) ACE_TRACE ("ACE_Hash_Multi_Map_Reverse_Iterator::dump"); this->dump_i (); #endif /* ACE_HAS_DUMP */ } template ACE_INLINE ACE_Hash_Multi_Map_Reverse_Iterator::ACE_Hash_Multi_Map_Reverse_Iterator (ACE_Hash_Multi_Map_Manager &mm, int head) : ACE_Hash_Multi_Map_Iterator_Base (mm, head) { ACE_TRACE ("ACE_Hash_Multi_Map_Reverse_Iterator::ACE_Hash_Multi_Map_Reverse_Iterator"); if (head == 0) this->reverse_i (); } template ACE_INLINE int ACE_Hash_Multi_Map_Reverse_Iterator::advance () { ACE_TRACE ("ACE_Hash_Multi_Map_Reverse_Iterator::advance"); return this->reverse_i (); } template ACE_INLINE ACE_Hash_Multi_Map_Reverse_Iterator & ACE_Hash_Multi_Map_Reverse_Iterator::operator++ () { ACE_TRACE ("ACE_Hash_Multi_Map_Reverse_Iterator::operator++ ()"); this->reverse_i (); return *this; } template ACE_INLINE ACE_Hash_Multi_Map_Reverse_Iterator ACE_Hash_Multi_Map_Reverse_Iterator::operator++ (int) { ACE_TRACE ("ACE_Hash_Multi_Map_Reverse_Iterator::operator++ (int)"); ACE_Hash_Multi_Map_Reverse_Iterator retv (*this); ++*this; return retv; } template ACE_INLINE ACE_Hash_Multi_Map_Reverse_Iterator & ACE_Hash_Multi_Map_Reverse_Iterator::operator-- () { ACE_TRACE ("ACE_Hash_Multi_Map_Reverse_Iterator::operator-- ()"); this->forward_i (); return *this; } template ACE_INLINE ACE_Hash_Multi_Map_Reverse_Iterator ACE_Hash_Multi_Map_Reverse_Iterator::operator-- (int) { ACE_TRACE ("ACE_Hash_Multi_Map_Reverse_Iterator::operator-- (int)"); ACE_Hash_Multi_Map_Reverse_Iterator retv (*this); --*this; return retv; } ACE_END_VERSIONED_NAMESPACE_DECL