From 9c1cbbdb229978f6a6686ae31cbb401174fd7e93 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 4 Oct 2011 09:59:47 +0200 Subject: src/llist.h: Add LLIST_{,TS}_FIND_FOREACH_CONT In contrast to LLIST_{,TS}_FIND_FOREACH, these convenience macros search for the first match and return successors until there is an item that isn't matched by the filter callback. Any items beyond the first cut-off are discarded. Should be used when results are known to be continuous, such as appointments and events belonging to a specific day etc. Signed-off-by: Lukas Fleischer --- src/llist.h | 3 +++ src/llist_ts.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/llist.h b/src/llist.h index 91a8632..8833c66 100644 --- a/src/llist.h +++ b/src/llist.h @@ -86,6 +86,9 @@ llist_item_t *llist_find_nth (llist_t *, int, long, llist_fn_match_t); #define LLIST_FIND_FOREACH(l, data, fn_match, i) \ for (i = LLIST_FIND_FIRST (l, data, fn_match); i; \ i = LLIST_FIND_NEXT (i, data, fn_match)) +#define LLIST_FIND_FOREACH_CONT(l, data, fn_match, i) \ + for (i = LLIST_FIND_FIRST (l, data, fn_match); i; \ + i = LLIST_NEXT_FILTER (i, data, fn_match)) /* Accessing list item data. */ void *llist_get_data (llist_item_t *); diff --git a/src/llist_ts.h b/src/llist_ts.h index e152f5d..0822a3d 100644 --- a/src/llist_ts.h +++ b/src/llist_ts.h @@ -78,6 +78,9 @@ struct llist_ts { #define LLIST_TS_FIND_FOREACH(l_ts, data, fn_match, i) \ for (i = LLIST_TS_FIND_FIRST (l_ts, data, fn_match); i; \ i = LLIST_TS_FIND_NEXT (i, data, fn_match)) +#define LLIST_TS_FIND_FOREACH_CONT(l_ts, data, fn_match, i) \ + for (i = LLIST_TS_FIND_FIRST (l_ts, data, fn_match); i; \ + i = LLIST_TS_NEXT_FILTER (i, data, fn_match)) /* Accessing list item data. */ #define LLIST_TS_GET_DATA(i) llist_get_data (i) -- cgit v1.2.3-54-g00ecf