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:
Martin Liska 2015-07-16 16:11:52 +02:00 committed by Martin Liska
parent 281e728b57
commit ce7bc090cd
2 changed files with 44 additions and 0 deletions

View file

@ -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.

View file

@ -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> *);