Home | History | Annotate | Download | only in dist

Lines Matching defs:to_delete

315 	rbnode_type *to_delete;
323 if((to_delete = rbtree_search(rbtree, key)) == 0) return 0;
327 if(to_delete->left != RBTREE_NULL && to_delete->right != RBTREE_NULL)
330 rbnode_type *smright = to_delete->right;
333 /* swap the smright and to_delete elements in the tree,
339 swap_int8(&to_delete->color, &smright->color);
341 /* swap child pointers in parents of smright/to_delete */
342 change_parent_ptr(rbtree, to_delete->parent, to_delete, smright);
343 if(to_delete->right != smright)
344 change_parent_ptr(rbtree, smright->parent, smright, to_delete);
346 /* swap parent pointers in children of smright/to_delete */
347 change_child_ptr(smright->left, smright, to_delete);
348 change_child_ptr(smright->left, smright, to_delete);
349 change_child_ptr(smright->right, smright, to_delete);
350 change_child_ptr(smright->right, smright, to_delete);
351 change_child_ptr(to_delete->left, to_delete, smright);
352 if(to_delete->right != smright)
353 change_child_ptr(to_delete->right, to_delete, smright);
354 if(to_delete->right == smright)
357 to_delete->right = to_delete;
361 /* swap pointers in to_delete/smright nodes */
362 swap_np(&to_delete->parent, &smright->parent);
363 swap_np(&to_delete->left, &smright->left);
364 swap_np(&to_delete->right, &smright->right);
366 /* now delete to_delete (which is at the location where the smright previously was) */
368 assert(to_delete->left == RBTREE_NULL || to_delete->right == RBTREE_NULL);
370 if(to_delete->left != RBTREE_NULL) child = to_delete->left;
371 else child = to_delete->right;
373 /* unlink to_delete from the tree, replace to_delete with child */
374 change_parent_ptr(rbtree, to_delete->parent, to_delete, child);
375 change_child_ptr(child, to_delete, to_delete->parent);
377 if(to_delete->color == RED)
386 else rbtree_delete_fixup(rbtree, child, to_delete->parent);
389 to_delete->parent = RBTREE_NULL;
390 to_delete->left = RBTREE_NULL;
391 to_delete->right = RBTREE_NULL;
392 to_delete->color = BLACK;
393 return to_delete;