]> git.lizzy.rs Git - dragonstd.git/blobdiff - list.c
Add transformers to iterator functions
[dragonstd.git] / list.c
diff --git a/list.c b/list.c
index f136706196f7ab65909aa671914a9aea760f4a51..d8416d941b6cbd32d87cacd18e70bc21d6a5f09c 100644 (file)
--- a/list.c
+++ b/list.c
@@ -50,19 +50,19 @@ void list_nrm(List *list, ListNode **node)
        free(old);
 }
 
-void list_itr(List *list, Iterator func, void *arg)
+void list_itr(List *list, Iterator iter, void *arg, Transformer trans)
 {
        LIST_ITERATE(list, node)
-               func(node->dat, arg);
+               iter(trans ? trans(node->dat) : node->dat, arg);
 }
 
-void list_clr(List *list, Iterator func, void *arg)
+void list_clr(List *list, Iterator iter, void *arg, Transformer trans)
 {
        for (ListNode *node = list->fst; node != NULL;) {
                ListNode *next = node->nxt;
 
-               if (func)
-                       func(node->dat, arg);
+               if (iter)
+                       iter(trans ? trans(node->dat) : node->dat, arg);
 
                free(node);
                node = next;