17 void *data; |
17 void *data; |
18 UcxDlist *restrict next; |
18 UcxDlist *restrict next; |
19 UcxDlist *restrict prev; |
19 UcxDlist *restrict prev; |
20 }; |
20 }; |
21 |
21 |
22 UcxDlist *restrict ucx_dlist_clone(UcxDlist *restrict l, |
22 UcxDlist *ucx_dlist_clone(UcxDlist *l, copy_func fnc, void* data); |
23 copy_func fnc, void* data); |
|
24 int ucx_dlist_equals(const UcxDlist *l1, const UcxDlist *l2, |
23 int ucx_dlist_equals(const UcxDlist *l1, const UcxDlist *l2, |
25 cmp_func fnc, void* data); |
24 cmp_func fnc, void* data); |
26 |
25 |
27 void ucx_dlist_free(UcxDlist *l); |
26 void ucx_dlist_free(UcxDlist *l); |
28 UcxDlist *ucx_dlist_append(UcxDlist *l, void *data); |
27 UcxDlist *ucx_dlist_append(UcxDlist *l, void *data); |
29 UcxDlist *ucx_dlist_prepend(UcxDlist *l, void *data); |
28 UcxDlist *ucx_dlist_prepend(UcxDlist *l, void *data); |
30 UcxDlist *ucx_dlist_concat(UcxDlist *restrict l1, UcxDlist *restrict l2); |
29 UcxDlist *ucx_dlist_concat(UcxDlist *restrict l1, UcxDlist *restrict l2); |
31 UcxDlist *ucx_dlist_last(const UcxDlist *l); |
30 UcxDlist *ucx_dlist_last(const UcxDlist *l); |
32 UcxDlist *ucx_dlist_get(const UcxDlist *l, int index); |
31 UcxDlist *ucx_dlist_get(const UcxDlist *l, int index); |
33 size_t ucx_dlist_size(const UcxDlist *l); |
32 size_t ucx_dlist_size(const UcxDlist *l); |
|
33 int ucx_dlist_contains(UcxDlist *l, void *elem, cmp_func fnc, void *cmpdata); |
34 |
34 |
35 UcxDlist *ucx_dlist_sort(UcxDlist *l, cmp_func fnc, void *data); |
35 UcxDlist *ucx_dlist_sort(UcxDlist *l, cmp_func fnc, void *data); |
36 |
36 |
37 /* dlist specific functions */ |
37 /* dlist specific functions */ |
38 UcxDlist *ucx_dlist_first(const UcxDlist *l); |
38 UcxDlist *ucx_dlist_first(const UcxDlist *l); |