Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c9a44231029f610525e8e1b29f90b16bd722e3be

commit c9a44231029f610525e8e1b29f90b16bd722e3be
Author: Michel Hermier <[email protected]>
Date:   Sat Jun 8 16:46:19 2013 +0200

libflib: Add f_list_new/delete and additional iterator and positional accessors 
fixes.

diff --git a/lib/libflib/flist.c b/lib/libflib/flist.c
index 8b61a90..284fde8 100644
--- a/lib/libflib/flist.c
+++ b/lib/libflib/flist.c
@@ -127,8 +127,20 @@ void f_list_init (FList *list) {
void f_list_fini (FList *list, FVisitorFunc fn, void *user_data) {
}

+FList *f_list_new () {
+       FList *list = f_zalloc (sizeof (*list));
+
+       f_list_init (list);
+       return list;
+}
+
+void f_list_delete (FList *list, FVisitorFunc fn, void *user_data) {
+       f_list_fini (list, fn, user_data);
+       f_free (list);
+}
+
FListItem *f_list_begin (FList *list) {
-       return f_list_first (list);
+       return list != NULL ? list->head.next : NULL;
}

FListItem *f_list_end (FList *list) {
@@ -136,7 +148,7 @@ FListItem *f_list_end (FList *list) {
}

FListItem *f_list_rbegin (FList *list) {
-       return f_list_last (list);
+       return list != NULL ? list->head.previous : NULL;
}

FListItem *f_list_rend (FList *list) {
@@ -144,15 +156,15 @@ FListItem *f_list_rend (FList *list) {
}

FListItem *f_list_first (FList *list) {
-       FListItem *head = f_list_head (list);
+       FListItem *first = f_list_begin (list);

-       return head != NULL ? head->next : NULL;
+       return first != f_list_end (list) ? first : NULL;
}

FListItem *f_list_last (FList *list) {
-       FListItem *head = f_list_head (list);
+       FListItem *last = f_list_rbegin (list);

-       return head != NULL ? head->previous : NULL;
+       return last != f_list_rend (list) ? last : NULL;
}

int f_list_add (FList *list, FListItem *listitem) {
diff --git a/lib/libflib/flist.h b/lib/libflib/flist.h
index e80bfa1..e98c8bf 100644
--- a/lib/libflib/flist.h
+++ b/lib/libflib/flist.h
@@ -55,6 +55,9 @@ struct FList {
void f_list_init (FList *list);
void f_list_fini (FList *list, FVisitorFunc fn, void *user_data);

+FList *f_list_new (void);
+void f_list_delete (FList *list, FVisitorFunc fn, void *user_data);
+
FListItem *f_list_begin (FList *list);
FListItem *f_list_end (FList *list);
FListItem *f_list_rbegin (FList *list);
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to