72
71
#define is_tree_inited(tree) ((tree)->root != 0)
74
73
/* Functions on leafs */
75
TREE_ELEMENT *tree_insert(TREE *tree,void *key, uint32_t key_size,
74
TREE_ELEMENT *tree_insert(TREE *tree,void *key, uint32_t key_size,
77
76
void *tree_search(TREE *tree, void *key, void *custom_arg);
78
77
int tree_walk(TREE *tree,tree_walk_action action,
79
78
void *argument, TREE_WALK visit);
80
79
int tree_delete(TREE *tree, void *key, uint32_t key_size, void *custom_arg);
81
void *tree_search_key(TREE *tree, const void *key,
80
void *tree_search_key(TREE *tree, const void *key,
82
81
TREE_ELEMENT **parents, TREE_ELEMENT ***last_pos,
83
82
enum ha_rkey_function flag, void *custom_arg);
84
void *tree_search_edge(TREE *tree, TREE_ELEMENT **parents,
83
void *tree_search_edge(TREE *tree, TREE_ELEMENT **parents,
85
84
TREE_ELEMENT ***last_pos, int child_offs);
86
void *tree_search_next(TREE *tree, TREE_ELEMENT ***last_pos, int l_offs,
85
void *tree_search_next(TREE *tree, TREE_ELEMENT ***last_pos, int l_offs,
88
ha_rows tree_record_pos(TREE *tree, const void *key,
87
ha_rows tree_record_pos(TREE *tree, const void *key,
89
88
enum ha_rkey_function search_flag, void *custom_arg);
91
90
#define TREE_ELEMENT_EXTRA_SIZE (sizeof(TREE_ELEMENT) + sizeof(void*))