summaryrefslogtreecommitdiffstats
path: root/nserver/src/tstree.h
diff options
context:
space:
mode:
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