diff options
author | Andy Wingo <wingo@pobox.com> | 2020-04-21 22:35:00 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2020-04-29 11:14:17 +0200 |
commit | b517a91ba4aaccf920a81eb8bf71ca090a9b457c (patch) | |
tree | 87766f92c0bf33de3a4ca4c4e6afa177f7cd8e72 /libguile/bitvectors.c | |
parent | bfd38b857757c767c1b94762aeb35db112c4f76b (diff) | |
download | guile-b517a91ba4aaccf920a81eb8bf71ca090a9b457c.tar.gz |
Deprecate useless C bitvector interface
C should use scm_c_bitvector_length, not scm_bitvector_length.
* doc/ref/api-data.texi (Bit Vectors): Reorganize a bit to put typed C
interfaces in their own section.
* libguile/bitvectors.h:
* libguile/bitvectors.c (bitvector-length, bitvector-count): Make
SCM-flavored C interface private.
(scm_c_bitvector_count): New function.
* libguile/deprecated.c (scm_bitvector_length): Deprecate.
(scm_bit_count): Adapt to changes.
Diffstat (limited to 'libguile/bitvectors.c')
-rw-r--r-- | libguile/bitvectors.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/libguile/bitvectors.c b/libguile/bitvectors.c index e8993b842..042e988b4 100644 --- a/libguile/bitvectors.c +++ b/libguile/bitvectors.c @@ -184,10 +184,10 @@ scm_c_bitvector_length (SCM vec) return BITVECTOR_LENGTH (vec); } -SCM_DEFINE (scm_bitvector_length, "bitvector-length", 1, 0, 0, - (SCM vec), - "Return the length of the bitvector @var{vec}.") -#define FUNC_NAME s_scm_bitvector_length +SCM_DEFINE_STATIC (bitvector_length, "bitvector-length", 1, 0, 0, + (SCM vec), + "Return the length of the bitvector @var{vec}.") +#define FUNC_NAME s_bitvector_length { return scm_from_size_t (scm_c_bitvector_length (vec)); } @@ -490,17 +490,16 @@ count_ones (uint32_t x) return (x+(x>>16)) & 0xff; } -SCM_DEFINE (scm_bitvector_count, "bitvector-count", 1, 0, 0, - (SCM bitvector), - "Return the number of set bits in @var{bitvector}.") -#define FUNC_NAME s_scm_bitvector_count +size_t +scm_c_bitvector_count (SCM bitvector) +#define FUNC_NAME "bitvector-count" { VALIDATE_BITVECTOR (1, bitvector); size_t len = BITVECTOR_LENGTH (bitvector); if (len == 0) - return SCM_INUM0; + return 0; const uint32_t *bits = BITVECTOR_BITS (bitvector); size_t count = 0; @@ -513,7 +512,16 @@ SCM_DEFINE (scm_bitvector_count, "bitvector-count", 1, 0, 0, uint32_t last_mask = ((uint32_t)-1) >> (32*word_len - len); count += count_ones (bits[i] & last_mask); - return scm_from_size_t (count); + return count; +} +#undef FUNC_NAME + +SCM_DEFINE_STATIC (scm_bitvector_count, "bitvector-count", 1, 0, 0, + (SCM bitvector), + "Return the number of set bits in @var{bitvector}.") +#define FUNC_NAME s_scm_bitvector_count +{ + return scm_from_size_t (scm_c_bitvector_count (bitvector)); } #undef FUNC_NAME |