summaryrefslogtreecommitdiff
path: root/libguile/bitvectors.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2020-04-21 22:35:00 +0200
committerAndy Wingo <wingo@pobox.com>2020-04-29 11:14:17 +0200
commitb517a91ba4aaccf920a81eb8bf71ca090a9b457c (patch)
tree87766f92c0bf33de3a4ca4c4e6afa177f7cd8e72 /libguile/bitvectors.c
parentbfd38b857757c767c1b94762aeb35db112c4f76b (diff)
downloadguile-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.c28
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