2 ======================================================================
5 Generic linked list operations.
8 ====================================================================== */
10 #include "../picointernal.h"
15 ======================================================================
18 Free the items in a list.
19 ====================================================================== */
21 void lwListFree( void *list, void ( *freeNode )( void * ))
25 node = ( lwNode * ) list;
35 ======================================================================
38 Append a node to a list.
39 ====================================================================== */
41 void lwListAdd( void **list, void *node )
45 head = *(( lwNode ** ) list );
54 tail->next = ( lwNode * ) node;
55 (( lwNode * ) node )->prev = tail;
60 ======================================================================
63 Insert a node into a list in sorted order.
64 ====================================================================== */
66 void lwListInsert( void **vlist, void *vitem, int ( *compare )( void *, void * ))
68 lwNode **list, *item, *node, *prev;
75 list = ( lwNode ** ) vlist;
76 item = ( lwNode * ) vitem;
81 if ( 0 < compare( node, item )) break;