changeset 55:300fba04b7ad

Adjust the foreach linked list functions a bit.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 26 May 2012 03:47:07 +0300
parents 48926b3ff598
children b10f07101e67
files th_util.c th_util.h
diffstat 2 files changed, 9 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/th_util.c	Sat May 26 02:25:27 2012 +0300
+++ b/th_util.c	Sat May 26 03:47:07 2012 +0300
@@ -395,34 +395,34 @@
 }
 
 
-void th_llist_foreach(qlist_t *list, void (*func)(qlist_t *node))
+void th_llist_foreach(qlist_t *list, void (*func)(qlist_t *node, void *userdata), void *data)
 {
     qlist_t *curr = list;
 
     while (curr != NULL)
     {
-        func(curr);
+        func(curr, data);
         curr = curr->next;
     }
 }
 
 
-qlist_t * th_llist_foreach_cond(qlist_t *list, int (*func)(qlist_t *node), int *ret)
+int th_llist_foreach_cond(qlist_t *list, int (*func)(qlist_t *node, void *userdata), void *data, qlist_t **ret)
 {
     qlist_t *curr = list;
 
     while (curr != NULL)
     {
-        int res = func(curr);
+        int res = func(curr, data);
         if (res != 0)
         {
-            *ret = res;
-            return curr;
+            *ret = curr;
+            return res;
         }
         curr = curr->next;
     }
     
-    return NULL;
+    return 0;
 }
 
 
--- a/th_util.h	Sat May 26 02:25:27 2012 +0300
+++ b/th_util.h	Sat May 26 03:47:07 2012 +0300
@@ -115,8 +115,8 @@
 size_t    th_llist_length(const qlist_t *list);
 ssize_t   th_llist_position(const qlist_t *list, const qlist_t *node);
 
-void      th_llist_foreach(qlist_t *list, void (*func)(qlist_t *node));
-qlist_t * th_llist_foreach_cond(qlist_t *list, int (*func)(qlist_t *node), int *ret);
+void      th_llist_foreach(qlist_t *list, void (*func)(qlist_t *node, void *userdata), void *data);
+int       th_llist_foreach_cond(qlist_t *list, int (*func)(qlist_t *node, void *userdata), void *data, qlist_t **res);
 
 qlist_t * th_llist_find(qlist_t *list, const void *data);
 qlist_t * th_llist_find_func(qlist_t *list, const void *userdata, int (compare)(const void *, const void *));