40#error missing macro node_data_init
43#ifndef node_data_destroy
44#error missing macro node_data_destroy
48#error missing macro node_data_copy
51#ifndef node_data_equal
52#error missing macro node_data_equal
55#ifndef node_data_print
56#error missing macro node_data_print
65void, TTT_list_init, TTTList_t *list),
76void, TTT_list_copy, TTTList_t *dst, TTTList_t *src),
78 TTT_list_destroy (dst) ;
82 for (node = TTT_list_begin (src) ;
84 node = TTT_list_next (node))
86 TTT_list_insert_end (dst, TTT_list_data(node)) ;
93void, TTT_list_destroy, TTTList_t *list),
95 TTTListNode_t* next = NULL ;
97 while (list->First != NULL)
99 next = TTT_list_next (list->First) ;
101 node_data_destroy (TTT_list_data (list->First)) ;
108 TTT_list_init (list) ;
115TTTListNode_t *, TTT_list_begin, TTTList_t *list),
124TTTListNode_t *, TTT_list_end, TTTList_t *list),
133TTTListNode_t *, TTT_list_next, TTTListNode_t *node),
142TTTListNode_t *, TTT_list_prev, TTTListNode_t *node),
151TTT_t *, TTT_list_data, TTTListNode_t *node),
160void, TTT_list_insert_begin, TTTList_t *list, TTT_t *data),
162 TTTListNode_t *newnode = (TTTListNode_t *) malloc (
sizeof(TTTListNode_t)) ;
168 node_data_init (TTT_list_data(newnode)) ;
170 node_data_copy (TTT_list_data(newnode), data) ;
172 newnode->Next = NULL ;
173 newnode->Prev = NULL ;
175 if (list->First == NULL && list->Last == NULL)
177 list->First = newnode ;
178 list->Last = newnode ;
185 if (list->First == NULL || list->Last == NULL)
187 fprintf (stderr,
"ERROR: bad list status\n") ;
192 newnode->Next = list->First ;
194 list->First->Prev = newnode ;
196 list->First = newnode ;
205void, TTT_list_insert_end, TTTList_t *list, TTT_t *data),
207 TTTListNode_t *newnode = (TTTListNode_t *) malloc (
sizeof(TTTListNode_t)) ;
213 node_data_init (TTT_list_data(newnode)) ;
215 node_data_copy (TTT_list_data(newnode), data) ;
217 newnode->Next = NULL ;
218 newnode->Prev = NULL ;
220 if (list->First == NULL && list->Last == NULL)
222 list->First = newnode ;
223 list->Last = newnode ;
230 if (list->First == NULL && list->Last == NULL)
232 fprintf (stderr,
"ERROR: bad list status\n") ;
237 newnode->Prev = list->Last ;
239 list->Last->Next = newnode ;
241 list->Last = newnode ;
250TTT_t *, TTT_list_find, TTTList_t *list, TTT_t *data),
252 TTTListNode_t *node ;
254 for (node = TTT_list_begin(list) ;
256 node = TTT_list_next (node))
258 if (node_data_equal (TTT_list_data (node), data) ==
true)
266 return TTT_list_data (node) ;
273void, TTT_list_print, TTTList_t *list, FILE *stream,
String_t prefix),
275 TTTListNode_t *node ;
277 for (node = TTT_list_begin(list) ;
279 node = TTT_list_next (node))
281 node_data_print (TTT_list_data(node), stream, prefix) ;
283 fprintf (stream,
"%s\n", prefix) ;