19 |
#define LIST_H |
#define LIST_H |
20 |
|
|
21 |
typedef struct list LIST; |
typedef struct list LIST; |
22 |
|
typedef struct iterator ITERATOR; |
23 |
|
|
24 |
typedef int (*list_iterator_t)(void *item, void *data); |
typedef int (*list_iterator_t)(void *item, void *data); |
25 |
typedef int (*list_comp_t)(const void *, const void *); |
typedef int (*list_comp_t)(const void *, const void *); |
27 |
LIST *list_create(); |
LIST *list_create(); |
28 |
void list_destroy(LIST **list, list_iterator_t free, void *data); |
void list_destroy(LIST **list, list_iterator_t free, void *data); |
29 |
void list_iterate(LIST *list, list_iterator_t itr, void *data); |
void list_iterate(LIST *list, list_iterator_t itr, void *data); |
|
void *list_current(LIST *list); |
|
|
void *list_first(LIST *list); |
|
|
void *list_next(LIST *list); |
|
30 |
void *list_item(LIST *list, size_t n); |
void *list_item(LIST *list, size_t n); |
31 |
size_t list_count(LIST *list); |
size_t list_count(LIST *list); |
32 |
void list_append(LIST *list, void *data); |
void list_append(LIST *list, void *data); |
33 |
void list_prepend(LIST *list, void *data); |
void list_prepend(LIST *list, void *data); |
34 |
void *list_locate(LIST *list, void *data, list_comp_t cmp); |
void *list_locate(LIST *list, void *data, list_comp_t cmp); |
|
void *list_remove_current(LIST *list); |
|
35 |
void *list_remove(LIST *list, void *data, list_comp_t cmp); |
void *list_remove(LIST *list, void *data, list_comp_t cmp); |
36 |
void list_append_list(LIST *a, LIST *b); |
|
37 |
|
void *iterator_current(ITERATOR *ip); |
38 |
|
ITERATOR *iterator_create(LIST *list); |
39 |
|
void iterator_destroy(ITERATOR **ip); |
40 |
|
void *iterator_first(ITERATOR *ip); |
41 |
|
void *iterator_next(ITERATOR *ip); |
42 |
|
|
43 |
|
|
44 |
#endif |
#endif |
45 |
|
|