diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d4a25a179aa..257e7289840 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2005-10-14 Paolo Carlini + + * include/tr1/hashtable (hashtable::m_erase): Rename to erase_node. + (hashtable::erase(iterator), erase(const_iterator)): Adjust. + 2005-10-13 Richard Earnshaw PR libstdc++/23926 diff --git a/libstdc++-v3/include/tr1/hashtable b/libstdc++-v3/include/tr1/hashtable index 36e33b0f418..0add0e3a966 100644 --- a/libstdc++-v3/include/tr1/hashtable +++ b/libstdc++-v3/include/tr1/hashtable @@ -329,7 +329,8 @@ namespace Internal { hashtable_iterator tmp(*this); this->incr(); - return tmp; } + return tmp; + } }; template @@ -374,7 +375,8 @@ namespace Internal { hashtable_const_iterator tmp(*this); this->incr(); - return tmp; } + return tmp; + } }; } // namespace Internal @@ -1169,6 +1171,9 @@ namespace tr1 iterator insert(const value_type&, std::tr1::false_type); + void + erase_node(node*, node**); + public: // Insert and erase Insert_Return_Type insert(const value_type& v) @@ -1191,25 +1196,21 @@ namespace tr1 iterator erase(iterator); - + const_iterator erase(const_iterator); - + size_type erase(const key_type&); iterator erase(iterator, iterator); - + const_iterator erase(const_iterator, const_iterator); void clear(); - - private: - // For erase(iterator) and erase(const_iterator). - void m_erase(node*, node**); public: // Set number of buckets to be apropriate for container of n element. @@ -1673,6 +1674,33 @@ namespace tr1 return iterator(new_node, m_buckets + n); } + // For erase(iterator) and erase(const_iterator). + template + void + hashtable:: + erase_node(node* p, node** b) + { + node* cur = *b; + if (cur == p) + *b = cur->m_next; + else + { + node* next = cur->m_next; + while (next != p) + { + cur = next; + next = cur->m_next; + } + cur->m_next = next->m_next; + } + + m_deallocate_node (p); + --m_element_count; + } + template - void - hashtable:: - m_erase(node* p, node** b) - { - node* cur = *b; - if (cur == p) - *b = cur->m_next; - else - { - node* next = cur->m_next; - while (next != p) - { - cur = next; - next = cur->m_next; - } - cur->m_next = next->m_next; - } - - m_deallocate_node (p); - --m_element_count; - } } } // Namespace std::tr1