diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2011-08-19 14:48:16 -0400 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2011-08-27 12:06:11 -0400 |
commit | c4774d55e91a722e29326c30ab49dcc3850e0a00 (patch) | |
tree | 549445153d2f40b4eeb1f2bbefc779a51513ea9f | |
parent | e908893080a391b731591720e52f4c38c4c644e4 (diff) |
Add wl_hash_table_for_each()
-rw-r--r-- | src/wayland-hash.c | 14 | ||||
-rw-r--r-- | src/wayland-util.h | 4 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/wayland-hash.c b/src/wayland-hash.c index b299a33..e1c0b6a 100644 --- a/src/wayland-hash.c +++ b/src/wayland-hash.c @@ -186,6 +186,20 @@ hash_table_search(struct wl_hash_table *ht, uint32_t hash) return NULL; } +WL_EXPORT void +wl_hash_table_for_each(struct wl_hash_table *ht, + wl_hash_table_func_t func, void *data) +{ + struct hash_entry *entry; + uint32_t i; + + for (i = 0; i < ht->size; i++) { + entry = ht->table + i; + if (entry_is_present(entry)) + func(entry->data, data); + } +} + WL_EXPORT void * wl_hash_table_lookup(struct wl_hash_table *ht, uint32_t hash) { diff --git a/src/wayland-util.h b/src/wayland-util.h index a9f869a..f46da10 100644 --- a/src/wayland-util.h +++ b/src/wayland-util.h @@ -65,12 +65,16 @@ struct wl_object { uint32_t id; }; +typedef void (*wl_hash_table_func_t)(void *element, void *data); + struct wl_hash_table; struct wl_hash_table *wl_hash_table_create(void); void wl_hash_table_destroy(struct wl_hash_table *ht); void *wl_hash_table_lookup(struct wl_hash_table *ht, uint32_t hash); int wl_hash_table_insert(struct wl_hash_table *ht, uint32_t hash, void *data); void wl_hash_table_remove(struct wl_hash_table *ht, uint32_t hash); +void wl_hash_table_for_each(struct wl_hash_table *ht, + wl_hash_table_func_t func, void *data); /** * wl_list - linked list |