/*
-======================================================================
-list.c
+ ======================================================================
+ list.c
-Generic linked list operations.
+ Generic linked list operations.
-Ernie Wright 17 Sep 00
-====================================================================== */
+ Ernie Wright 17 Sep 00
+ ====================================================================== */
#include "../picointernal.h"
#include "lwo2.h"
/*
-======================================================================
-lwListFree()
-
-Free the items in a list.
-====================================================================== */
-
-void lwListFree( void *list, void ( *freeNode )( void * ))
-{
- lwNode *node, *next;
-
- node = ( lwNode * ) list;
- while ( node ) {
- next = node->next;
- freeNode( node );
- node = next;
- }
+ ======================================================================
+ lwListFree()
+
+ Free the items in a list.
+ ====================================================================== */
+
+void lwListFree( void *list, void ( *freeNode )( void * ) ){
+ lwNode *node, *next;
+
+ node = ( lwNode * ) list;
+ while ( node ) {
+ next = node->next;
+ freeNode( node );
+ node = next;
+ }
}
/*
-======================================================================
-lwListAdd()
-
-Append a node to a list.
-====================================================================== */
-
-void lwListAdd( void **list, void *node )
-{
- lwNode *head, *tail;
-
- head = *(( lwNode ** ) list );
- if ( !head ) {
- *list = node;
- return;
- }
- while ( head ) {
- tail = head;
- head = head->next;
- }
- tail->next = ( lwNode * ) node;
- (( lwNode * ) node )->prev = tail;
+ ======================================================================
+ lwListAdd()
+
+ Append a node to a list.
+ ====================================================================== */
+
+void lwListAdd( void **list, void *node ){
+ lwNode *head, *tail;
+
+ head = *( ( lwNode ** ) list );
+ if ( !head ) {
+ *list = node;
+ return;
+ }
+ while ( head ) {
+ tail = head;
+ head = head->next;
+ }
+ tail->next = ( lwNode * ) node;
+ ( ( lwNode * ) node )->prev = tail;
}
/*
-======================================================================
-lwListInsert()
-
-Insert a node into a list in sorted order.
-====================================================================== */
-
-void lwListInsert( void **vlist, void *vitem, int ( *compare )( void *, void * ))
-{
- lwNode **list, *item, *node, *prev;
-
- if ( !*vlist ) {
- *vlist = vitem;
- return;
- }
-
- list = ( lwNode ** ) vlist;
- item = ( lwNode * ) vitem;
- node = *list;
- prev = NULL;
-
- while ( node ) {
- if ( 0 < compare( node, item )) break;
- prev = node;
- node = node->next;
- }
-
- if ( !prev ) {
- *list = item;
- node->prev = item;
- item->next = node;
- }
- else if ( !node ) {
- prev->next = item;
- item->prev = prev;
- }
- else {
- item->next = node;
- item->prev = prev;
- prev->next = item;
- node->prev = item;
- }
+ ======================================================================
+ lwListInsert()
+
+ Insert a node into a list in sorted order.
+ ====================================================================== */
+
+void lwListInsert( void **vlist, void *vitem, int ( *compare )( void *, void * ) ){
+ lwNode **list, *item, *node, *prev;
+
+ if ( !*vlist ) {
+ *vlist = vitem;
+ return;
+ }
+
+ list = ( lwNode ** ) vlist;
+ item = ( lwNode * ) vitem;
+ node = *list;
+ prev = NULL;
+
+ while ( node ) {
+ if ( 0 < compare( node, item ) ) {
+ break;
+ }
+ prev = node;
+ node = node->next;
+ }
+
+ if ( !prev ) {
+ *list = item;
+ node->prev = item;
+ item->next = node;
+ }
+ else if ( !node ) {
+ prev->next = item;
+ item->prev = prev;
+ }
+ else {
+ item->next = node;
+ item->prev = prev;
+ prev->next = item;
+ node->prev = item;
+ }
}