hash_set: add iterator and remove method.
* hash-set.h (remove): New function. (iterator): New iteration class for hash_set. From-SVN: r225885
This commit is contained in:
parent
281e728b57
commit
ce7bc090cd
2 changed files with 44 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2015-07-16 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* hash-set.h (remove): New function.
|
||||
(iterator): New iteration class for hash_set.
|
||||
|
||||
2015-07-16 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* genattrtab.c (make_canonical): Add a file_location parameter.
|
||||
|
|
|
@ -59,6 +59,11 @@ public:
|
|||
return !Traits::is_empty (e);
|
||||
}
|
||||
|
||||
void remove (const Key &k)
|
||||
{
|
||||
m_table.remove_elt_with_hash (k, Traits::hash (k));
|
||||
}
|
||||
|
||||
/* Call the call back on each pair of key and value with the passed in
|
||||
arg. */
|
||||
|
||||
|
@ -74,6 +79,40 @@ public:
|
|||
|
||||
size_t elements () const { return m_table.elements (); }
|
||||
|
||||
class iterator
|
||||
{
|
||||
public:
|
||||
explicit iterator (const typename hash_table<Traits>::iterator &iter) :
|
||||
m_iter (iter) {}
|
||||
|
||||
iterator &operator++ ()
|
||||
{
|
||||
++m_iter;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Key
|
||||
operator* ()
|
||||
{
|
||||
return *m_iter;
|
||||
}
|
||||
|
||||
bool
|
||||
operator != (const iterator &other) const
|
||||
{
|
||||
return m_iter != other.m_iter;
|
||||
}
|
||||
|
||||
private:
|
||||
typename hash_table<Traits>::iterator m_iter;
|
||||
};
|
||||
|
||||
/* Standard iterator retrieval methods. */
|
||||
|
||||
iterator begin () const { return iterator (m_table.begin ()); }
|
||||
iterator end () const { return iterator (m_table.end ()); }
|
||||
|
||||
|
||||
private:
|
||||
|
||||
template<typename T, typename U> friend void gt_ggc_mx (hash_set<T, U> *);
|
||||
|
|
Loading…
Add table
Reference in a new issue