summaryrefslogtreecommitdiff
path: root/libguile/bitvectors.h
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2020-04-14 22:08:45 +0200
committerAndy Wingo <wingo@pobox.com>2020-04-14 22:18:02 +0200
commitd804177be4525feb517feb63ca09502d187fc016 (patch)
treefe99bbf9aa760874d717c8e9d7ee693f2c0d7e8d /libguile/bitvectors.h
parentff9979b6bc6a72e03085d7ce21fd3f8f1bd39b64 (diff)
downloadguile-d804177be4525feb517feb63ca09502d187fc016.tar.gz
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.
Diffstat (limited to 'libguile/bitvectors.h')
-rw-r--r--libguile/bitvectors.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/libguile/bitvectors.h b/libguile/bitvectors.h
index 82c8b3236..136f22953 100644
--- a/libguile/bitvectors.h
+++ b/libguile/bitvectors.h
@@ -36,7 +36,6 @@ SCM_API SCM scm_bitvector_p (SCM vec);
SCM_API SCM scm_bitvector (SCM bits);
SCM_API SCM scm_make_bitvector (SCM len, SCM fill);
SCM_API SCM scm_bitvector_length (SCM vec);
-SCM_API SCM scm_bitvector_ref (SCM vec, SCM idx);
SCM_API SCM scm_bitvector_set_x (SCM vec, SCM idx, SCM val);
SCM_API SCM scm_list_to_bitvector (SCM list);
SCM_API SCM scm_bitvector_to_list (SCM vec);
@@ -53,7 +52,8 @@ SCM_API SCM scm_bit_invert_x (SCM v);
SCM_API int scm_is_bitvector (SCM obj);
SCM_API SCM scm_c_make_bitvector (size_t len, SCM fill);
SCM_API size_t scm_c_bitvector_length (SCM vec);
-SCM_API SCM scm_c_bitvector_ref (SCM vec, size_t idx);
+SCM_API int scm_c_bitvector_bit_is_set (SCM vec, size_t idx);
+SCM_API int scm_c_bitvector_bit_is_clear (SCM vec, size_t idx);
SCM_API void scm_c_bitvector_set_x (SCM vec, size_t idx, SCM val);
SCM_API const uint32_t *scm_array_handle_bit_elements (scm_t_array_handle *h);
SCM_API uint32_t *scm_array_handle_bit_writable_elements (scm_t_array_handle *h);