From 93b27fe8319f1f8d2b4f34bf5540cd4d58b73f80 Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Thu, 24 Feb 2005 03:27:19 +0000 Subject: begin tree implementation git-svn-id: https://svn.musicpd.org/mpd/trunk@2984 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/tree.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/tree.c (limited to 'src') diff --git a/src/tree.c b/src/tree.c new file mode 100644 index 000000000..1f3b21546 --- /dev/null +++ b/src/tree.c @@ -0,0 +1,52 @@ +#include "tree.h" + +static inline TreeNode * newTreeNode() { + TreeNode * ret = malloc(sizeof(TreeNode)); + + ret->data[0] = NULL; + ret->data[1] = NULL; + + ret->children[0] = NULL; + ret->children[1] = NULL; + ret->children[2] = NULL; + + return ret; +} + +static inline void freeTreeNode(TreeNode * node) { + free(node); +} + +Tree * newTree(TreeFreeDataFunc * freeFunc, TreeCompareDataFunc * compareFunc) { + Tree * ret = malloc(sizeof(Tree)); + + ret->headNode = NULL; + ret->freeFunc = freeFunc; + ret->compareFunc = compareFunc; + + return ret; +} + +void freeTree(Tree * tree) { + TreeIterator * iter = newTreeIterator(tree, POSTORDER); + + TreeNode * node; + + if(data->freeFunc) { + void * data; + + while( ( data = nextTreeIterator(iter) ) ) { + + } + + freeTreeIterator(iter); + + iter = newTreeIterator(tree, POSTORDER); + } + + while( ( node = nextNodeTreeIterator(iter) ) ) { + freeTreeNode(node); + } + + freeTreeIterator(iter); +} -- cgit v1.2.3