#ifndef __VXGG_REWRITE___SHARED_H___28542989122405___ #define __VXGG_REWRITE___SHARED_H___28542989122405___ #include typedef struct dll { void *data; int (*dfreecb)(void*); struct dll *next; struct dll *prev; } dllnode; typedef struct { dllnode *start; dllnode *end; size_t size; } dlinkedlist; // Initialize a dlinkedlist void dlinkedlist_init(dlinkedlist **ll); // Free a dlinkedlist and its elements void dlinkedlist_free(dlinkedlist **ll); // Insert an element to the beginning of the list int dlinkedlist_insert(dlinkedlist * const ll, void *data, int (*dfreecb)(void*)); // Insert an element to the end of the list int dlinkedlist_append(dlinkedlist * const ll, void *data, int (*dfreecb)(void*)); // Get the element from a dlinkedlist at index dllnode *dlinkedlist_get(const dlinkedlist * const ll, size_t index); #endif