2
/* doubley linked lists */
3
/* This is free software. No strings attached. No copyright claimed */
7
struct __dl_head * dh_prev;
8
struct __dl_head * dh_next;
11
#define dl_alloc(size) ((void*)(((char*)calloc(1,(size)+sizeof(struct __dl_head)))+sizeof(struct __dl_head)))
12
#define dl_new(t) ((t*)dl_alloc(sizeof(t)))
13
#define dl_newv(t,n) ((t*)dl_alloc(sizeof(t)*n))
15
#define dl_next(p) *((void**)&(((struct __dl_head*)(p))[-1].dh_next))
16
#define dl_prev(p) *((void**)&(((struct __dl_head*)(p))[-1].dh_prev))
19
char *dl_strdup(char *);
20
char *dl_strndup(char *, int);
21
void dl_insert(void*, void*);
22
void dl_add(void*, void*);