Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9b349976e7b2934e5ae244362d3ca62a6aff5f89
commit 9b349976e7b2934e5ae244362d3ca62a6aff5f89 Author: Michel Hermier <[email protected]> Date: Wed May 15 19:41:24 2013 +0200 libflib: Remove f_list_detect_next, Add list argument to listaccumulator (to extend this list with the accumulator). diff --git a/lib/libflib/flist.c b/lib/libflib/flist.c index 3d1c818..dedac0b 100644 --- a/lib/libflib/flist.c +++ b/lib/libflib/flist.c @@ -191,7 +191,7 @@ FList *f_list_copy (FList *list) { FList *f_list_deep_copy (FList *list, FCopyFunc fn, void *user_data) { FListAccumulator listaccumulator; - f_listaccumulator_init (&listaccumulator); + f_listaccumulator_init (&listaccumulator, f_list_new ()); for (; list; list = list->next) { f_listaccumulator (fn (list->data, user_data), &listaccumulator); } @@ -204,25 +204,21 @@ void f_list_detach (FList *list, FCopyFunc fn, void *user_data) { } } -FList *f_list_detect (FList *list, FDetectFunc fn, void *user_data) { +FList *f_list_detect (FList *list, FDetectFunc dfn, void *user_data) { for (; list != NULL; list = list->next) { - if (fn (list->data, user_data) == 0) { + if (dfn (list->data, user_data) == 0) { break; } } return list; } -FList *f_list_detect_next (FList *list, FDetectFunc fn, void *user_data) { - return f_list_detect (f_list_next (list), fn, user_data); -} - FList *f_list_filter (FList *list, FDetectFunc dfn, void *user_data) { FListAccumulator listaccumulator; - f_listaccumulator_init (&listaccumulator); + f_listaccumulator_init (&listaccumulator, f_list_new ()); for (list = f_list_detect (list, dfn, user_data); list != NULL; - list = f_list_detect_next (list, dfn, user_data)) { + list = f_list_detect (f_list_next (list), dfn, user_data)) { f_listaccumulator (list->data, &listaccumulator); } return f_listaccumulator_fini (&listaccumulator); @@ -249,7 +245,7 @@ void f_list_foreach (FList *list, FVisitorFunc fn, void *user_data) { void f_list_foreach_filtered (FList *list, FVisitorFunc fn, FDetectFunc dfn, void *user_data) { for (list = f_list_detect (list, dfn, user_data); list != NULL; - list = f_list_detect_next (list, dfn, user_data)) { + list = f_list_detect (f_list_next (list), dfn, user_data)) { fn (list->data, user_data); } } @@ -261,7 +257,7 @@ void f_list_foreach_filtered (FList *list, FVisitorFunc fn, FDetectFunc dfn, voi FList *f_list_reverse (FList *list) { FListAccumulator listaccumulator; - f_listaccumulator_init (&listaccumulator); + f_listaccumulator_init (&listaccumulator, f_list_new ()); f_list_foreach (list, (FVisitorFunc)f_listreverseaccumulator, &listaccumulator); return f_listaccumulator_fini (&listaccumulator); } @@ -276,7 +272,7 @@ void f_list_reverse_foreach (FList *list, FVisitorFunc fn, void *user_data) { FList *f_list_uniques (FList *list, FCompareFunc fn, void *user_data) { FListAccumulator listaccumulator; - f_listaccumulator_init (&listaccumulator); + f_listaccumulator_init (&listaccumulator, f_list_new ()); for (; list != NULL; list = list->next) { if (f_list_find_custom (listaccumulator.head, list->data, fn, user_data) == NULL) { f_listaccumulator (list->data, &listaccumulator); diff --git a/lib/libflib/flist.h b/lib/libflib/flist.h index 57443be..62d55ec 100644 --- a/lib/libflib/flist.h +++ b/lib/libflib/flist.h @@ -68,8 +68,7 @@ FList *f_list_concat (FList *list1, FList *list2); FList *f_list_copy (FList *list); FList *f_list_deep_copy (FList *list, FCopyFunc fn, void *user_data); void f_list_detach (FList *list, FCopyFunc fn, void *user_data); -FList *f_list_detect (FList *list, FDetectFunc fn, void *user_data); -FList *f_list_detect_next (FList *list, FDetectFunc fn, void *user_data); +FList *f_list_detect (FList *list, FDetectFunc dfn, void *user_data); FList *f_list_filter (FList *list, FDetectFunc fn, void *user_data); FList *f_list_find (FList *list, const void *data); FList *f_list_find_custom (FList *list, const void *data, FCompareFunc cfn, void *user_data); diff --git a/lib/libflib/flistaccumulator.c b/lib/libflib/flistaccumulator.c index 8516466..25bbc35 100644 --- a/lib/libflib/flistaccumulator.c +++ b/lib/libflib/flistaccumulator.c @@ -27,14 +27,15 @@ #include "flist.h" -void f_listaccumulator_init (FListAccumulator *listaccumulator) { - listaccumulator->head = listaccumulator->last = NULL; +void f_listaccumulator_init (FListAccumulator *listaccumulator, FList *list) { + listaccumulator->head = list; + listaccumulator->last = f_list_last (list); } FList *f_listaccumulator_fini (FListAccumulator *listaccumulator) { FList *ret = listaccumulator->head; - f_listaccumulator_init (listaccumulator); + listaccumulator->head = listaccumulator->last = NULL; return ret; } diff --git a/lib/libflib/flistaccumulator.h b/lib/libflib/flistaccumulator.h index 6b3e4a2..d699974 100644 --- a/lib/libflib/flistaccumulator.h +++ b/lib/libflib/flistaccumulator.h @@ -31,7 +31,7 @@ struct FListAccumulator { FList *last; }; -void f_listaccumulator_init (FListAccumulator *listaccumulator); +void f_listaccumulator_init (FListAccumulator *listaccumulator, FList *list); FList *f_listaccumulator_fini (FListAccumulator *listaccumulator); void f_listaccumulator_accumulate (FListAccumulator *listaccumulator, void *data); _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
