1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

bitvector-set-bit! / bitvector-clear-bit! replace bitvector-set!

* NEWS: Add entry.
* doc/ref/api-data.texi (Bit Vectors): Update.
* libguile/array-handle.h (bitvector_set_x, scm_array_get_handle): Adapt
  to bitvector changes.
* libguile/bitvectors.h:
* libguile/bitvectors.c (scm_c_bitvector_set_bit_x)
  (scm_c_bitvector_clear_bit_x): New functions.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_bitvector_set_x): Deprecate.
* module/ice-9/sandbox.scm (mutable-bitvector-bindings): Replace
  bitvector-set! with bitvector-set-bit! / bitvector-clear-bit!.
* module/system/vm/disassembler.scm (static-opcode-set): Use
  bitvector-set-bit!.
* module/system/vm/frame.scm (compute-defs-by-slot, available-bindings):
  Use bitvector-set-bit!.
* test-suite/tests/bitvectors.test: Update.
This commit is contained in:
Andy Wingo 2020-04-14 22:40:43 +02:00
parent d804177be4
commit 8110061e64
12 changed files with 142 additions and 60 deletions

View file

@ -174,6 +174,15 @@ bitvector_ref (SCM bv, size_t idx)
return scm_from_bool (scm_c_bitvector_bit_is_set (bv, idx));
}
static void
bitvector_set_x (SCM bv, size_t idx, SCM val)
{
if (scm_is_true (val))
scm_c_bitvector_set_bit_x (bv, idx);
else
scm_c_bitvector_clear_bit_x (bv, idx);
}
void
scm_array_get_handle (SCM array, scm_t_array_handle *h)
{
@ -202,7 +211,7 @@ scm_array_get_handle (SCM array, scm_t_array_handle *h)
initialize_vector_handle (h, scm_c_bitvector_length (array),
SCM_ARRAY_ELEMENT_TYPE_BIT,
bitvector_ref,
scm_c_bitvector_set_x,
bitvector_set_x,
scm_i_bitvector_bits (array),
scm_i_is_mutable_bitvector (array));
break;