Fri, 30 Nov 2012 21:18:13 +0100
added existing source code
/* * */ #ifndef DLIST_H #define DLIST_H #include "ucx.h" #include <stddef.h> #ifdef __cplusplus extern "C" { #endif typedef struct UcxDlist UcxDlist; struct UcxDlist { void *data; UcxDlist *restrict next; UcxDlist *restrict prev; }; UcxDlist *restrict ucx_dlist_clone(UcxDlist *restrict l, copy_func fnc, void* data); int ucx_dlist_equals(const UcxDlist *l1, const UcxDlist *l2, cmp_func fnc, void* data); void ucx_dlist_free(UcxDlist *l); UcxDlist *ucx_dlist_append(UcxDlist *l, void *data); UcxDlist *ucx_dlist_prepend(UcxDlist *l, void *data); UcxDlist *ucx_dlist_concat(UcxDlist *restrict l1, UcxDlist *restrict l2); UcxDlist *ucx_dlist_last(const UcxDlist *l); UcxDlist *ucx_dlist_get(const UcxDlist *l, int index); size_t ucx_dlist_size(const UcxDlist *l); UcxDlist *ucx_dlist_sort(UcxDlist *l, cmp_func fnc, void *data); /* dlist specific functions */ UcxDlist *ucx_dlist_first(const UcxDlist *l); UcxDlist *ucx_dlist_remove(UcxDlist *l, UcxDlist *e); #ifdef __cplusplus } #endif #endif /* DLIST_H */