From 6b9b7ec69002e062bb48049acdab7e1e7145b0ca Mon Sep 17 00:00:00 2001 From: James Shaw Date: Sat, 22 Sep 2007 23:08:54 +0000 Subject: Extend list implementation, add test-list.c to test some of it. svn path=/trunk/dom/; revision=3573 --- test/lib/list.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'test/lib/list.h') diff --git a/test/lib/list.h b/test/lib/list.h index a0a6c6a..7c27796 100644 --- a/test/lib/list.h +++ b/test/lib/list.h @@ -8,6 +8,10 @@ #ifndef list_h_ #define list_h_ +#include + +#include "comparators.h" + struct list_elt { void* data; struct list_elt* next; @@ -22,23 +26,32 @@ struct list { struct list* list_new(void); void list_destroy(struct list* list); -typedef int (*list_compare_func)(const void* a, const void* b); - /** * Add data to the tail of the list. */ void list_add(struct list* list, void* data); +/** + * Remove element containing data from list. + * The list element is freed, but the caller must free the data itself + * if necessary. + * + * Returns true if data was found in the list. + */ +bool list_remove(struct list* list, void* data); + +struct list* list_clone(struct list* list); + /** * Tests if data is equal to any element in the list. */ -bool list_contains(struct list* list, void* data, - int (*comparator)(const void* a, const void* b)); +bool list_contains(struct list* list, void* data, + comparator comparator); /** * Tests if superlist contains all elements in sublist. Order is not important. */ bool list_contains_all(struct list* superList, struct list* subList, - list_compare_func comparator); + comparator comparator); #endif -- cgit v1.2.3