[PATCH 3/4] string-list: add for_each_string_list()
- From
Jay Soffian <jaysoffian@gmail.com>
- Date
- Feb 19, 2009, 05:14 UTC
- Message-ID
- <1235020471-59982-4-git-send-email-jaysoffian@gmail.com>
- In-Reply-To
- <1235020471-59982-3-git-send-email-jaysoffian@gmail.com>
Give string-list a convenience function for iterating over each of the items in a string_list.
Signed-off-by: Jay Soffian <jaysoffian@gmail.com> --- string-list.c | 10 ++++++++++ string-list.h | 5 +++++ 2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/string-list.c b/string-list.c index 15e14cf..1ac536e 100644 --- a/string-list.c +++ b/string-list.c @@ -92,6 +92,16 @@ struct string_list_item *string_list_lookup(const char *string, struct string_li 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 d32ba05..14bbc47 100644 --- a/string-list.h +++ b/string-list.h @@ -20,6 +20,11 @@ void string_list_clear(struct string_list *list, int free_util); 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,
-- 1.6.2.rc1.218.g1b4fab