Lines Matching refs:node
45 static inline ITTYPE ITPREFIX ## _compute_subtree_last(ITSTRUCT *node) \
47 ITTYPE max = ITLAST(node), subtree_last; \
48 if (node->ITRB.rb_left) { \
49 subtree_last = rb_entry(node->ITRB.rb_left, \
54 if (node->ITRB.rb_right) { \
55 subtree_last = rb_entry(node->ITRB.rb_right, \
68 ITSTATIC void ITPREFIX ## _insert(ITSTRUCT *node, \
72 ITTYPE start = ITSTART(node), last = ITLAST(node); \
89 node->ITSUBTREE = last; \
90 rb_link_node(&node->ITRB, rb_parent, link); \
91 rb_insert_augmented_cached(&node->ITRB, root, \
95 ITSTATIC void ITPREFIX ## _remove(ITSTRUCT *node, \
98 rb_erase_augmented_cached(&node->ITRB, root, &ITPREFIX ## _augment); \
111 ITPREFIX ## _subtree_search(ITSTRUCT *node, ITTYPE start, ITTYPE last) \
118 if (node->ITRB.rb_left) { \
119 ITSTRUCT *left = rb_entry(node->ITRB.rb_left, \
130 node = left; \
134 if (ITSTART(node) <= last) { /* Cond1 */ \
135 if (start <= ITLAST(node)) /* Cond2 */ \
136 return node; /* node is leftmost match */ \
137 if (node->ITRB.rb_right) { \
138 node = rb_entry(node->ITRB.rb_right, \
140 if (start <= node->ITSUBTREE) \
152 ITSTRUCT *node, *leftmost; \
170 node = rb_entry(root->rb_root.rb_node, ITSTRUCT, ITRB); \
171 if (node->ITSUBTREE < start) \
178 return ITPREFIX ## _subtree_search(node, start, last); \
182 ITPREFIX ## _iter_next(ITSTRUCT *node, ITTYPE start, ITTYPE last) \
184 struct rb_node *rb = node->ITRB.rb_right, *prev; \
203 rb = rb_parent(&node->ITRB); \
206 prev = &node->ITRB; \
207 node = rb_entry(rb, ITSTRUCT, ITRB); \
208 rb = node->ITRB.rb_right; \
212 if (last < ITSTART(node)) /* !Cond1 */ \
214 else if (start <= ITLAST(node)) /* Cond2 */ \
215 return node; \