From 712dc43d55741bc11490abae8f7edbb8ec982f0d Mon Sep 17 00:00:00 2001 From: David Gibson Date: Thu, 18 Jun 2015 19:30:18 +1000 Subject: [PATCH] avl: Use definitions from order module The AvlCompare type defined in the avl module is identical in signature to the compare function used by qsort() and bsearch(). That has a common definition in the new order module, so use that rather than defining its own. In addition use the standard comparison functions from order where possible for the avl test code. Cc: Joey Adams Signed-off-by: David Gibson --- ccan/avl/_info | 4 ++-- ccan/avl/avl.c | 2 +- ccan/avl/avl.h | 8 ++++---- ccan/avl/test/run.c | 14 +------------- 4 files changed, 8 insertions(+), 20 deletions(-) diff --git a/ccan/avl/_info b/ccan/avl/_info index 83893ddb..c7fc98a4 100644 --- a/ccan/avl/_info +++ b/ccan/avl/_info @@ -33,7 +33,7 @@ * * int main(void) * { - * AVL *avl = avl_new((AvlCompare) strcmp); + * AVL *avl = avl_new((total_order_noctx_cb) strcmp); * AvlIter i; * struct tally *tally; * char line[256]; @@ -75,7 +75,7 @@ int main(int argc, char *argv[]) return 1; if (strcmp(argv[1], "depends") == 0) { - /* Nothing */ + printf("ccan/order\n"); return 0; } diff --git a/ccan/avl/avl.c b/ccan/avl/avl.c index 001ea438..d1647f37 100644 --- a/ccan/avl/avl.c +++ b/ccan/avl/avl.c @@ -62,7 +62,7 @@ static int sign(int cmp) return 1; } -AVL *avl_new(AvlCompare compare) +AVL *avl_new(total_order_noctx_cb compare) { AVL *avl = malloc(sizeof(*avl)); diff --git a/ccan/avl/avl.h b/ccan/avl/avl.h index 4cbe08b1..304de7c2 100644 --- a/ccan/avl/avl.h +++ b/ccan/avl/avl.h @@ -26,13 +26,13 @@ #include #include +#include + typedef struct AVL AVL; typedef struct AvlNode AvlNode; typedef struct AvlIter AvlIter; -typedef int (*AvlCompare)(const void *, const void *); - -AVL *avl_new(AvlCompare compare); +AVL *avl_new(total_order_noctx_cb compare); /* Create a new AVL tree sorted with the given comparison function. */ void avl_free(AVL *avl); @@ -106,7 +106,7 @@ void avl_iter_next(AvlIter *iter); /***************** Internal data structures ******************/ struct AVL { - AvlCompare compare; + total_order_noctx_cb compare; AvlNode *root; size_t count; }; diff --git a/ccan/avl/test/run.c b/ccan/avl/test/run.c index 3ca88d99..f621a327 100644 --- a/ccan/avl/test/run.c +++ b/ccan/avl/test/run.c @@ -132,18 +132,6 @@ struct test_item { size_t insert_id; /* needed because qsort is not a stable sort */ }; -static int compare_uint32_t(const void *ap, const void *bp) -{ - uint32_t a = *(const uint32_t *)ap; - uint32_t b = *(const uint32_t *)bp; - - if (a < b) - return -1; - if (a > b) - return 1; - return 0; -} - static int compare_test_item(const void *ap, const void *bp) { const struct test_item *a = *(void**)ap, *b = *(void**)bp; @@ -266,7 +254,7 @@ static void benchmark(size_t max_per_trial, size_t round_count, bool random_coun } scramble(test_item, count, sizeof(*test_item)); - avl = avl_new(compare_uint32_t); + avl = avl_new(order_u32_noctx); clear_stats(); printf(" Inserting %zu items...\n", count); -- 2.39.2