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