Add a hash remove implementation
authorKristian Høgsberg <krh@redhat.com>
Fri, 18 Sep 2009 20:57:55 +0000 (16:57 -0400)
committerKristian Høgsberg <krh@redhat.com>
Fri, 18 Sep 2009 21:05:50 +0000 (17:05 -0400)
wayland-util.c
wayland-util.h

index 06efd32..cd73542 100644 (file)
@@ -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)
index 9da870c..4c3af5d 100644 (file)
@@ -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;