59 node->flink = pos->flink;
63 pos->flink->blink = node;
90 if (free_function && pos->data)
91 (*free_function)(pos->data);
93 pos->blink->flink = pos->flink;
96 pos->flink->blink = pos->blink;
98 head->blink = pos->blink;
115 icl_list_t *head,
void *data,
int (*compare)(
void*,
void*))
122 for (node = head->flink; node != NULL; node = node->flink) {
125 if ((compare && (*compare)(node->data, data) == 0))
127 else if (node->data == data)
145 icl_list_t *head,
void *data,
int (*compare)(
void*,
void*))
147 if (!head || !compare)
150 if (head->flink == NULL)
154 if (compare(data, node->data) <= 0)
157 while (node->flink != NULL && compare(data, node->flink->data) > 0)
180 for (node = head; node != NULL;) {
181 tmpnode = node->flink;
183 if (free_function != NULL && node->data != NULL)
184 (*free_function)(node->data);
207 while ((head=head->flink))
273 if (pos && pos->blink != NULL && pos != head &&
274 pos->blink != head && pos->blink != pos)
292 if (!head1 || !head2 || !head1->blink || !head2->flink)
295 head1->blink->flink = head2->flink;
296 head2->flink->blink = head1->blink;
297 head1->blink = head2->blink;