Mesa (master): util/set: add a set_clear function

Scott D Phillips scott-ph at kemper.freedesktop.org
Fri May 4 17:15:03 UTC 2018


Module: Mesa
Branch: master
Commit: 5c075b085585b1629022d40ce7af9448c7d0e906
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5c075b085585b1629022d40ce7af9448c7d0e906

Author: Scott D Phillips <scott.d.phillips at intel.com>
Date:   Wed May  2 09:01:02 2018 -0700

util/set: add a set_clear function

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

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 src/util/set.c | 23 +++++++++++++++++++++++
 src/util/set.h |  3 +++
 2 files changed, 26 insertions(+)

diff --git a/src/util/set.c b/src/util/set.c
index d71f771807..2c9b09319f 100644
--- a/src/util/set.c
+++ b/src/util/set.c
@@ -156,6 +156,29 @@ _mesa_set_destroy(struct set *ht, void (*delete_function)(struct set_entry *entr
 }
 
 /**
+ * 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.
  *
  * Returns NULL if no entry is found.
diff --git a/src/util/set.h b/src/util/set.h
index 9acd2c28c9..06e79e1586 100644
--- a/src/util/set.h
+++ b/src/util/set.h
@@ -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);




More information about the mesa-commit mailing list