Lines Matching refs:parent

57  *  - each red node (except for the root) has a black parent,
316 struct type *rbe_parent; /* parent element */ \
327 #define RB_SET(elm, parent, field) do { \
328 RB_PARENT(elm, field) = parent; \
410 struct type *parent, *gparent, *tmp; \
411 while ((parent = RB_PARENT(elm, field)) != NULL && \
412 RB_COLOR(parent, field) == RB_RED) { \
413 gparent = RB_PARENT(parent, field); \
414 if (parent == RB_LEFT(gparent, field)) { \
418 RB_SET_BLACKRED(parent, gparent, field); \
422 if (RB_RIGHT(parent, field) == elm) { \
423 RB_ROTATE_LEFT(head, parent, tmp, field); \
424 tmp = parent; \
425 parent = elm; \
428 RB_SET_BLACKRED(parent, gparent, field); \
434 RB_SET_BLACKRED(parent, gparent, field); \
438 if (RB_LEFT(parent, field) == elm) { \
439 RB_ROTATE_RIGHT(head, parent, tmp, field); \
440 tmp = parent; \
441 parent = elm; \
444 RB_SET_BLACKRED(parent, gparent, field); \
452 name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, \
458 if (RB_LEFT(parent, field) == elm) { \
459 tmp = RB_RIGHT(parent, field); \
461 RB_SET_BLACKRED(tmp, parent, field); \
462 RB_ROTATE_LEFT(head, parent, tmp, field); \
463 tmp = RB_RIGHT(parent, field); \
470 elm = parent; \
471 parent = RB_PARENT(elm, field); \
481 tmp = RB_RIGHT(parent, field); \
483 RB_COLOR(tmp, field) = RB_COLOR(parent, field); \
484 RB_COLOR(parent, field) = RB_BLACK; \
487 RB_ROTATE_LEFT(head, parent, tmp, field); \
492 tmp = RB_LEFT(parent, field); \
494 RB_SET_BLACKRED(tmp, parent, field); \
495 RB_ROTATE_RIGHT(head, parent, tmp, field); \
496 tmp = RB_LEFT(parent, field); \
503 elm = parent; \
504 parent = RB_PARENT(elm, field); \
514 tmp = RB_LEFT(parent, field); \
516 RB_COLOR(tmp, field) = RB_COLOR(parent, field); \
517 RB_COLOR(parent, field) = RB_BLACK; \
520 RB_ROTATE_RIGHT(head, parent, tmp, field); \
533 struct type *child, *parent, *old = elm; \
545 parent = RB_PARENT(elm, field); \
548 RB_PARENT(child, field) = parent; \
549 if (parent) { \
550 if (RB_LEFT(parent, field) == elm) \
551 RB_LEFT(parent, field) = child; \
553 RB_RIGHT(parent, field) = child; \
554 RB_AUGMENT(parent); \
558 parent = elm; \
571 if (parent) { \
572 left = parent; \
579 parent = RB_PARENT(elm, field); \
582 RB_PARENT(child, field) = parent; \
583 if (parent) { \
584 if (RB_LEFT(parent, field) == elm) \
585 RB_LEFT(parent, field) = child; \
587 RB_RIGHT(parent, field) = child; \
588 RB_AUGMENT(parent); \
593 name##_RB_REMOVE_COLOR(head, parent, child); \
602 struct type *parent = NULL; \
606 parent = tmp; \
607 comp = (cmp)(elm, parent); \
615 RB_SET(elm, parent, field); \
616 if (parent != NULL) { \
618 RB_LEFT(parent, field) = elm; \
620 RB_RIGHT(parent, field) = elm; \
621 RB_AUGMENT(parent); \
715 struct type *parent = NULL; \
717 parent = tmp; \
723 return (parent); \