From f15ce9f40057495fbe6a21107020358e57aaa430 Mon Sep 17 00:00:00 2001 From: Kristian Høgsberg Date: Fri, 18 Sep 2009 16:57:55 -0400 Subject: Add a hash remove implementation --- wayland-util.c | 13 ++++++++++--- wayland-util.h | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/wayland-util.c b/wayland-util.c index 06efd32..cd73542 100644 --- a/wayland-util.c +++ b/wayland-util.c @@ -88,11 +88,18 @@ wl_hash_lookup(struct wl_hash *hash, uint32_t id) } void -wl_hash_delete(struct wl_hash *hash, struct wl_object *object) +wl_hash_remove(struct wl_hash *hash, struct wl_object *object) { - /* writeme */ -} + int i; + for (i = 0; i < hash->count; i++) { + if (hash->objects[i]->id == object->id) { + hash->objects[i] = hash->objects[hash->count - 1]; + hash->count--; + break; + } + } +} WL_EXPORT void wl_list_init(struct wl_list *list) diff --git a/wayland-util.h b/wayland-util.h index 9da870c..4c3af5d 100644 --- a/wayland-util.h +++ b/wayland-util.h @@ -69,7 +69,7 @@ struct wl_hash *wl_hash_create(void); void wl_hash_destroy(struct wl_hash *hash); int wl_hash_insert(struct wl_hash *hash, struct wl_object *object); struct wl_object *wl_hash_lookup(struct wl_hash *hash, uint32_t id); -void wl_hash_delete(struct wl_hash *hash, struct wl_object *object); +void wl_hash_remove(struct wl_hash *hash, struct wl_object *object); struct wl_list { struct wl_list *prev; -- cgit