|
Defines |
| #define | ROOT_NODE(n) (!(n)->parent) |
| #define | INDEX_NODE(n) ((n)->subtree[0] != NULL) |
| #define | LEAF_NODE(n) ((n)->subtree[0] == NULL) |
| #define | FILL_FACTOR ((BTREE_M-1)/2) |
| #define | MEDIAN_LOW_INDEX(n) (((n)->keys-1)/2) |
| #define | MEDIAN_HIGH_INDEX(n) ((n)->keys/2) |
| #define | MEDIAN_LOW(n) ((n)->key[MEDIAN_LOW_INDEX((n))]); |
| #define | MEDIAN_HIGH(n) ((n)->key[MEDIAN_HIGH_INDEX((n))]); |
Functions |
| static void | btree_destroy_subtree (btree_node_t *root) |
| static void | _btree_insert (btree_t *t, btree_key_t key, void *value, btree_node_t *rsubtree, btree_node_t *node) |
| static void | _btree_remove (btree_t *t, btree_key_t key, btree_node_t *node) |
| static void | node_initialize (btree_node_t *node) |
| static void | node_insert_key_and_lsubtree (btree_node_t *node, btree_key_t key, void *value, btree_node_t *lsubtree) |
| static void | node_insert_key_and_rsubtree (btree_node_t *node, btree_key_t key, void *value, btree_node_t *rsubtree) |
| static void | node_remove_key_and_lsubtree (btree_node_t *node, btree_key_t key) |
| static void | node_remove_key_and_rsubtree (btree_node_t *node, btree_key_t key) |
| static btree_node_t * | node_split (btree_node_t *node, btree_key_t key, void *value, btree_node_t *rsubtree, btree_key_t *median) |
| static btree_node_t * | node_combine (btree_node_t *node) |
| static index_t | find_key_by_subtree (btree_node_t *node, btree_node_t *subtree, bool right) |
| static void | rotate_from_right (btree_node_t *lnode, btree_node_t *rnode, index_t idx) |
| static void | rotate_from_left (btree_node_t *lnode, btree_node_t *rnode, index_t idx) |
| static bool | try_insert_by_rotation_to_left (btree_node_t *node, btree_key_t key, void *value, btree_node_t *rsubtree) |
| static bool | try_insert_by_rotation_to_right (btree_node_t *node, btree_key_t key, void *value, btree_node_t *rsubtree) |
| static bool | try_rotation_from_left (btree_node_t *rnode) |
| static bool | try_rotation_from_right (btree_node_t *lnode) |
| void | btree_init (void) |
| void | btree_create (btree_t *t) |
| void | btree_destroy (btree_t *t) |
| void | btree_insert (btree_t *t, btree_key_t key, void *value, btree_node_t *leaf_node) |
| void | btree_remove (btree_t *t, btree_key_t key, btree_node_t *leaf_node) |
| void * | btree_search (btree_t *t, btree_key_t key, btree_node_t **leaf_node) |
| btree_node_t * | btree_leaf_node_left_neighbour (btree_t *t, btree_node_t *node) |
| btree_node_t * | btree_leaf_node_right_neighbour (btree_t *t, btree_node_t *node) |
| void | btree_print (btree_t *t) |
Variables |
| static slab_cache_t * | btree_node_slab |