<div dir="ltr">Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 2, 2018 at 9:01 AM, Scott D Phillips <span dir="ltr"><<a href="mailto:scott.d.phillips@intel.com" target="_blank">scott.d.phillips@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Clear a set back to the state of having zero entries.<br>
---<br>
 src/util/set.c | 23 +++++++++++++++++++++++<br>
 src/util/set.h |  3 +++<br>
 2 files changed, 26 insertions(+)<br>
<br>
diff --git a/src/util/set.c b/src/util/set.c<br>
index d71f771807f..2c9b09319ff 100644<br>
--- a/src/util/set.c<br>
+++ b/src/util/set.c<br>
@@ -155,6 +155,29 @@ _mesa_set_destroy(struct set *ht, void (*delete_function)(struct set_entry *entr<br>
    ralloc_free(ht);<br>
 }<br>
<br>
+/**<br>
+ * Clears all values from the given set.<br>
+ *<br>
+ * If delete_function is passed, it gets called on each entry present before<br>
+ * the set is cleared.<br>
+ */<br>
+void<br>
+_mesa_set_clear(struct set *set, void (*delete_function)(struct set_entry *entry))<br>
+{<br>
+   struct set_entry *entry;<br>
+<br>
+   if (!set)<br>
+      return;<br>
+<br>
+   set_foreach (set, entry) {<br>
+      if (delete_function)<br>
+         delete_function(entry);<br>
+      entry->key = deleted_key;<br>
+   }<br>
+<br>
+   set->entries = set->deleted_entries = 0;<br>
+}<br>
+<br>
 /**<br>
  * Finds a set entry with the given key and hash of that key.<br>
  *<br>
diff --git a/src/util/set.h b/src/util/set.h<br>
index 9acd2c28c9f..06e79e15867 100644<br>
--- a/src/util/set.h<br>
+++ b/src/util/set.h<br>
@@ -61,6 +61,9 @@ _mesa_set_create(void *mem_ctx,<br>
 void<br>
 _mesa_set_destroy(struct set *set,<br>
                   void (*delete_function)(struct set_entry *entry));<br>
+void<br>
+_mesa_set_clear(struct set *set,<br>
+                void (*delete_function)(struct set_entry *entry));<br>
<br>
 struct set_entry *<br>
 _mesa_set_add(struct set *set, const void *key);<br>
<span class="HOEnZb"><font color="#888888">-- <br>
2.14.3<br>
<br>
</font></span></blockquote></div><br></div>