summaryrefslogtreecommitdiffstats
path: root/nserver/src/tstree.h
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2020-01-28 20:21:58 -0500
committerrsiddharth <s@ricketyspace.net>2020-04-17 20:56:36 -0400
commit7b87d0d194f428ee1e9d32c5022c1ea9620a9f84 (patch)
tree59be9c939532be5a3010b07e2bd7044a96ff1fa0 /nserver/src/tstree.h
parent6df55dc3b463b9e9017abb0461c861a6890ec195 (diff)
nserver: Add tstree.h
Diffstat (limited to 'nserver/src/tstree.h')
-rw-r--r--nserver/src/tstree.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/nserver/src/tstree.h b/nserver/src/tstree.h
new file mode 100644
index 0000000..6defc39
--- /dev/null
+++ b/nserver/src/tstree.h
@@ -0,0 +1,30 @@
+#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