# HG changeset patch
# User Tuomo Valkonen <tuomov@iki.fi>
# Date 1178460359 -7200
# Node ID 7d1dccdd7215f7dbd6ce5850d0c412afa8f87b51
# Parent  13134ea30227e986ee44b0a5f49b7220650f5661
Some list code improvements

diff -r 13134ea30227 -r 7d1dccdd7215 objlist.c
--- a/objlist.c	Tue Apr 24 19:00:47 2007 +0200
+++ b/objlist.c	Sun May 06 16:05:59 2007 +0200
@@ -136,6 +136,12 @@
 }
 
 
+bool objlist_contains(ObjList *objlist, Obj *obj)
+{
+    return (objlist_find_node(objlist, obj)!=NULL);
+}
+
+
 bool objlist_insert_last(ObjList **objlist, Obj *obj)
 {
     ObjList *node=reuse(objlist);
@@ -177,7 +183,7 @@
     node=objlist_find_node(*objlist, obj);
     
     if(node==NULL)
-        return FALSE;
+        return objlist_insert_last(objlist, obj);
     
     UNLINK_ITEM(*objlist, node, next, prev);
     LINK_ITEM_LAST(*objlist, node, next, prev);
@@ -195,7 +201,7 @@
     node=objlist_find_node(*objlist, obj);
     
     if(node==NULL)
-        return FALSE;
+        return objlist_insert_first(objlist, obj);
     
     UNLINK_ITEM(*objlist, node, next, prev);
     LINK_ITEM_FIRST(*objlist, node, next, prev);
diff -r 13134ea30227 -r 7d1dccdd7215 objlist.h
--- a/objlist.h	Tue Apr 24 19:00:47 2007 +0200
+++ b/objlist.h	Sun May 06 16:05:59 2007 +0200
@@ -48,6 +48,7 @@
 extern bool objlist_reinsert_last(ObjList **objlist, Obj *obj);
 extern bool objlist_reinsert_first(ObjList **objlist, Obj *obj);
 extern bool objlist_remove(ObjList **objlist, Obj *obj);
+extern bool objlist_contains(ObjList *objlist, Obj *obj);
 extern void objlist_clear(ObjList **objlist);
 extern void objlist_iter_init(ObjListIterTmp *state, ObjList *objlist);
 extern Obj *objlist_iter(ObjListIterTmp *state);
diff -r 13134ea30227 -r 7d1dccdd7215 ptrlist.c
--- a/ptrlist.c	Tue Apr 24 19:00:47 2007 +0200
+++ b/ptrlist.c	Sun May 06 16:05:59 2007 +0200
@@ -53,6 +53,12 @@
 }
 
 
+bool ptrlist_contains(PtrList *ptrlist, void *ptr)
+{
+    return (ptrlist_find_node(ptrlist, ptr)!=NULL);
+}
+
+
 bool ptrlist_insert_last(PtrList **ptrlist, void *ptr)
 {
     PtrList *node=mknode(ptr);
@@ -84,7 +90,7 @@
     PtrList *node=ptrlist_find_node(*ptrlist, ptr);
     
     if(node==NULL)
-        return FALSE;
+        return ptrlist_insert_last(ptrlist, ptr);
     
     UNLINK_ITEM(*ptrlist, node, next, prev);
     LINK_ITEM_LAST(*ptrlist, node, next, prev);
@@ -98,7 +104,7 @@
     PtrList *node=ptrlist_find_node(*ptrlist, ptr);
     
     if(node==NULL)
-        return FALSE;
+        return ptrlist_insert_first(ptrlist, ptr);
     
     UNLINK_ITEM(*ptrlist, node, next, prev);
     LINK_ITEM_FIRST(*ptrlist, node, next, prev);
diff -r 13134ea30227 -r 7d1dccdd7215 ptrlist.h
--- a/ptrlist.h	Tue Apr 24 19:00:47 2007 +0200
+++ b/ptrlist.h	Sun May 06 16:05:59 2007 +0200
@@ -46,6 +46,7 @@
 extern bool ptrlist_reinsert_last(PtrList **ptrlist, void *ptr);
 extern bool ptrlist_reinsert_first(PtrList **ptrlist, void *ptr);
 extern bool ptrlist_remove(PtrList **ptrlist, void *ptr);
+extern bool ptrlist_contains(PtrList *ptrlist, void *ptr);
 extern void ptrlist_clear(PtrList **ptrlist);
 extern void ptrlist_iter_init(PtrListIterTmp *state, PtrList *ptrlist);
 extern void *ptrlist_iter(PtrListIterTmp *state);