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

commit 760803fe234b646170e64b0f68ea9d0dacf92c27
Author: Michel Hermier <herm...@frugalware.org>
Date:   Sat Dec 21 15:49:04 2013 +0100

libpacman: Add some helpers in fstringlist.h.

diff --git a/lib/libpacman/util/list.c b/lib/libpacman/util/list.c
index d77b500..38eef73 100644
--- a/lib/libpacman/util/list.c
+++ b/lib/libpacman/util/list.c
@@ -38,6 +38,11 @@ void f_listitem_delete(FListItem *item, FVisitor *visitor)
free(item);
}

+FList *f_list_new()
+{
+       return NULL;
+}
+
int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data)
{
return f_list_find(list, comparator, comparator_data) != NULL;
@@ -271,13 +276,6 @@ FPtrListItem *f_ptrlistitem_new(void *ptr)
return item;
}

-FPtrList *f_ptrlist_new(void)
-{
-       FPtrListItem *item = f_ptrlistitem_new(NULL);
-       item->last = item;
-       return (FPtrList *)item;
-}
-
void f_ptrlistitem_delete(FListItem *item, FVisitor *visitor)
{
ASSERT(item != NULL, return);
@@ -293,7 +291,14 @@ int f_ptrlistitem_ptrcmp(const FListItem *item, const void 
*ptr) {
return f_ptrcmp(item->data, ptr);
}

-void f_ptrlist_delete(FPtrList *list, FVisitor *visitor)
+FPtrList *f_ptrlist_new(void)
+{
+       FPtrListItem *item = f_ptrlistitem_new(NULL);
+       item->last = item;
+       return (FPtrList *)item;
+}
+
+int f_ptrlist_delete(FPtrList *list, FVisitor *visitor)
{
f_ptrlist_clear(list, visitor);
}
@@ -318,7 +323,7 @@ int f_ptrlist_any_match(const FPtrList *list, const 
FMatcher *matcher)
return f_list_any_match(list, &itemmatcher);
}

-void f_ptrlist_clear(FPtrList *list, FVisitor *visitor)
+int f_ptrlist_clear(FPtrList *list, FVisitor *visitor)
{
FPtrList *next;

@@ -330,6 +335,7 @@ void f_ptrlist_clear(FPtrList *list, FVisitor *visitor)
free(list);
list = next;
}
+       return 0;
}

int f_ptrlist_contains_ptr(const FPtrList *list, const void *ptr)
diff --git a/lib/libpacman/util/list.h b/lib/libpacman/util/list.h
index 607fb10..c8ff0a0 100644
--- a/lib/libpacman/util/list.h
+++ b/lib/libpacman/util/list.h
@@ -54,6 +54,8 @@ typedef int (*_pacman_fn_cmp)(const void *, const void *);

void f_listitem_delete(FListItem *item, FVisitor *visitor);

+FList *f_list_new(void);
+
int f_list_contains(const FList *list, FListItemComparatorFunc comparator, 
const void *comparator_data);
int f_list_count(const FList *list);
int f_list_empty(const FList *list);
@@ -78,11 +80,11 @@ int f_ptrlistitem_match(const FListItem *item, const 
FMatcher *matcher);
int f_ptrlistitem_ptrcmp(const FListItem *item, const void *ptr);

FPtrList *f_ptrlist_new(void);
-void f_ptrlist_delete(FPtrList *list, FVisitor *visitor);
+int f_ptrlist_delete(FPtrList *list, FVisitor *visitor);

int f_ptrlist_all_match(const FPtrList *list, const FMatcher *matcher);
int f_ptrlist_any_match(const FPtrList *list, const FMatcher *matcher);
-void f_ptrlist_clear(FPtrList *list, FVisitor *visitor);
+int f_ptrlist_clear(FPtrList *list, FVisitor *visitor);
#define f_ptrlist_contains f_list_contains
int f_ptrlist_contains_ptr(const FPtrList *list, const void *ptr);
#define f_ptrlist_count f_list_count
diff --git a/lib/libpacman/util/stringlist.c b/lib/libpacman/util/stringlist.c
index a135f57..3344cf0 100644
--- a/lib/libpacman/util/stringlist.c
+++ b/lib/libpacman/util/stringlist.c
@@ -74,6 +74,22 @@ FStringList *_pacman_list_strdup(FStringList *list)
return(newlist);
}

+static
+struct FVisitor f_stringlistitem_destroyvisitor = {
+       .fn = (FVisitorFunc)free,
+       .data = NULL,
+};
+
+FStringList *f_stringlist_new(void)
+{
+       return f_ptrlist_new();
+}
+
+int f_stringlist_delete(FStringList *self)
+{
+       return f_ptrlist_delete(self, &f_stringlistitem_destroyvisitor);
+}
+
int f_stringlist_all_match(const FStringList *list, const FStrMatcher *matcher)
{
return f_ptrlist_all_match(list, (const FMatcher *)matcher);
@@ -99,4 +115,9 @@ FStringList *f_stringlist_append_stringlist(FStringList 
*dest, const FStringList
return dest;
}

+int f_stringlist_clear(FStringList *self)
+{
+       return f_ptrlist_clear(self, &f_stringlistitem_destroyvisitor);
+}
+
/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/stringlist.h b/lib/libpacman/util/stringlist.h
index c6e8d44..8bc5e8a 100644
--- a/lib/libpacman/util/stringlist.h
+++ b/lib/libpacman/util/stringlist.h
@@ -33,10 +33,14 @@ int _pacman_list_is_strin(const char *needle, FStringList 
*haystack);
FStringList *_pacman_list_remove_dupes(FStringList *list);
FStringList *_pacman_list_strdup(FStringList *list);

+FStringList *f_stringlist_new(void);
+int f_stringlist_delete(FStringList *self);
+
int f_stringlist_all_match(const FStringList *list, const FStrMatcher *matcher);
int f_stringlist_any_match(const FStringList *list, const FStrMatcher *matcher);
FStringList *f_stringlist_append(FStringList *list, const char *s);
FStringList *f_stringlist_append_stringlist(FStringList *dest, const 
FStringList *src);
+int f_stringlist_clear(FStringList *self);

#endif /* _PACMAN_STRINGLIST_H */
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to