1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-23 12:00:21 +02:00

bitvector-bit-set? / bitvector-bit-clear? replace bitvector-ref

This is an opportunity to make a new interface that can be more
efficient in 3.0 (because no generic array support), easier to read (no
need for 'not'), and more consistent with other bitvector interfaces.

* NEWS: Add entry.
* doc/ref/api-data.texi (Bit Vectors): Update.
* libguile/array-handle.h (bitvector_ref, scm_array_get_handle): Adapt
  to bitvector changes.
* libguile/bitvectors.h:
* libguile/bitvectors.c (scm_c_bitvector_bit_is_set)
  (scm_c_bitvector_bit_is_clear): New functions.
* libguile/deprecated.h:
* libguile/deprecated.c (scm_bitvector_ref): Deprecate.
* module/ice-9/sandbox.scm (bitvector-bindings): Replace
  bitvector-ref with bitvector-bit-set? / bitvector-bit-clear?.
* module/system/vm/disassembler.scm (instruction-has-fallthrough): Use
  bitvector-bit-clear?.
* test-suite/tests/bitvectors.test: Update.
This commit is contained in:
Andy Wingo 2020-04-14 22:08:45 +02:00
parent ff9979b6bc
commit d804177be4
10 changed files with 106 additions and 50 deletions

View file

@ -6573,15 +6573,17 @@ Like @code{scm_bitvector_length}, but the length is returned as a
@code{size_t}.
@end deftypefn
@deffn {Scheme Procedure} bitvector-ref vec idx
@deffnx {C Function} scm_bitvector_ref (vec, idx)
Return the element at index @var{idx} of the bitvector
@var{vec}.
@deffn {Scheme Procedure} bitvector-bit-set? vec idx
@deffnx {Scheme Procedure} bitvector-bit-clear? vec idx
Return @code{#t} if the bit at index @var{idx} of the bitvector
@var{vec} is set (for @code{bitvector-bit-set?}) or clear (for
@code{bitvector-bit-clear?}).
@end deffn
@deftypefn {C Function} SCM scm_c_bitvector_ref (SCM vec, size_t idx)
Return the element at index @var{idx} of the bitvector
@var{vec}.
@deftypefn {C Function} int scm_bitvector_bit_is_set (SCM vec, size_t idx)
@deftypefnx {C Function} int scm_bitvector_bit_is_clear (SCM vec, size_t idx)
Return 1 if the bit at index @var{idx} of the bitvector @var{vec} is set
or clear, respectively, or 0 otherwise.
@end deftypefn
@deffn {Scheme Procedure} bitvector-set! vec idx val