Go to the documentation of this file.00001 #ifndef _PTREE_H_
00002 #define _PTREE_H_
00003
00004 typedef struct ptree_node ptree_node_t;
00005
00006 typedef enum {
00007 PTREE_PREORDER = 1,
00008 PTREE_INORDER = 2,
00009 PTREE_POSTORDER = 3
00010 } ptree_order_t;
00011
00012 typedef enum {
00013 PTREE_WALK_STOP = 0,
00014 PTREE_WALK_CONTINUE = 1
00015 } ptree_walk_res_t;
00016
00017 int ptree_contains(void *v, ptree_node_t *root, int(*)(const void *sv,
00018 const void *tv), void **nodeval);
00019 int ptree_remove(void *v, ptree_node_t **root, int(*)(const void *sv,
00020 const void *tv), void **oltval);
00021 int ptree_replace(void *v, ptree_node_t **root, int(*)(const void *sv,
00022 const void *tv), void **oltval);
00023 void ptree_clear(ptree_node_t **root);
00024 ptree_walk_res_t
00025 ptree_walk(ptree_node_t *start,
00026 ptree_order_t order,
00027 ptree_walk_res_t (*func)(const void *v1, int level, void *arg, void *ptree_inorder_walking_remove_arg),
00028 int (*cmp)(const void *v1, const void *v2),
00029 void *arg);
00030 int ptree_inorder_walk_remove(ptree_node_t **rootp, void **oldval, void *piwra,
00031 int (*cmp)(const void *v1, const void *v2));
00032
00033 #endif