diff options
Diffstat (limited to 'libopkg/void_list.h')
-rw-r--r-- | libopkg/void_list.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/libopkg/void_list.h b/libopkg/void_list.h index b2a0f2c..ca380b8 100644 --- a/libopkg/void_list.h +++ b/libopkg/void_list.h @@ -18,27 +18,24 @@ #ifndef VOID_LIST_H #define VOID_LIST_H +#include "list.h" + typedef struct void_list_elt void_list_elt_t; struct void_list_elt { - void_list_elt_t *next; + struct list_head node; void *data; }; typedef struct void_list void_list_t; struct void_list { - void_list_elt_t pre_head; - void_list_elt_t *head; - void_list_elt_t *tail; + struct list_head head; }; static inline int void_list_empty(void_list_t *list) { - if (list->head == NULL) - return 1; - else - return 0; + return list_empty(&list->head); } int void_list_elt_init(void_list_elt_t *elt, void *data); @@ -56,4 +53,12 @@ void *void_list_remove(void_list_t *list, void_list_elt_t **iter); typedef int (*void_list_cmp_t)(const void *, const void *); void *void_list_remove_elt(void_list_t *list, const void *target_data, void_list_cmp_t cmp); +void_list_elt_t *void_list_first(void_list_t *list); +void_list_elt_t *void_list_prev(void_list_t *list, void_list_elt_t *node); +void_list_elt_t *void_list_next(void_list_t *list, void_list_elt_t *node); +void_list_elt_t *void_list_last(void_list_t *list); + +void void_list_purge(void_list_t *list); + + #endif |