13 #endif |
13 #endif |
14 |
14 |
15 typedef struct UcxDlist UcxDlist; |
15 typedef struct UcxDlist UcxDlist; |
16 struct UcxDlist { |
16 struct UcxDlist { |
17 void *data; |
17 void *data; |
18 UcxDlist *next; |
18 UcxDlist *restrict next; |
19 UcxDlist *prev; |
19 UcxDlist *restrict prev; |
20 }; |
20 }; |
21 |
21 |
22 UcxDlist *ucx_dlist_clone(UcxDlist *l, copy_func fnc, void* data); |
22 UcxDlist *restrict ucx_dlist_clone(UcxDlist *restrict l, |
23 int ucx_dlist_equals(UcxDlist *l1, UcxDlist *l2, cmp_func fnc, void* data); |
23 copy_func fnc, void* data); |
|
24 int ucx_dlist_equals(const UcxDlist *l1, const UcxDlist *l2, |
|
25 cmp_func fnc, void* data); |
24 |
26 |
25 void ucx_dlist_free(UcxDlist *l); |
27 void ucx_dlist_free(UcxDlist *l); |
26 UcxDlist *ucx_dlist_append(UcxDlist *l, void *data); |
28 UcxDlist *ucx_dlist_append(UcxDlist *l, void *data); |
27 UcxDlist *ucx_dlist_prepend(UcxDlist *l, void *data); |
29 UcxDlist *ucx_dlist_prepend(UcxDlist *l, void *data); |
28 UcxDlist *ucx_dlist_concat(UcxDlist *l1, UcxDlist *l2); |
30 UcxDlist *ucx_dlist_concat(UcxDlist *restrict l1, UcxDlist *restrict l2); |
29 UcxDlist *ucx_dlist_last(UcxDlist *l); |
31 UcxDlist *ucx_dlist_last(const UcxDlist *l); |
30 UcxDlist *ucx_dlist_get(UcxDlist *l, int index); |
32 UcxDlist *ucx_dlist_get(const UcxDlist *l, int index); |
31 size_t ucx_dlist_size(UcxDlist *l); |
33 size_t ucx_dlist_size(const UcxDlist *l); |
32 |
34 |
33 UcxDlist *ucx_dlist_sort(UcxDlist *l, cmp_func fnc, void *data); |
35 UcxDlist *ucx_dlist_sort(UcxDlist *l, cmp_func fnc, void *data); |
34 |
36 |
35 /* dlist specific functions */ |
37 /* dlist specific functions */ |
36 UcxDlist *ucx_dlist_first(UcxDlist *l); |
38 UcxDlist *ucx_dlist_first(const UcxDlist *l); |
37 UcxDlist *ucx_dlist_remove(UcxDlist *l, UcxDlist *e); |
39 UcxDlist *ucx_dlist_remove(UcxDlist *l, UcxDlist *e); |
38 |
40 |
39 #ifdef __cplusplus |
41 #ifdef __cplusplus |
40 } |
42 } |
41 #endif |
43 #endif |