blob: d1354e0211e2c272697525378adf60854dffbbc3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#ifndef LINKED_LIST_H
#define LINKED_LIST_H
#include "macro.h"
#define LLIST(T) TP(llist__, T)
#define LINK(T) TP(llist_link__, T)
#define LLIST_CONS(T) TP(llist_cons__, T)
#endif /* LINKED_LIST_H */
#ifdef TYPE
typedef struct LINK(TYPE) {
struct LINK(TYPE)* before;
struct LINK(TYPE)* after;
TYPE* value;
} LINK(TYPE);
typedef struct {
LINK(TYPE)* head;
LINK(TYPE)* tail;
LINK(TYPE)* cur;
int length;
} LLIST(TYPE);
INIT_F ( LLIST(TYPE) );
FREE_F( LLIST(TYPE) );
INIT_F ( LINK(TYPE) );
INIT_F ( LINK(TYPE), TYPE* val );
int LLIST_CONS(TYPE) ( LLIST(TYPE)* lst, TYPE* val);
int DEEP_COPY(LLIST(TYPE)) ( LLIST(TYPE)* dest, LLIST(TYPE)* src );
int APPEND(LLIST(TYPE)) ( LLIST(TYPE)* dest, LLIST(TYPE)* new );
#endif /* TYPE */
|