summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2011-10-04 09:59:47 +0200
committerLukas Fleischer <calcurse@cryptocrack.de>2011-10-05 12:25:48 +0200
commit9c1cbbdb229978f6a6686ae31cbb401174fd7e93 (patch)
tree6e5d2b5b5f04634a0ae584d5128c2bf72465fe44 /src
parent1fa9564916ea9cd92622b5a549693d23fbf35bcb (diff)
downloadcalcurse-9c1cbbdb229978f6a6686ae31cbb401174fd7e93.tar.gz
calcurse-9c1cbbdb229978f6a6686ae31cbb401174fd7e93.zip
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 <calcurse@cryptocrack.de>
Diffstat (limited to 'src')
-rw-r--r--src/llist.h3
-rw-r--r--src/llist_ts.h3
2 files changed, 6 insertions, 0 deletions
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)