#ifndef __VXGG_REWRITE___LL_H___305861098005___ #define __VXGG_REWRITE___LL_H___305861098005___ typedef int (*dll_freecb)(void*); typedef struct dlinked dlinkedlist; dlinkedlist* dlinkedlist_init(void); int dlinkedlist_free(dlinkedlist **ll); int dlinkedlist_append(dlinkedlist * const ll, void *data, dll_freecb fcb); int dlinkedlist_prepend(dlinkedlist * const ll, void *data, dll_freecb fcb); int dlinkedlist_insert(dlinkedlist * const ll, void *data, dll_freecb fcb, int index); void* dlinkedlist_get(const dlinkedlist * const ll, int index); int dlinkedlist_remove(dlinkedlist * const ll, int index); int dlinkedlist_size(const dlinkedlist * const ll); #define dlinkedlist_isempty(ll) (dlinkedlist_size((ll)) == 0) #endif