*/
/*ARGSUSED*/
static void
-__archive_rb_tree_reparent_nodes(struct archive_rb_tree *rbt,
+__archive_rb_tree_reparent_nodes(
struct archive_rb_node *old_father, const unsigned int which)
{
const unsigned int other = which ^ RB_DIR_OTHER;
* becomes case 3. Basically our parent becomes our
* child.
*/
- __archive_rb_tree_reparent_nodes(rbt, father, other);
+ __archive_rb_tree_reparent_nodes(father, other);
self = father;
father = RB_FATHER(self);
}
* is black, our father will become black and our new sibling
* (former grandparent) will become red.
*/
- __archive_rb_tree_reparent_nodes(rbt, grandpa, which);
+ __archive_rb_tree_reparent_nodes(grandpa, which);
/*
* Final step: Set the root to black.
* But it's more efficient to just evalate and recolor the child.
*/
static void
-__archive_rb_tree_prune_blackred_branch(struct archive_rb_tree *rbt,
+__archive_rb_tree_prune_blackred_branch(
struct archive_rb_node *self, unsigned int which)
{
struct archive_rb_node *father = RB_FATHER(self);
* | r --> s --> * |
*/
which = RB_LEFT_SENTINEL_P(self) ? RB_DIR_RIGHT : RB_DIR_LEFT;
- __archive_rb_tree_prune_blackred_branch(rbt, self, which);
+ __archive_rb_tree_prune_blackred_branch(self, which);
return;
}
* A d -> b E
* C E -> A C
*/
- __archive_rb_tree_reparent_nodes(rbt, parent, other);
+ __archive_rb_tree_reparent_nodes(parent, other);
brother = parent->rb_nodes[other];
} else {
/*
* | x B --> x B |
* | n --> n |
*/
- __archive_rb_tree_reparent_nodes(rbt, brother, which);
+ __archive_rb_tree_reparent_nodes(brother, which);
brother = parent->rb_nodes[other];
}
/*
* our former father would have a red grandson.
*/
RB_MARK_BLACK(brother->rb_nodes[other]);
- __archive_rb_tree_reparent_nodes(rbt, parent, other);
+ __archive_rb_tree_reparent_nodes(parent, other);
break; /* We're done! */
}
}