diff options
Diffstat (limited to 'test/lib/list.h')
-rw-r--r-- | test/lib/list.h | 23 |
1 files changed, 18 insertions, 5 deletions
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 <stdbool.h> + +#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 |