diff options
Diffstat (limited to 'src/ll.h')
| -rw-r--r-- | src/ll.h | 36 |
1 files changed, 10 insertions, 26 deletions
| @@ -1,35 +1,19 @@ | |||
| 1 | #ifndef __VXGG_REWRITE___SHARED_H___28542989122405___ | 1 | #ifndef __VXGG_REWRITE___LL_H___305861098005___ |
| 2 | #define __VXGG_REWRITE___SHARED_H___28542989122405___ | 2 | #define __VXGG_REWRITE___LL_H___305861098005___ |
| 3 | 3 | ||
| 4 | #include <stddef.h> | 4 | #include <stddef.h> |
| 5 | 5 | ||
| 6 | typedef struct dll { | 6 | typedef int (*dlinkedlist_freecallback)(void*); |
| 7 | void *data; | 7 | typedef struct dlinkedlist dlinkedlist; |
| 8 | int (*dfreecb)(void*); | ||
| 9 | 8 | ||
| 10 | struct dll *next; | ||
| 11 | struct dll *prev; | ||
| 12 | } dllnode; | ||
| 13 | |||
| 14 | typedef struct { | ||
| 15 | dllnode *start; | ||
| 16 | dllnode *end; | ||
| 17 | size_t size; | ||
| 18 | } dlinkedlist; | ||
| 19 | |||
| 20 | // Initialize a dlinkedlist | ||
| 21 | void dlinkedlist_init(dlinkedlist **ll); | 9 | void dlinkedlist_init(dlinkedlist **ll); |
| 22 | |||
| 23 | // Free a dlinkedlist and its elements | ||
| 24 | void dlinkedlist_free(dlinkedlist **ll); | 10 | void dlinkedlist_free(dlinkedlist **ll); |
| 25 | 11 | ||
| 26 | // Insert an element to the beginning of the list | 12 | int dlinkedlist_insert(dlinkedlist * const ll, void *data, dlinkedlist_freecallback dfreecb); |
| 27 | int dlinkedlist_insert(dlinkedlist * const ll, void *data, int (*dfreecb)(void*)); | 13 | int dlinkedlist_append(dlinkedlist * const ll, void *data, dlinkedlist_freecallback dfreecb); |
| 28 | 14 | void *dlinkedlist_get(const dlinkedlist * const ll, size_t index); | |
| 29 | // Insert an element to the end of the list | 15 | void *dlinkedlist_getfirst(const dlinkedlist * const ll); |
| 30 | int dlinkedlist_append(dlinkedlist * const ll, void *data, int (*dfreecb)(void*)); | 16 | void *dlinkedlist_getlast(const dlinkedlist * const ll); |
| 31 | 17 | int dlinkedlist_remove(dlinkedlist * const ll, size_t index); | |
| 32 | // Get the element from a dlinkedlist at index | ||
| 33 | dllnode *dlinkedlist_get(const dlinkedlist * const ll, size_t index); | ||
| 34 | 18 | ||
| 35 | #endif \ No newline at end of file | 19 | #endif \ No newline at end of file |
