summaryrefslogtreecommitdiff
path: root/include/mupdf/fitz/tree.h
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2013-11-05 15:06:57 +0100
committerTor Andersson <tor.andersson@artifex.com>2013-11-05 16:05:12 +0100
commit35f1679b8b0b5dff3021c642c014c2f564393465 (patch)
tree3ad66eefebb68f2fed7c91e07d42a023aba16ab0 /include/mupdf/fitz/tree.h
parent042b1dae44e58fd59b01671d85129bc7971136bf (diff)
downloadmupdf-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.h24
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