d3d: Allow to iterate over the handle table.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Tue, 18 Mar 2008 12:46:24 +0000 (12:46 +0000)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Tue, 18 Mar 2008 17:20:56 +0000 (17:20 +0000)
src/gallium/auxiliary/util/u_handle_table.c
src/gallium/auxiliary/util/u_handle_table.h

index fae4ac4039c263bce4d5cadf9065842801f3d6c2..0bfb9e1b4ae83e73e72eccff57a4da707836c302 100644 (file)
@@ -241,6 +241,28 @@ handle_table_remove(struct handle_table *ht,
 }
 
 
+unsigned
+handle_table_get_next_handle(struct handle_table *ht, 
+                             unsigned handle)
+{
+   unsigned index;
+   
+   for(index = handle; index < ht->size; ++index) {
+      if(!ht->objects[index])
+        return index + 1;
+   }
+
+   return 0;
+}
+
+
+unsigned
+handle_table_get_first_handle(struct handle_table *ht)
+{
+   return handle_table_get_next_handle(ht, 0);
+}
+
+
 void
 handle_table_destroy(struct handle_table *ht)
 {
index a2f1f604ade2c051a0449d4dca7c1d0e38d8ca79..d080135c9f40d479173ce9648698753870243046 100644 (file)
@@ -100,6 +100,15 @@ void
 handle_table_destroy(struct handle_table *ht);
 
 
+unsigned
+handle_table_get_first_handle(struct handle_table *ht);
+
+
+unsigned
+handle_table_get_next_handle(struct handle_table *ht,
+                             unsigned handle);
+
+
 #ifdef __cplusplus
 }
 #endif