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

Reply via email to