summaryrefslogtreecommitdiffstats
path: root/src/tstree.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/tstree.h')
-rw-r--r--src/tstree.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/tstree.h b/src/tstree.h
new file mode 100644
index 0000000..bd22e0d
--- /dev/null
+++ b/src/tstree.h
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/*
+ * Copyright © 2010, Zed A. Shaw.
+ * Copyright © 2020 rsiddharth <s@ricketyspace.net>
+ */
+
+#ifndef _TSTree_h
+#define _TSTree_h
+
+#include <stdlib.h>
+#include <darray.h>
+
+typedef struct TSTree {
+ char splitchar;
+ struct TSTree *low;
+ struct TSTree *equal;
+ struct TSTree *high;
+ void *value;
+} TSTree;
+
+void *TSTree_search(TSTree *root, const char *key, size_t len);
+
+void *TSTree_search_prefix(TSTree *root, const char *key, size_t len);
+
+DArray *TSTree_collect(TSTree *root, const char *key, size_t len);
+
+typedef void (* TSTree_traverse_cb) (void *value, void *data);
+
+TSTree *TSTree_insert(TSTree *node, const char *key, size_t len,
+ void *value);
+
+void TSTree_traverse(TSTree *node, TSTree_traverse_cb cb, void *data);
+
+void TSTree_destroy(TSTree *root);
+
+#endif