tree: rename 'FIXUP' macros to 'REBALANCE'

This commit is contained in:
Bert Belder 2020-01-13 00:15:16 +01:00
parent 3ad20d71ff
commit efa35adbc5
No known key found for this signature in database
GPG Key ID: 7A77887B2E2ED461

View File

@ -51,23 +51,23 @@ static inline void tree__rotate_right(tree_t* tree, tree_node_t* node) {
break; \ break; \
} }
#define TREE__FIXUP_AFTER_INSERT(cis, trans) \ #define TREE__REBALANCE_AFTER_INSERT(cis, trans) \
tree_node_t* grandparent = parent->parent; \ tree_node_t* grandparent = parent->parent; \
tree_node_t* uncle = grandparent->trans; \ tree_node_t* uncle = grandparent->trans; \
\ \
if (uncle && uncle->red) { \ if (uncle && uncle->red) { \
parent->red = uncle->red = false; \ parent->red = uncle->red = false; \
grandparent->red = true; \ grandparent->red = true; \
node = grandparent; \ node = grandparent; \
} else { \ } else { \
if (node == parent->trans) { \ if (node == parent->trans) { \
tree__rotate_##cis(tree, parent); \ tree__rotate_##cis(tree, parent); \
node = parent; \ node = parent; \
parent = node->parent; \ parent = node->parent; \
} \ } \
parent->red = false; \ parent->red = false; \
grandparent->red = true; \ grandparent->red = true; \
tree__rotate_##trans(tree, grandparent); \ tree__rotate_##trans(tree, grandparent); \
} }
int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) { int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) {
@ -95,9 +95,9 @@ int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) {
for (; parent && parent->red; parent = node->parent) { for (; parent && parent->red; parent = node->parent) {
if (parent == parent->parent->left) { if (parent == parent->parent->left) {
TREE__FIXUP_AFTER_INSERT(left, right) TREE__REBALANCE_AFTER_INSERT(left, right)
} else { } else {
TREE__FIXUP_AFTER_INSERT(right, left) TREE__REBALANCE_AFTER_INSERT(right, left)
} }
} }
tree->root->red = false; tree->root->red = false;
@ -105,7 +105,7 @@ int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key) {
return 0; return 0;
} }
#define TREE__FIXUP_AFTER_REMOVE(cis, trans) \ #define TREE__REBALANCE_AFTER_REMOVE(cis, trans) \
tree_node_t* sibling = parent->trans; \ tree_node_t* sibling = parent->trans; \
\ \
if (sibling->red) { \ if (sibling->red) { \
@ -191,9 +191,9 @@ void tree_del(tree_t* tree, tree_node_t* node) {
if (node == tree->root) if (node == tree->root)
break; break;
if (node == parent->left) { if (node == parent->left) {
TREE__FIXUP_AFTER_REMOVE(left, right) TREE__REBALANCE_AFTER_REMOVE(left, right)
} else { } else {
TREE__FIXUP_AFTER_REMOVE(right, left) TREE__REBALANCE_AFTER_REMOVE(right, left)
} }
node = parent; node = parent;
parent = parent->parent; parent = parent->parent;