+2019-03-19 Akim Demaille <akim@lrde.epita.fr>
+
+ bitset: expose bitset_resize
+ * lib/bitset.h (bitset_resize): Bounce on the polymorphic implementation.
+ * tests/test-bitset.c (check_attributes): Check bitset_resize.
+ (main): Use a variable bitset as reference, since fixed does not support resize.
+
2019-03-19 Bruno Haible <bruno@clisp.org>
doc: Document the 'stdnoreturn' and 'noreturn' modules.
/* Return size in bits of bitset SRC. */
#define bitset_size(SRC) BITSET_SIZE_ (SRC)
-/* Change size of bitset. */
-void bitset_resize (bitset, bitset_bindex);
+/* Change size in bits of bitset. New bits are zeroed. Return
+ SIZE. */
+#define bitset_resize(DST, SIZE) BITSET_RESIZE_ (DST, SIZE)
/* Return number of bits set in bitset SRC. */
#define bitset_count(SRC) BITSET_COUNT_ (SRC)
bitset_zero (bdst);
assert_bitset_equal (adst, bdst);
+ /* resize.
+
+ ARRAY bitsets cannot be resized. */
+ if (bitset_type_get (bsrc0) != BITSET_ARRAY)
+ {
+ const int nbits_new = RANDOM (256);
+ bitset_copy (adst, asrc0);
+ bitset_copy (bdst, bsrc0);
+ ASSERT (nbits_new == bitset_resize (adst, nbits_new));
+ ASSERT (nbits_new == bitset_resize (bdst, nbits_new));
+ assert_bitset_equal (adst, bdst);
+ }
+
bitset_free (bdst);
bitset_free (bsrc3);
bitset_free (bsrc2);
check_attributes (BITSET_FRUGAL);
check_attributes (BITSET_GREEDY);
- compare (BITSET_FIXED, BITSET_FIXED);
- compare (BITSET_FIXED, BITSET_VARIABLE);
- compare (BITSET_FIXED, BITSET_DENSE);
- compare (BITSET_FIXED, BITSET_SPARSE);
- compare (BITSET_FIXED, BITSET_FRUGAL);
- compare (BITSET_FIXED, BITSET_GREEDY);
+ compare (BITSET_VARIABLE, BITSET_FIXED);
+ compare (BITSET_VARIABLE, BITSET_VARIABLE);
+ compare (BITSET_VARIABLE, BITSET_DENSE);
+ compare (BITSET_VARIABLE, BITSET_SPARSE);
+ compare (BITSET_VARIABLE, BITSET_FRUGAL);
+ compare (BITSET_VARIABLE, BITSET_GREEDY);
return 0;
}