diff options
Diffstat (limited to 'src/tstree.h')
-rw-r--r-- | src/tstree.h | 36 |
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 |