Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=240e48e914697299136518a7a6a98c6dc280ad3c
commit 240e48e914697299136518a7a6a98c6dc280ad3c Author: Michel Hermier <[email protected]> Date: Sun Jun 9 12:38:44 2013 +0200 libflib: Enable __f_foreach to iterate over FList, temporary name till f_foreach is used to iterate FPtrList. diff --git a/lib/libflib/flist.c b/lib/libflib/flist.c index 91f369c..dd13231 100644 --- a/lib/libflib/flist.c +++ b/lib/libflib/flist.c @@ -166,11 +166,12 @@ void f_list_add (FList *list, FListItem *listitem) { } void f_list_add_sorted (FList *list, FListItem *listitem, FCompareFunc cfn, void *user_data) { - FListItem *it = f_list_begin (list), *end = f_list_end (list); + FListItem *it; - while (it != end && - cfn (it, listitem, user_data) <= 0) { - it = it->next; + __f_foreach (it, list) { + if (cfn (it, listitem, user_data) > 0) { + break; + } } f_listitem_insert_before (listitem, it); } @@ -180,11 +181,12 @@ void f_list_append (FList *list, FListItem *listitem) { } size_t f_list_count (FList *list) { - FListItem *it = f_list_begin (list), *end = f_list_end (list); size_t count = 0; + FListItem *it; - for (; it != end; it = it->next) + __f_foreach (it, list) { ++count; + } return count; } diff --git a/lib/libflib/flist.h b/lib/libflib/flist.h index 92d4ee8..4f58817 100644 --- a/lib/libflib/flist.h +++ b/lib/libflib/flist.h @@ -76,22 +76,22 @@ size_t f_list_count (FList *list); #define f_list_entry_previous(ptr, type, member) \ f_list_entry (f_identity_cast (type *, ptr)->member.previous, type, member) -#if 0 -#define f_foreach(it, list) \ + +#define __f_foreach(it, list) \ for (it = f_list_begin (f_identity_cast(FList *, list)); \ it != f_list_end (list); \ it = f_identity_cast(FListItem *, it)->next) -#endif + #define f_foreach_entry(it, list, member) \ for (it = f_list_entry (f_list_begin (list), f_typeof (*it), member); \ &it->member != f_list_end (list); \ it = f_list_entry_next (it, f_typeof (*it), member)) -#if 0 -#define f_rforeach(it, list) \ + +#define __f_rforeach(it, list) \ for (it = f_list_rbegin (f_identity_cast(FList *, list)); \ it != f_list_rend (FList *, list); \ it = f_identity_cast(FListItem *, it)->previous) -#endif + #define f_rforeach_entry(it, list, member) \ for (it = f_list_entry (f_list_rbegin (list), f_typeof (*it), member); \ &it->member != f_list_rend (list); \ _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
