aboutsummaryrefslogtreecommitdiffstats
path: root/src/llist_ts.h
diff options
context:
space:
mode:
authorLars Henriksen <LarsHenriksen@get2net.dk>2018-04-14 09:25:40 +0200
committerLukas Fleischer <lfleischer@calcurse.org>2021-01-16 22:37:24 -0500
commitb44307cc83c730618bec85e91bab490d11f8dc64 (patch)
tree40a02b835afeae17b3d4bfe57108b25c2accb6bc /src/llist_ts.h
parente44613411a61e41ce4b1d43bd9a2460b539e366b (diff)
downloadcalcurse-b44307cc83c730618bec85e91bab490d11f8dc64.tar.gz
calcurse-b44307cc83c730618bec85e91bab490d11f8dc64.zip
Keep a linked list sorted
A general linked list function, llist_reorder(), is introduced that will reorder a list after a list element has changed. Some refactoring to avoid code dupliction. Background The four linked lists of appointment panel items (appointments, recurring appointments, events, recurring events) are kept sorted by inserting elements in order, either when they are first loaded from disk or when new are added. The ordering is by start time (numerical) and description (alphabetical). The user is allowed to change start time as well as description. A change is committed directly to the list item (unlike cut/paste where an item is deleted and then inserted). This may break the order. The order property is used when events are loaded from the evenlist into the day_item vector, see LLIST_FIND_FOREACH_CONT, and when looking for the next upcoming appointment, see apoint_check_next(). Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src/llist_ts.h')
-rw-r--r--src/llist_ts.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/llist_ts.h b/src/llist_ts.h
index 6597cde..1604d3e 100644
--- a/src/llist_ts.h
+++ b/src/llist_ts.h
@@ -90,3 +90,5 @@ struct llist_ts {
#define LLIST_TS_REMOVE(l_ts, i) llist_remove ((llist_t *)l_ts, i)
#define LLIST_TS_ADD_SORTED(l_ts, data, fn_cmp) \
llist_add_sorted ((llist_t *)l_ts, data, (llist_fn_cmp_t)fn_cmp)
+#define LLIST_TS_REORDER(l_ts, data, fn_cmp) \
+ llist_reorder((llist_t *)l_ts, data, (llist_fn_cmp_t)fn_cmp)