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

Reply via email to