Home | History | Annotate | Download | only in util

Lines Matching defs:to_delete

331 	rbnode_type *to_delete;
333 if((to_delete = rbtree_search(rbtree, key)) == 0) return 0;
337 if(to_delete->left != RBTREE_NULL && to_delete->right != RBTREE_NULL)
340 rbnode_type *smright = to_delete->right;
343 /* swap the smright and to_delete elements in the tree,
349 swap_int8(&to_delete->color, &smright->color);
351 /* swap child pointers in parents of smright/to_delete */
352 change_parent_ptr(rbtree, to_delete->parent, to_delete, smright);
353 if(to_delete->right != smright)
354 change_parent_ptr(rbtree, smright->parent, smright, to_delete);
356 /* swap parent pointers in children of smright/to_delete */
357 change_child_ptr(smright->left, smright, to_delete);
358 change_child_ptr(smright->left, smright, to_delete);
359 change_child_ptr(smright->right, smright, to_delete);
360 change_child_ptr(smright->right, smright, to_delete);
361 change_child_ptr(to_delete->left, to_delete, smright);
362 if(to_delete->right != smright)
363 change_child_ptr(to_delete->right, to_delete, smright);
364 if(to_delete->right == smright)
367 to_delete->right = to_delete;
371 /* swap pointers in to_delete/smright nodes */
372 swap_np(&to_delete->parent, &smright->parent);
373 swap_np(&to_delete->left, &smright->left);
374 swap_np(&to_delete->right, &smright->right);
376 /* now delete to_delete (which is at the location where the smright previously was) */
378 log_assert(to_delete->left == RBTREE_NULL || to_delete->right == RBTREE_NULL);
380 if(to_delete->left != RBTREE_NULL) child = to_delete->left;
381 else child = to_delete->right;
383 /* unlink to_delete from the tree, replace to_delete with child */
384 change_parent_ptr(rbtree, to_delete->parent, to_delete, child);
385 change_child_ptr(child, to_delete, to_delete->parent);
387 if(to_delete->color == RED)
396 else rbtree_delete_fixup(rbtree, child, to_delete->parent);
399 to_delete->parent = RBTREE_NULL;
400 to_delete->left = RBTREE_NULL;
401 to_delete->right = RBTREE_NULL;
402 to_delete->color = BLACK;
403 return to_delete;