summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5f48cb9)
raw | patch | inline | side by side (parent: 5f48cb9)
author | Jay Soffian <jaysoffian@gmail.com> | |
Wed, 25 Feb 2009 08:32:18 +0000 (03:32 -0500) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Fri, 27 Feb 2009 23:19:08 +0000 (15:19 -0800) |
Add a convenience function for iterating over a string_list's items via
a callback.
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
a callback.
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
string-list.c | patch | blob | history | |
string-list.h | patch | blob | history |
diff --git a/string-list.c b/string-list.c
index 15e14cf47a586613a62970b393c269728ffbef93..1ac536e638dbbc02deb2d4e4a607cc52f7f7c108 100644 (file)
--- a/string-list.c
+++ b/string-list.c
return list->items + i;
}
+int for_each_string_list(string_list_each_func_t fn,
+ struct string_list *list, void *cb_data)
+{
+ int i, ret = 0;
+ for (i = 0; i < list->nr; i++)
+ if ((ret = fn(&list->items[i], cb_data)))
+ break;
+ return ret;
+}
+
void string_list_clear(struct string_list *list, int free_util)
{
if (list->items) {
diff --git a/string-list.h b/string-list.h
index d32ba05202880733dd76f5465a0ae16753d1fba6..14bbc477decc32618139e912fda22e585d815159 100644 (file)
--- a/string-list.h
+++ b/string-list.h
typedef void (*string_list_clear_func_t)(void *p, const char *str);
void string_list_clear_func(struct string_list *list, string_list_clear_func_t clearfunc);
+/* Use this function to iterate over each item */
+typedef int (*string_list_each_func_t)(struct string_list_item *, void *);
+int for_each_string_list(string_list_each_func_t,
+ struct string_list *list, void *cb_data);
+
/* Use these functions only on sorted lists: */
int string_list_has_string(const struct string_list *list, const char *string);
int string_list_find_insert_index(const struct string_list *list, const char *string,