From 35f1679b8b0b5dff3021c642c014c2f564393465 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Tue, 5 Nov 2013 15:06:57 +0100 Subject: Add binary search tree for mapping strings to void* pointers. Self balancing AA-tree. --- include/mupdf/fitz/tree.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 include/mupdf/fitz/tree.h (limited to 'include/mupdf/fitz/tree.h') 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 -- cgit v1.2.3