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 * ) ){
24 node = ( lwNode * ) list;
34 ======================================================================
37 Append a node to a list.
38 ====================================================================== */
40 void lwListAdd( void **list, void *node ){
43 head = *( ( lwNode ** ) list );
52 tail->next = ( lwNode * ) node;
53 ( ( lwNode * ) node )->prev = tail;
58 ======================================================================
61 Insert a node into a list in sorted order.
62 ====================================================================== */
64 void lwListInsert( void **vlist, void *vitem, int ( *compare )( void *, void * ) ){
65 lwNode **list, *item, *node, *prev;
72 list = ( lwNode ** ) vlist;
73 item = ( lwNode * ) vitem;
78 if ( 0 < compare( node, item ) ) {