Rather than asserting on every bit-related operation, assert just when
creating the vector. Whether the assertion is true is decided at
compile time, so it only needs checking once; once for every vector is
an easy compromise.
bvector_t vec;
size_t bytes;
+ /* See "wider than unsigned long" comment above. */
+ assert (sizeof *vec->bits <= sizeof 1ul);
+
NEW(vec);
bytes = BVEC_BYTES (vec, init_size ? init_size : VEC_INIT_SIZE);
if (n >= vec->maxsize)
bvector_resize (vec, n);
- assert (sizeof *vec->bits <= sizeof 1ul);
vec->bits[word] &= ~(1ul << offset);
}
if (n >= vec->maxsize)
bvector_resize (vec, n);
- assert (sizeof *vec->bits <= sizeof 1ul);
vec->bits[word] |= 1ul << offset;
}
size_t word = BVEC_WORD (vec, i);
size_t offset = BVEC_OFFSET (vec, i);
- assert (sizeof *vec->bits <= sizeof 1ul);
return i < vec->maxsize
? (vec->bits[word] & (1ul << offset) ? 1 : 0)
: 0;