Lines Matching full:size

50 static inline unsigned eytzinger1_first(unsigned size)  in eytzinger1_first()  argument
52 return size ? rounddown_pow_of_two(size) : 0; in eytzinger1_first()
55 static inline unsigned eytzinger1_last(unsigned size) in eytzinger1_last() argument
57 return rounddown_pow_of_two(size + 1) - 1; in eytzinger1_last()
60 static inline unsigned eytzinger1_next(unsigned i, unsigned size) in eytzinger1_next() argument
62 EYTZINGER_BUG_ON(i == 0 || i > size); in eytzinger1_next()
64 if (eytzinger1_right_child(i) <= size) { in eytzinger1_next()
67 i <<= __fls(size) - __fls(i); in eytzinger1_next()
68 i >>= i > size; in eytzinger1_next()
76 static inline unsigned eytzinger1_prev(unsigned i, unsigned size) in eytzinger1_prev() argument
78 EYTZINGER_BUG_ON(i == 0 || i > size); in eytzinger1_prev()
80 if (eytzinger1_left_child(i) <= size) { in eytzinger1_prev()
83 i <<= __fls(size) - __fls(i); in eytzinger1_prev()
85 i >>= i > size; in eytzinger1_prev()
93 static inline unsigned eytzinger1_extra(unsigned size) in eytzinger1_extra() argument
95 return size in eytzinger1_extra()
96 ? (size + 1 - rounddown_pow_of_two(size)) << 1 in eytzinger1_extra()
100 static inline unsigned __eytzinger1_to_inorder(unsigned i, unsigned size, in __eytzinger1_to_inorder() argument
104 unsigned shift = __fls(size) - b; in __eytzinger1_to_inorder()
107 EYTZINGER_BUG_ON(!i || i > size); in __eytzinger1_to_inorder()
126 static inline unsigned __inorder_to_eytzinger1(unsigned i, unsigned size, in __inorder_to_eytzinger1() argument
132 EYTZINGER_BUG_ON(!i || i > size); in __inorder_to_eytzinger1()
146 i |= 1U << (__fls(size) - shift); in __inorder_to_eytzinger1()
151 static inline unsigned eytzinger1_to_inorder(unsigned i, unsigned size) in eytzinger1_to_inorder() argument
153 return __eytzinger1_to_inorder(i, size, eytzinger1_extra(size)); in eytzinger1_to_inorder()
156 static inline unsigned inorder_to_eytzinger1(unsigned i, unsigned size) in inorder_to_eytzinger1() argument
158 return __inorder_to_eytzinger1(i, size, eytzinger1_extra(size)); in inorder_to_eytzinger1()
185 static inline unsigned eytzinger0_first(unsigned size) in eytzinger0_first() argument
187 return eytzinger1_first(size) - 1; in eytzinger0_first()
190 static inline unsigned eytzinger0_last(unsigned size) in eytzinger0_last() argument
192 return eytzinger1_last(size) - 1; in eytzinger0_last()
195 static inline unsigned eytzinger0_next(unsigned i, unsigned size) in eytzinger0_next() argument
197 return eytzinger1_next(i + 1, size) - 1; in eytzinger0_next()
200 static inline unsigned eytzinger0_prev(unsigned i, unsigned size) in eytzinger0_prev() argument
202 return eytzinger1_prev(i + 1, size) - 1; in eytzinger0_prev()
205 static inline unsigned eytzinger0_extra(unsigned size) in eytzinger0_extra() argument
207 return eytzinger1_extra(size); in eytzinger0_extra()
210 static inline unsigned __eytzinger0_to_inorder(unsigned i, unsigned size, in __eytzinger0_to_inorder() argument
213 return __eytzinger1_to_inorder(i + 1, size, extra) - 1; in __eytzinger0_to_inorder()
216 static inline unsigned __inorder_to_eytzinger0(unsigned i, unsigned size, in __inorder_to_eytzinger0() argument
219 return __inorder_to_eytzinger1(i + 1, size, extra) - 1; in __inorder_to_eytzinger0()
222 static inline unsigned eytzinger0_to_inorder(unsigned i, unsigned size) in eytzinger0_to_inorder() argument
224 return __eytzinger0_to_inorder(i, size, eytzinger0_extra(size)); in eytzinger0_to_inorder()
227 static inline unsigned inorder_to_eytzinger0(unsigned i, unsigned size) in inorder_to_eytzinger0() argument
229 return __inorder_to_eytzinger0(i, size, eytzinger0_extra(size)); in inorder_to_eytzinger0()
243 static inline int eytzinger0_find_le(void *base, size_t nr, size_t size, in eytzinger0_find_le() argument
246 void *base1 = base - size; in eytzinger0_find_le()
250 n = eytzinger1_child(n, cmp(base1 + n * size, search) <= 0); in eytzinger0_find_le()
256 static inline int eytzinger0_find_gt(void *base, size_t nr, size_t size, in eytzinger0_find_gt() argument
259 void *base1 = base - size; in eytzinger0_find_gt()
263 n = eytzinger1_child(n, cmp(base1 + n * size, search) <= 0); in eytzinger0_find_gt()
269 static inline int eytzinger0_find_ge(void *base, size_t nr, size_t size, in eytzinger0_find_ge() argument
272 void *base1 = base - size; in eytzinger0_find_ge()
276 n = eytzinger1_child(n, cmp(base1 + n * size, search) < 0); in eytzinger0_find_ge()
281 #define eytzinger0_find(base, nr, size, _cmp, search) \ argument
283 size_t _size = (size); \