MASK_BITS
x = data[0] << SHIFT_2 | (data[1] & MASK_BITS);
y = data[2] << SHIFT_2 | (data[3] & MASK_BITS);
(s->root->num_after == ((sparsebit_num_t) 0) - MASK_BITS &&
assert(nodep1->idx + MASK_BITS + nodep1->num_after != (sparsebit_idx_t) 0);
return nodep1->idx + MASK_BITS + nodep1->num_after;
if (nodep1->idx + MASK_BITS + nodep1->num_after != nodep2->idx)
return nodep1->idx + MASK_BITS + nodep1->num_after;
if ((nodep->idx + MASK_BITS + nodep->num_after - 1)
if (start < MASK_BITS && candidate->mask >= (1 << start))
sparsebit_idx_t first_num_after_idx = candidate->idx + MASK_BITS;
for (idx = lowest_possible - nodep1->idx; idx < MASK_BITS; idx++)
return nodep1->idx + MASK_BITS + nodep1->num_after;
if (nodep1->idx + MASK_BITS + nodep1->num_after != nodep2->idx)
return nodep1->idx + MASK_BITS + nodep1->num_after;
for (idx = start, n = num; n > 0 && idx % MASK_BITS != 0; idx++, n--)
middle_end = middle_start + (n & -MASK_BITS) - 1;
if (n >= MASK_BITS) {
assert(next->idx + MASK_BITS + next->num_after - 1 <= middle_end);
for (n1 = 0; n1 < MASK_BITS; n1++) {
nodep->num_after = middle_end - middle_start + 1 - MASK_BITS;
assert(n < MASK_BITS);
for (idx = start, n = num; n > 0 && idx % MASK_BITS != 0; idx++, n--)
middle_end = middle_start + (n & -MASK_BITS) - 1;
if (n >= MASK_BITS) {
assert(next->idx + MASK_BITS + next->num_after - 1 <= middle_end);
for (n1 = 0; n1 < MASK_BITS; n1++) {
assert(n < MASK_BITS);
for (n1 = 0; n1 < MASK_BITS; n1++) {
for (; n1 < MASK_BITS; n1++) {
if ((n1 == MASK_BITS) && nodep->num_after)
if (!(nodep->mask & (1 << (MASK_BITS - 1))) && nodep->num_after) {
low = nodep->idx + MASK_BITS;
high = nodep->idx + MASK_BITS + nodep->num_after - 1;
for (n1 = 0; n1 < MASK_BITS; n1++)
> (~(sparsebit_num_t) 0) - MASK_BITS + 1) {
if (nodep->idx % MASK_BITS) {
nodep, nodep->idx, MASK_BITS);
if ((nodep->idx + MASK_BITS + nodep->num_after - 1) < nodep->idx) {
nodep, nodep->idx, MASK_BITS, nodep->num_after);
if ((prev->idx + MASK_BITS + prev->num_after - 1)
MASK_BITS);
prev->idx + MASK_BITS + prev->num_after == nodep->idx) {
MASK_BITS);
idx <= nodep->idx + MASK_BITS + nodep->num_after - 1)
nodep->idx = idx & -MASK_BITS;
assert(idx > parentp->idx + MASK_BITS + parentp->num_after - 1);
while (prev && prev->idx + MASK_BITS + prev->num_after - 1 >= nodep->idx) {
unsigned int n1 = (prev->idx + MASK_BITS + prev->num_after - 1)
assert(n1 < MASK_BITS);
assert(!(idx % MASK_BITS));
offset = idx - (nodep1->idx + MASK_BITS);
if (nodep2->num_after >= MASK_BITS) {
nodep2->num_after -= MASK_BITS;
assert(nodep->idx + MASK_BITS > nodep->idx);
nodep->idx += MASK_BITS;
if (nodep->num_after >= MASK_BITS) {
nodep->num_after -= MASK_BITS;
prev->idx + MASK_BITS == nodep->idx) {
prev->num_after += MASK_BITS + nodep->num_after;
prev_highest_bit = prev->idx + MASK_BITS - 1 + prev->num_after;
if (num_contiguous == MASK_BITS) {
if (next->idx == nodep->idx + MASK_BITS + nodep->num_after &&
nodep->num_after += MASK_BITS;
idx <= nodep->idx + MASK_BITS + nodep->num_after - 1)
if (nodep->num_after && idx >= nodep->idx + MASK_BITS)
assert(idx >= nodep->idx && idx - nodep->idx < MASK_BITS);
nodep = node_split(s, idx & -MASK_BITS);
assert(idx >= nodep->idx && idx <= nodep->idx + MASK_BITS - 1);
if (idx >= nodep->idx + MASK_BITS)
nodep = node_split(s, idx & -MASK_BITS);
assert(idx >= nodep->idx && idx <= nodep->idx + MASK_BITS - 1);