util/set: add a set_clear function

Clear a set back to the state of having zero entries.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Scott D Phillips 2018-05-02 09:01:02 -07:00
parent affe63b1da
commit 5c075b0855
2 changed files with 26 additions and 0 deletions

View File

@ -155,6 +155,29 @@ _mesa_set_destroy(struct set *ht, void (*delete_function)(struct set_entry *entr
ralloc_free(ht);
}
/**
* Clears all values from the given set.
*
* If delete_function is passed, it gets called on each entry present before
* the set is cleared.
*/
void
_mesa_set_clear(struct set *set, void (*delete_function)(struct set_entry *entry))
{
struct set_entry *entry;
if (!set)
return;
set_foreach (set, entry) {
if (delete_function)
delete_function(entry);
entry->key = deleted_key;
}
set->entries = set->deleted_entries = 0;
}
/**
* Finds a set entry with the given key and hash of that key.
*

View File

@ -61,6 +61,9 @@ _mesa_set_create(void *mem_ctx,
void
_mesa_set_destroy(struct set *set,
void (*delete_function)(struct set_entry *entry));
void
_mesa_set_clear(struct set *set,
void (*delete_function)(struct set_entry *entry));
struct set_entry *
_mesa_set_add(struct set *set, const void *key);