summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/cso_cache/cso_hash.h
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2008-03-13 16:41:12 -0400
committerZack Rusin <zack@tungstengraphics.com>2008-03-13 16:41:37 -0400
commita889928d85ac8ba7e1a7fe15393858a9422cf750 (patch)
treeda9b2944fea3afe8bd3e97a262b89166b425e18a /src/gallium/auxiliary/cso_cache/cso_hash.h
parent3faf6230ff4b63833c072ac7afeb43c25d3cba22 (diff)
downloadexternal_mesa3d-a889928d85ac8ba7e1a7fe15393858a9422cf750.zip
external_mesa3d-a889928d85ac8ba7e1a7fe15393858a9422cf750.tar.gz
external_mesa3d-a889928d85ac8ba7e1a7fe15393858a9422cf750.tar.bz2
add a way of removing an exact iterator from the hash
Diffstat (limited to 'src/gallium/auxiliary/cso_cache/cso_hash.h')
-rw-r--r--src/gallium/auxiliary/cso_cache/cso_hash.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/cso_cache/cso_hash.h b/src/gallium/auxiliary/cso_cache/cso_hash.h
index a3a65b6..73c4742 100644
--- a/src/gallium/auxiliary/cso_cache/cso_hash.h
+++ b/src/gallium/auxiliary/cso_cache/cso_hash.h
@@ -68,14 +68,26 @@ int cso_hash_size(struct cso_hash *hash);
/**
- * Create a list of objects and just add entry with the same key to the list.
+ * Adds a data with the given key to the hash. If entry with the given
+ * key is already in the hash, this current entry is instered before it
+ * in the collision list.
+ * Function returns iterator pointing to the inserted item in the hash.
*/
struct cso_hash_iter cso_hash_insert(struct cso_hash *hash, unsigned key,
void *data);
+/**
+ * Removes the item pointed to by the current iterator from the hash.
+ * Note that the data itself is not erased and if it was a malloc'ed pointer
+ * it will have to be freed after calling this function by the callee.
+ * Function returns iterator pointing to the item after the removed one in
+ * the hash.
+ */
+struct cso_hash_iter cso_hash_erase(struct cso_hash *hash, struct cso_hash_iter iter);
void *cso_hash_take(struct cso_hash *hash, unsigned key);
+
struct cso_hash_iter cso_hash_first_node(struct cso_hash *hash);
/**
@@ -97,7 +109,7 @@ struct cso_hash_iter cso_hash_iter_prev(struct cso_hash_iter iter);
* Convenience routine to iterate over the collision list while doing a memory
* comparison to see which entry in the list is a direct copy of our template
* and returns that entry.
- */
+ */
void *cso_hash_find_data_from_template( struct cso_hash *hash,
unsigned hash_key,
void *templ,