Lines Matching refs:field

104 #define SPLAY_LEFT(elm, field)		(elm)->field.spe_left
105 #define SPLAY_RIGHT(elm, field) (elm)->field.spe_right
110 #define SPLAY_ROTATE_RIGHT(head, tmp, field) do { \
111 SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(tmp, field); \
112 SPLAY_RIGHT(tmp, field) = (head)->sph_root; \
116 #define SPLAY_ROTATE_LEFT(head, tmp, field) do { \
117 SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \
118 SPLAY_LEFT(tmp, field) = (head)->sph_root; \
122 #define SPLAY_LINKLEFT(head, tmp, field) do { \
123 SPLAY_LEFT(tmp, field) = (head)->sph_root; \
125 (head)->sph_root = SPLAY_LEFT((head)->sph_root, field); \
128 #define SPLAY_LINKRIGHT(head, tmp, field) do { \
129 SPLAY_RIGHT(tmp, field) = (head)->sph_root; \
131 (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field); \
134 #define SPLAY_ASSEMBLE(head, node, left, right, field) do { \
135 SPLAY_RIGHT(left, field) = SPLAY_LEFT((head)->sph_root, field); \
136 SPLAY_LEFT(right, field) = SPLAY_RIGHT((head)->sph_root, field);\
137 SPLAY_LEFT((head)->sph_root, field) = SPLAY_RIGHT(node, field); \
138 SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(node, field); \
143 #define SPLAY_PROTOTYPE(name, type, field, cmp) \
165 if (SPLAY_RIGHT(elm, field) != NULL) { \
166 elm = SPLAY_RIGHT(elm, field); \
167 while (SPLAY_LEFT(elm, field) != NULL) { \
168 elm = SPLAY_LEFT(elm, field); \
185 #define SPLAY_GENERATE(name, type, field, cmp) \
190 SPLAY_LEFT(elm, field) = SPLAY_RIGHT(elm, field) = NULL; \
196 SPLAY_LEFT(elm, field) = SPLAY_LEFT((head)->sph_root, field);\
197 SPLAY_RIGHT(elm, field) = (head)->sph_root; \
198 SPLAY_LEFT((head)->sph_root, field) = NULL; \
200 SPLAY_RIGHT(elm, field) = SPLAY_RIGHT((head)->sph_root, field);\
201 SPLAY_LEFT(elm, field) = (head)->sph_root; \
202 SPLAY_RIGHT((head)->sph_root, field) = NULL; \
218 if (SPLAY_LEFT((head)->sph_root, field) == NULL) { \
219 (head)->sph_root = SPLAY_RIGHT((head)->sph_root, field);\
221 __tmp = SPLAY_RIGHT((head)->sph_root, field); \
222 (head)->sph_root = SPLAY_LEFT((head)->sph_root, field);\
224 SPLAY_RIGHT((head)->sph_root, field) = __tmp; \
237 SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
242 __tmp = SPLAY_LEFT((head)->sph_root, field); \
246 SPLAY_ROTATE_RIGHT(head, __tmp, field); \
247 if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
250 SPLAY_LINKLEFT(head, __right, field); \
252 __tmp = SPLAY_RIGHT((head)->sph_root, field); \
256 SPLAY_ROTATE_LEFT(head, __tmp, field); \
257 if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
260 SPLAY_LINKRIGHT(head, __left, field); \
263 SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \
273 SPLAY_LEFT(&__node, field) = SPLAY_RIGHT(&__node, field) = NULL;\
278 __tmp = SPLAY_LEFT((head)->sph_root, field); \
282 SPLAY_ROTATE_RIGHT(head, __tmp, field); \
283 if (SPLAY_LEFT((head)->sph_root, field) == NULL)\
286 SPLAY_LINKLEFT(head, __right, field); \
288 __tmp = SPLAY_RIGHT((head)->sph_root, field); \
292 SPLAY_ROTATE_LEFT(head, __tmp, field); \
293 if (SPLAY_RIGHT((head)->sph_root, field) == NULL)\
296 SPLAY_LINKRIGHT(head, __left, field); \
299 SPLAY_ASSEMBLE(head, &__node, __left, __right, field); \
343 #define RB_LEFT(elm, field) (elm)->field.rbe_left
344 #define RB_RIGHT(elm, field) (elm)->field.rbe_right
345 #define _RB_PARENT(elm, field) (elm)->field.rbe_parent
349 #define RB_SET(name, elm, parent, field) do { \
351 RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \
355 #define RB_SET_BLACKRED(name, black, red, field) do { \
364 #define RB_ROTATE_LEFT(name, head, elm, tmp, field) do { \
365 (tmp) = RB_RIGHT(elm, field); \
366 if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \
367 name##_RB_SETPARENT(RB_LEFT(tmp, field),(elm)); \
371 if ((elm) == RB_LEFT(name##_RB_GETPARENT(elm), field)) \
372 RB_LEFT(name##_RB_GETPARENT(elm), field) = (tmp); \
374 RB_RIGHT(name##_RB_GETPARENT(elm), field) = (tmp); \
377 RB_LEFT(tmp, field) = (elm); \
384 #define RB_ROTATE_RIGHT(name, head, elm, tmp, field) do { \
385 (tmp) = RB_LEFT(elm, field); \
386 if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \
387 name##_RB_SETPARENT(RB_RIGHT(tmp, field), (elm)); \
391 if ((elm) == RB_LEFT(name##_RB_GETPARENT(elm), field)) \
392 RB_LEFT(name##_RB_GETPARENT(elm), field) = (tmp); \
394 RB_RIGHT(name##_RB_GETPARENT(elm), field) = (tmp); \
397 RB_RIGHT(tmp, field) = (elm); \
405 #define RB_PROTOTYPE(name, type, field, cmp) \
419 #define RB_PROTOTYPE_SC(_sc_, name, type, field, cmp) \
436 #define RB_GENERATE(name, type, field, cmp) \
438 struct type *parent = _RB_PARENT(elm, field); \
447 color = (int)((uintptr_t)_RB_PARENT(elm,field) & RB_COLOR_MASK);\
454 _RB_PARENT(elm, field) = (struct type*)((uintptr_t)parent | (unsigned int)color);\
458 _RB_PARENT(elm, field) = parent; \
470 if (parent == RB_LEFT(gparent, field)) { \
471 tmp = RB_RIGHT(gparent, field); \
474 RB_SET_BLACKRED(name, parent, gparent, field);\
478 if (RB_RIGHT(parent, field) == elm) { \
479 RB_ROTATE_LEFT(name, head, parent, tmp, field);\
484 RB_SET_BLACKRED(name, parent, gparent, field); \
485 RB_ROTATE_RIGHT(name,head, gparent, tmp, field); \
487 tmp = RB_LEFT(gparent, field); \
490 RB_SET_BLACKRED(name, parent, gparent, field);\
494 if (RB_LEFT(parent, field) == elm) { \
495 RB_ROTATE_RIGHT(name, head, parent, tmp, field);\
500 RB_SET_BLACKRED(name, parent, gparent, field); \
501 RB_ROTATE_LEFT(name, head, gparent, tmp, field); \
513 if (RB_LEFT(parent, field) == elm) { \
514 tmp = RB_RIGHT(parent, field); \
516 RB_SET_BLACKRED(name, tmp, parent, field); \
517 RB_ROTATE_LEFT(name, head, parent, tmp, field);\
518 tmp = RB_RIGHT(parent, field); \
520 if ((RB_LEFT(tmp, field) == NULL || \
521 name##_RB_GETCOLOR(RB_LEFT(tmp, field)) == RB_BLACK) &&\
522 (RB_RIGHT(tmp, field) == NULL || \
523 name##_RB_GETCOLOR(RB_RIGHT(tmp, field)) == RB_BLACK)) {\
528 if (RB_RIGHT(tmp, field) == NULL || \
529 name##_RB_GETCOLOR(RB_RIGHT(tmp, field)) == RB_BLACK) {\
531 if ((oleft = RB_LEFT(tmp, field)) \
535 RB_ROTATE_RIGHT(name, head, tmp, oleft, field);\
536 tmp = RB_RIGHT(parent, field); \
540 if (RB_RIGHT(tmp, field)) \
541 name##_RB_SETCOLOR(RB_RIGHT(tmp, field),RB_BLACK);\
542 RB_ROTATE_LEFT(name, head, parent, tmp, field);\
547 tmp = RB_LEFT(parent, field); \
549 RB_SET_BLACKRED(name, tmp, parent, field); \
550 RB_ROTATE_RIGHT(name, head, parent, tmp, field);\
551 tmp = RB_LEFT(parent, field); \
553 if ((RB_LEFT(tmp, field) == NULL || \
554 name##_RB_GETCOLOR(RB_LEFT(tmp, field)) == RB_BLACK) &&\
555 (RB_RIGHT(tmp, field) == NULL || \
556 name##_RB_GETCOLOR(RB_RIGHT(tmp, field)) == RB_BLACK)) {\
561 if (RB_LEFT(tmp, field) == NULL || \
562 name##_RB_GETCOLOR(RB_LEFT(tmp, field)) == RB_BLACK) {\
564 if ((oright = RB_RIGHT(tmp, field)) \
568 RB_ROTATE_LEFT(name, head, tmp, oright, field);\
569 tmp = RB_LEFT(parent, field); \
573 if (RB_LEFT(tmp, field)) \
574 name##_RB_SETCOLOR(RB_LEFT(tmp, field), RB_BLACK);\
575 RB_ROTATE_RIGHT(name, head, parent, tmp, field);\
590 if (RB_LEFT(elm, field) == NULL) \
591 child = RB_RIGHT(elm, field); \
592 else if (RB_RIGHT(elm, field) == NULL) \
593 child = RB_LEFT(elm, field); \
596 elm = RB_RIGHT(elm, field); \
597 while ((left = RB_LEFT(elm, field)) != NULL) \
599 child = RB_RIGHT(elm, field); \
605 if (RB_LEFT(parent, field) == elm) \
606 RB_LEFT(parent, field) = child; \
608 RB_RIGHT(parent, field) = child; \
614 (elm)->field = (old)->field; \
616 if (RB_LEFT(name##_RB_GETPARENT(old), field) == old)\
617 RB_LEFT(name##_RB_GETPARENT(old), field) = elm;\
619 RB_RIGHT(name##_RB_GETPARENT(old), field) = elm;\
623 name##_RB_SETPARENT(RB_LEFT(old, field), elm); \
624 if (RB_RIGHT(old, field)) \
625 name##_RB_SETPARENT(RB_RIGHT(old, field), elm); \
639 if (RB_LEFT(parent, field) == elm) \
640 RB_LEFT(parent, field) = child; \
642 RB_RIGHT(parent, field) = child; \
664 tmp = RB_LEFT(tmp, field); \
666 tmp = RB_RIGHT(tmp, field); \
670 RB_SET(name, elm, parent, field); \
673 RB_LEFT(parent, field) = elm; \
675 RB_RIGHT(parent, field) = elm; \
692 tmp = RB_LEFT(tmp, field); \
694 tmp = RB_RIGHT(tmp, field); \
705 if (RB_RIGHT(elm, field)) { \
706 elm = RB_RIGHT(elm, field); \
707 while (RB_LEFT(elm, field)) \
708 elm = RB_LEFT(elm, field); \
711 (elm == RB_LEFT(name##_RB_GETPARENT(elm), field))) \
715 (elm == RB_RIGHT(name##_RB_GETPARENT(elm), field)))\
731 tmp = RB_LEFT(tmp, field); \
733 tmp = RB_RIGHT(tmp, field); \
739 #define RB_PROTOTYPE_PREV(name, type, field, cmp) \
740 RB_PROTOTYPE(name, type, field, cmp) \
744 #define RB_PROTOTYPE_SC_PREV(_sc_, name, type, field, cmp) \
745 RB_PROTOTYPE_SC(_sc_, name, type, field, cmp) \
748 #define RB_GENERATE_PREV(name, type, field, cmp) \
749 RB_GENERATE(name, type, field, cmp) \
753 if (RB_LEFT(elm, field)) { \
754 elm = RB_LEFT(elm, field); \
755 while (RB_RIGHT(elm, field)) \
756 elm = RB_RIGHT(elm, field); \
759 (elm == RB_RIGHT(name##_RB_GETPARENT(elm), field))) \
763 (elm == RB_LEFT(name##_RB_GETPARENT(elm), field)))\