liblist-c

C type-agnostic linked-list library
git clone https://git.sinitax.com/sinitax/liblist-c
Log | Files | Refs | LICENSE | sfeed.txt

commit acb63a984ad49a86daeb444696494ad3461fcfc4
parent d7590f411fed9f98cae458162c28568761b8fb95
Author: Louis Burda <quent.burda@gmail.com>
Date:   Tue, 15 Mar 2022 16:51:17 +0100

Change list_sort ascending to reverse

Diffstat:
Minclude/list.h | 4++--
Msrc/list.c | 8++++----
2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/include/list.h b/include/list.h @@ -37,9 +37,9 @@ void list_clear(struct list *list); bool list_empty(struct list *list); size_t list_len(struct list *list); -void list_insert_sorted(struct list *list, struct link *link, bool ascending, +void list_insert_sorted(struct list *list, struct link *link, bool reverse, bool (*in_order)(struct link *a, struct link *b)); -void list_sort(struct list *list, bool ascending, +void list_sort(struct list *list, bool reverse, bool (*in_order)(struct link *a, struct link *b)); int list_index(struct list *list, struct link *link); diff --git a/src/list.c b/src/list.c @@ -111,7 +111,7 @@ list_len(struct list *list) } void -list_insert_sorted(struct list *list, struct link *insert, bool ascending, +list_insert_sorted(struct list *list, struct link *insert, bool reverse, bool (*in_order)(struct link *a, struct link *b)) { struct link *link; @@ -122,7 +122,7 @@ list_insert_sorted(struct list *list, struct link *insert, bool ascending, /* cmp(a,b) -> (a-b) */ for (LIST_ITER(list, link)) { - if (ascending == in_order(insert, link)) { + if (in_order(insert, link) == !reverse) { link_prepend(link, insert); return; } @@ -132,7 +132,7 @@ list_insert_sorted(struct list *list, struct link *insert, bool ascending, } void -list_sort(struct list *list, bool ascending, +list_sort(struct list *list, bool reverse, bool (*in_order)(struct link *a, struct link *b)) { struct link *link, *cmp, *next; @@ -145,7 +145,7 @@ list_sort(struct list *list, bool ascending, next = link->next; cmp = link->prev; while (LIST_INNER(cmp)) { - if (ascending == in_order(cmp, link)) + if (in_order(cmp, link) == !reverse) break; cmp = cmp->prev; }