]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/list.h
Move binsearch code to array.c
[dragonblocks_alpha.git] / src / list.h
1 #ifndef _List_H_
2 #define _List_H_
3
4 #include <stdbool.h>
5
6 #define ITERATE_LIST(list, pair) for (ListPair *pair = (list)->first; pair != NULL; pair = pair->next)
7
8 typedef struct ListPair
9 {
10         struct ListPair *next;
11         void *key;
12         void *value;
13 } ListPair;
14
15 typedef bool (*ListComparator)(void *v1, void *v2);
16
17 typedef struct
18 {
19         ListComparator cmp;
20         ListPair *first;
21 } List;
22
23 bool list_compare_default(void *v1, void *v2);
24 bool list_compare_string(void *v1, void *v2);
25
26 List list_create(ListComparator cmp);
27 void list_clear(List *list);
28
29 bool list_put(List *list, void *key, void *value);
30 void list_set(List *list, void *key, void *value);
31 void *list_get(List *list, void *key);
32 void *list_delete(List *list, void *key);
33
34 bool list_serialize(int fd, List *list); // ToDo
35 bool list_deserialize(int fd, List *list); // ToDo
36
37 #endif