]> diplodocus.org Git - nmh/commitdiff
sbr/vector.c: Move assert(3)s into bvector_create().
authorRalph Corderoy <ralph@inputplus.co.uk>
Mon, 24 Apr 2017 21:58:56 +0000 (22:58 +0100)
committerRalph Corderoy <ralph@inputplus.co.uk>
Wed, 26 Apr 2017 06:43:40 +0000 (07:43 +0100)
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.

sbr/vector.c

index f0c8bb4..a77ac27 100644 (file)
@@ -45,6 +45,9 @@ bvector_create (size_t init_size) {
     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);
 
@@ -78,7 +81,6 @@ bvector_clear (bvector_t vec, size_t n) {
     if (n >= vec->maxsize)
         bvector_resize (vec, n);
 
-    assert (sizeof *vec->bits <= sizeof 1ul);
     vec->bits[word] &= ~(1ul << offset);
 }
 
@@ -96,7 +98,6 @@ bvector_set (bvector_t vec, size_t n) {
 
     if (n >= vec->maxsize)
         bvector_resize (vec, n);
-    assert (sizeof *vec->bits <= sizeof 1ul);
     vec->bits[word] |= 1ul << offset;
 }
 
@@ -105,7 +106,6 @@ bvector_at (bvector_t vec, size_t i) {
     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;