#ifndef __VXGG_REWRITE___LL_H___305861098005___ #define __VXGG_REWRITE___LL_H___305861098005___ #include typedef int (*dlinkedlist_freecallback)(void*); typedef struct dlinkedlist dlinkedlist; dlinkedlist * dlinkedlist_init(void); int dlinkedlist_free(dlinkedlist **ll); int dlinkedlist_insert(dlinkedlist * const ll, void *data, dlinkedlist_freecallback dfreecb); int dlinkedlist_append(dlinkedlist * const ll, void *data, dlinkedlist_freecallback dfreecb); void *dlinkedlist_get(const dlinkedlist * const ll, size_t index); void *dlinkedlist_getfirst(const dlinkedlist * const ll); void *dlinkedlist_getlast(const dlinkedlist * const ll); int dlinkedlist_remove(dlinkedlist * const ll, size_t index); size_t dlinkedlist_size(const dlinkedlist * const ll); int dlinkedlist_isempty(const dlinkedlist * const ll); #endif