Lines Matching full:size

39 static inline unsigned eytzinger1_first(unsigned size)  in eytzinger1_first()  argument
41 return rounddown_pow_of_two(size); in eytzinger1_first()
44 static inline unsigned eytzinger1_last(unsigned size) in eytzinger1_last() argument
46 return rounddown_pow_of_two(size + 1) - 1; in eytzinger1_last()
59 static inline unsigned eytzinger1_next(unsigned i, unsigned size) in eytzinger1_next() argument
61 EBUG_ON(i > size); in eytzinger1_next()
63 if (eytzinger1_right_child(i) <= size) { in eytzinger1_next()
66 i <<= __fls(size + 1) - __fls(i); in eytzinger1_next()
67 i >>= i > size; in eytzinger1_next()
75 static inline unsigned eytzinger1_prev(unsigned i, unsigned size) in eytzinger1_prev() argument
77 EBUG_ON(i > size); in eytzinger1_prev()
79 if (eytzinger1_left_child(i) <= size) { in eytzinger1_prev()
82 i <<= __fls(size + 1) - __fls(i); in eytzinger1_prev()
84 i >>= i > size; in eytzinger1_prev()
92 static inline unsigned eytzinger1_extra(unsigned size) in eytzinger1_extra() argument
94 return (size + 1 - rounddown_pow_of_two(size)) << 1; in eytzinger1_extra()
97 static inline unsigned __eytzinger1_to_inorder(unsigned i, unsigned size, in __eytzinger1_to_inorder() argument
101 unsigned shift = __fls(size) - b; in __eytzinger1_to_inorder()
104 EBUG_ON(!i || i > size); in __eytzinger1_to_inorder()
123 static inline unsigned __inorder_to_eytzinger1(unsigned i, unsigned size, in __inorder_to_eytzinger1() argument
129 EBUG_ON(!i || i > size); in __inorder_to_eytzinger1()
143 i |= 1U << (__fls(size) - shift); in __inorder_to_eytzinger1()
148 static inline unsigned eytzinger1_to_inorder(unsigned i, unsigned size) in eytzinger1_to_inorder() argument
150 return __eytzinger1_to_inorder(i, size, eytzinger1_extra(size)); in eytzinger1_to_inorder()
153 static inline unsigned inorder_to_eytzinger1(unsigned i, unsigned size) in inorder_to_eytzinger1() argument
155 return __inorder_to_eytzinger1(i, size, eytzinger1_extra(size)); in inorder_to_eytzinger1()
182 static inline unsigned eytzinger0_first(unsigned size) in eytzinger0_first() argument
184 return eytzinger1_first(size) - 1; in eytzinger0_first()
187 static inline unsigned eytzinger0_last(unsigned size) in eytzinger0_last() argument
189 return eytzinger1_last(size) - 1; in eytzinger0_last()
192 static inline unsigned eytzinger0_next(unsigned i, unsigned size) in eytzinger0_next() argument
194 return eytzinger1_next(i + 1, size) - 1; in eytzinger0_next()
197 static inline unsigned eytzinger0_prev(unsigned i, unsigned size) in eytzinger0_prev() argument
199 return eytzinger1_prev(i + 1, size) - 1; in eytzinger0_prev()
202 static inline unsigned eytzinger0_extra(unsigned size) in eytzinger0_extra() argument
204 return eytzinger1_extra(size); in eytzinger0_extra()
207 static inline unsigned __eytzinger0_to_inorder(unsigned i, unsigned size, in __eytzinger0_to_inorder() argument
210 return __eytzinger1_to_inorder(i + 1, size, extra) - 1; in __eytzinger0_to_inorder()
213 static inline unsigned __inorder_to_eytzinger0(unsigned i, unsigned size, in __inorder_to_eytzinger0() argument
216 return __inorder_to_eytzinger1(i + 1, size, extra) - 1; in __inorder_to_eytzinger0()
219 static inline unsigned eytzinger0_to_inorder(unsigned i, unsigned size) in eytzinger0_to_inorder() argument
221 return __eytzinger0_to_inorder(i, size, eytzinger0_extra(size)); in eytzinger0_to_inorder()
224 static inline unsigned inorder_to_eytzinger0(unsigned i, unsigned size) in inorder_to_eytzinger0() argument
226 return __inorder_to_eytzinger0(i, size, eytzinger0_extra(size)); in inorder_to_eytzinger0()
234 typedef int (*eytzinger_cmp_fn)(const void *l, const void *r, size_t size);
237 static inline ssize_t eytzinger0_find_le(void *base, size_t nr, size_t size, in eytzinger0_find_le() argument
247 n = eytzinger0_child(i, cmp(search, base + i * size, size) >= 0); in eytzinger0_find_le()
262 #define eytzinger0_find(base, nr, size, _cmp, search) \ argument
267 size_t _size = (size); \