aboutsummaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2025-10-17 20:55:48 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2025-10-17 20:55:48 +0000
commit1d769dd630932b265cd15bb2e5b97459766e3125 (patch)
treed76bd3467c5b0388b6fecfcf435f85897b8a27aa /src/include
parent96b537f42695da1b865588baf591fdfcae76bd41 (diff)
downloadskalibs-1d769dd630932b265cd15bb2e5b97459766e3125.tar.gz
Add string qsort/bsearch cmp functions and avltreeb wrappers
Diffstat (limited to 'src/include')
-rw-r--r--src/include/skalibs/avltreen.h30
-rw-r--r--src/include/skalibs/bytestr.h5
2 files changed, 35 insertions, 0 deletions
diff --git a/src/include/skalibs/avltreen.h b/src/include/skalibs/avltreen.h
index 511452d..96eb284 100644
--- a/src/include/skalibs/avltreen.h
+++ b/src/include/skalibs/avltreen.h
@@ -64,4 +64,34 @@ extern int avltreen_delete (avltreen *, void const *) ;
#define avltreen_iter_nocancel(t, cut, f, p) avlnode_iter_nocancel(avltreen_nodes(t), avltreen_totalsize(t), cut, avltreen_root(t), f, p)
#define avltreen_iter_withcancel(t, f, cancelf, p) avlnode_iter_withcancel(avltreen_nodes(t), avltreen_totalsize(t), avltreen_root(t), f, cancelf, p)
+
+#define AVLTREEB_SPACE(n) (sizeof(avltreen) + (n)*sizeof(avlnode) + ((n)+1)*sizeof(uint32_t))
+#define avltreeb_totalsize(t) avltreen_totalsize((avltreen const *)(t))
+#define avltreeb_len(t) avltreen_len((avltreen const *)(t))
+#define avltreeb_nodes(t) avltreen_nodes((avltreen const *)(t))
+#define avltreeb_data(t, d) avltreen_data((avltreen const *)(t), d)
+#define avltreeb_root(t) avltreen_root((avltreen const *)(t))
+#define avltreeb_setroot(t, r) avltreen_setroot((avltreen *)(t), r)
+
+extern void avltreeb_init (void *, uint32_t, dtok_func_ref, cmp_func_ref, void *) ;
+#define avltreeb_searchnode(t, k) avltreen_searchnode((avltreen const *)(t), k)
+#define avltreeb_search(t, k, data) avltreen_search((avltreen const *)(t), k, data)
+#define avltreeb_height(t) avltreen_height((avltreen const *)(t))
+#define avltreeb_extremenode(t, h) avltreen_extremenode((avltreen const *)(t), h)
+#define avltreeb_minnode(t) avltreen_minnode((avltreen const *)(t))
+#define avltreeb_maxnode(t) avltreen_maxnode((avltreen const *)(t))
+#define avltreeb_extreme(t, h, data) avltreen_extreme((avltreen const *)(t), h, data)
+#define avltreeb_min(t, data) avltreen_min((avltreen const *)(t), data)
+#define avltreeb_max(t, data) avltreen_max((avltreen const *)(t), data)
+
+#define avltreeb_newnode(t, i) avltreen_newnode((avltreen *)(t), d)
+#define avltreeb_insertnode(t, i) avltreen_insertnode((avltreen *)(t), i)
+#define avltreeb_insert(t, d) avltreen_insert((avltreen *)(t), d)
+#define avltreeb_delete(t, k) avltreen_delete((avltreen *)(t), k)
+
+#define avltreeb_iter(t, f, p) avltreen_iter((avltreen *)(t), f, p)
+#define avltreeb_iter_nocancel(t, cut, f, p) avltreen_iter_nocancel((avltreen *)(t), cut, f, p)
+#define avltreeb_iter_withcancel(t, f, cancelf, p) avltreen_iter_withcancel((avltreen *)(t), f, cancelf, p)
+
+
#endif
diff --git a/src/include/skalibs/bytestr.h b/src/include/skalibs/bytestr.h
index 30695f8..c99a94b 100644
--- a/src/include/skalibs/bytestr.h
+++ b/src/include/skalibs/bytestr.h
@@ -50,4 +50,9 @@ extern void case_upperb (char *, size_t) ;
#define case_starts(s, t) case_startb(s, strlen(s), t)
extern int case_startb (char const *, size_t, char const *) gccattr_pure ;
+extern int str_cmp (void const *, void const *) gccattr_pure ;
+extern int str_bcmp (void const *, void const *) gccattr_pure ;
+extern int stringkey_cmp (void const *, void const *) gccattr_pure ;
+extern int stringkey_bcmp (void const *, void const *) gccattr_pure ;
+
#endif