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
