hashtable (hashtable::m_erase): Rename to erase_node.
2005-10-14 Paolo Carlini <pcarlini@suse.de> * include/tr1/hashtable (hashtable::m_erase): Rename to erase_node. (hashtable::erase(iterator), erase(const_iterator)): Adjust. From-SVN: r105401
This commit is contained in:
parent
a93770efeb
commit
76f5f4414f
|
@ -1,3 +1,8 @@
|
||||||
|
2005-10-14 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
|
* include/tr1/hashtable (hashtable::m_erase): Rename to erase_node.
|
||||||
|
(hashtable::erase(iterator), erase(const_iterator)): Adjust.
|
||||||
|
|
||||||
2005-10-13 Richard Earnshaw <richard.earnsahw@arm.com>
|
2005-10-13 Richard Earnshaw <richard.earnsahw@arm.com>
|
||||||
|
|
||||||
PR libstdc++/23926
|
PR libstdc++/23926
|
||||||
|
|
|
@ -329,7 +329,8 @@ namespace Internal
|
||||||
{
|
{
|
||||||
hashtable_iterator tmp(*this);
|
hashtable_iterator tmp(*this);
|
||||||
this->incr();
|
this->incr();
|
||||||
return tmp; }
|
return tmp;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename Value, bool constant_iterators, bool cache>
|
template<typename Value, bool constant_iterators, bool cache>
|
||||||
|
@ -374,7 +375,8 @@ namespace Internal
|
||||||
{
|
{
|
||||||
hashtable_const_iterator tmp(*this);
|
hashtable_const_iterator tmp(*this);
|
||||||
this->incr();
|
this->incr();
|
||||||
return tmp; }
|
return tmp;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|
||||||
|
@ -1169,6 +1171,9 @@ namespace tr1
|
||||||
iterator
|
iterator
|
||||||
insert(const value_type&, std::tr1::false_type);
|
insert(const value_type&, std::tr1::false_type);
|
||||||
|
|
||||||
|
void
|
||||||
|
erase_node(node*, node**);
|
||||||
|
|
||||||
public: // Insert and erase
|
public: // Insert and erase
|
||||||
Insert_Return_Type
|
Insert_Return_Type
|
||||||
insert(const value_type& v)
|
insert(const value_type& v)
|
||||||
|
@ -1191,25 +1196,21 @@ namespace tr1
|
||||||
|
|
||||||
iterator
|
iterator
|
||||||
erase(iterator);
|
erase(iterator);
|
||||||
|
|
||||||
const_iterator
|
const_iterator
|
||||||
erase(const_iterator);
|
erase(const_iterator);
|
||||||
|
|
||||||
size_type
|
size_type
|
||||||
erase(const key_type&);
|
erase(const key_type&);
|
||||||
|
|
||||||
iterator
|
iterator
|
||||||
erase(iterator, iterator);
|
erase(iterator, iterator);
|
||||||
|
|
||||||
const_iterator
|
const_iterator
|
||||||
erase(const_iterator, const_iterator);
|
erase(const_iterator, const_iterator);
|
||||||
|
|
||||||
void
|
void
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
private:
|
|
||||||
// For erase(iterator) and erase(const_iterator).
|
|
||||||
void m_erase(node*, node**);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Set number of buckets to be apropriate for container of n element.
|
// 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);
|
return iterator(new_node, m_buckets + n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For erase(iterator) and erase(const_iterator).
|
||||||
|
template<typename K, typename V,
|
||||||
|
typename A, typename Ex, typename Eq,
|
||||||
|
typename H1, typename H2, typename H, typename RP,
|
||||||
|
bool c, bool ci, bool u>
|
||||||
|
void
|
||||||
|
hashtable<K, V, A, Ex, Eq, H1, H2, H, RP, c, ci, u>::
|
||||||
|
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<typename K, typename V,
|
template<typename K, typename V,
|
||||||
typename A, typename Ex, typename Eq,
|
typename A, typename Ex, typename Eq,
|
||||||
typename H1, typename H2, typename H, typename RP,
|
typename H1, typename H2, typename H, typename RP,
|
||||||
|
@ -1702,7 +1730,7 @@ namespace tr1
|
||||||
{
|
{
|
||||||
iterator result = i;
|
iterator result = i;
|
||||||
++result;
|
++result;
|
||||||
m_erase(i.m_cur_node, i.m_cur_bucket);
|
erase_node(i.m_cur_node, i.m_cur_bucket);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1716,7 +1744,7 @@ namespace tr1
|
||||||
{
|
{
|
||||||
const_iterator result = i;
|
const_iterator result = i;
|
||||||
++result;
|
++result;
|
||||||
m_erase(i.m_cur_node, i.m_cur_bucket);
|
erase_node(i.m_cur_node, i.m_cur_bucket);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1825,32 +1853,6 @@ namespace tr1
|
||||||
__throw_exception_again;
|
__throw_exception_again;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename K, typename V,
|
|
||||||
typename A, typename Ex, typename Eq,
|
|
||||||
typename H1, typename H2, typename H, typename RP,
|
|
||||||
bool c, bool ci, bool u>
|
|
||||||
void
|
|
||||||
hashtable<K, V, A, Ex, Eq, H1, H2, H, RP, c, ci, u>::
|
|
||||||
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
|
} // Namespace std::tr1
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue