44#error missing macro ListType
48#error missing macro ListName
51#define PASTER(x,y) x ## y
52#define CNT(x,y) PASTER(x,y)
54#define LIST_NODE(nodetype, datatype) \
66 struct nodetype *Prev ; \
70 struct nodetype *Next ; \
75 typedef struct nodetype nodetype ;
78#define LIST(listtype, nodetype) \
99 typedef struct listtype listtype ;
103#define FPROTO1(return, fid, param) \
107#define FPROTO2(return, fid, param1, param2) \
109 return fid (param1, param2)
111#define FPROTO3(return, fid, param1, param2, param3) \
113 return fid (param1, param2, param3)
115#define FIMP(prototype, body) prototype { body }
119#define TTT_t CNT(ListType, _t)
120#define TTTList_t CNT(ListType, List_t)
121#define TTTListNode_t CNT(ListType, ListNode_t)
123#define TTT_list_init CNT(ListName, _list_init)
124#define TTT_list_destroy CNT(ListName, _list_destroy)
125#define TTT_list_copy CNT(ListName, _list_copy)
126#define TTT_list_begin CNT(ListName, _list_begin)
127#define TTT_list_end CNT(ListName, _list_end)
128#define TTT_list_next CNT(ListName, _list_next)
129#define TTT_list_prev CNT(ListName, _list_prev)
130#define TTT_list_data CNT(ListName, _list_data)
131#define TTT_list_insert_begin CNT(ListName, _list_insert_begin)
132#define TTT_list_insert_end CNT(ListName, _list_insert_end)
133#define TTT_list_find CNT(ListName, _list_find)
134#define TTT_list_print CNT(ListName, _list_print)
138LIST_NODE (TTTListNode_t, TTT_t)
140LIST (TTTList_t, TTTListNode_t)
153 void, TTT_list_init, TTTList_t *list) ;
167 void, TTT_list_copy, TTTList_t *dst, TTTList_t *src) ;
181 void, TTT_list_destroy, TTTList_t *list) ;
195 TTTListNode_t *, TTT_list_begin, TTTList_t *list) ;
209 TTTListNode_t *, TTT_list_end, TTTList_t *list) ;
223 TTTListNode_t *, TTT_list_next, TTTListNode_t *node) ;
237 TTTListNode_t *, TTT_list_prev, TTTListNode_t *node) ;
250 TTT_t *, TTT_list_data, TTTListNode_t *node) ;
265 void, TTT_list_insert_begin, TTTList_t *list, TTT_t *data) ;
280 void, TTT_list_insert_end, TTTList_t *list, TTT_t *data) ;
295 TTT_t *, TTT_list_find, TTTList_t *list, TTT_t *data) ;
308 void, TTT_list_print, TTTList_t *list, FILE *stream,
String_t prefix) ;