Add wl_hash_table_for_each()

This commit is contained in:
Kristian Høgsberg 2011-08-19 14:48:16 -04:00
parent e908893080
commit c4774d55e9
2 changed files with 18 additions and 0 deletions

View file

@ -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)
{

View file

@ -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