diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2013-11-05 15:06:57 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2013-11-05 16:05:12 +0100 |
commit | 35f1679b8b0b5dff3021c642c014c2f564393465 (patch) | |
tree | 3ad66eefebb68f2fed7c91e07d42a023aba16ab0 /include/mupdf/fitz/tree.h | |
parent | 042b1dae44e58fd59b01671d85129bc7971136bf (diff) | |
download | mupdf-35f1679b8b0b5dff3021c642c014c2f564393465.tar.xz |
Add binary search tree for mapping strings to void* pointers.
Self balancing AA-tree.
Diffstat (limited to 'include/mupdf/fitz/tree.h')
-rw-r--r-- | include/mupdf/fitz/tree.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/include/mupdf/fitz/tree.h b/include/mupdf/fitz/tree.h new file mode 100644 index 00000000..f2cc4848 --- /dev/null +++ b/include/mupdf/fitz/tree.h @@ -0,0 +1,24 @@ +#ifndef MUPDF_FITZ_TREE_H +#define MUPDF_FITZ_TREE_H + +#include "mupdf/fitz/system.h" +#include "mupdf/fitz/context.h" + +/* AA-tree to look up things by strings. */ + +typedef struct fz_tree_s fz_tree; + +void *fz_tree_lookup(fz_context *ctx, fz_tree *node, const char *key); + +/* + Insert a new key/value pair and rebalance the tree. + Return the new root of the tree after inserting and rebalancing. + May be called with a NULL root to create a new tree. +*/ +fz_tree *fz_tree_insert(fz_context *ctx, fz_tree *root, const char *key, void *value); + +void fz_free_tree(fz_context *ctx, fz_tree *node, void (*freefunc)(fz_context *ctx, void *value)); + +void fz_debug_tree(fz_context *ctx, fz_tree *root); + +#endif |