mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
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.
This commit is contained in:
parent
bfd38b8577
commit
b517a91ba4
5 changed files with 37 additions and 24 deletions
|
@ -6564,15 +6564,9 @@ Create a new bitvector with the arguments as elements.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} bitvector-length vec
|
@deffn {Scheme Procedure} bitvector-length vec
|
||||||
@deffnx {C Function} scm_bitvector_length (vec)
|
|
||||||
Return the length of the bitvector @var{vec}.
|
Return the length of the bitvector @var{vec}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deftypefn {C Function} size_t scm_c_bitvector_length (SCM vec)
|
|
||||||
Like @code{scm_bitvector_length}, but the length is returned as a
|
|
||||||
@code{size_t}.
|
|
||||||
@end deftypefn
|
|
||||||
|
|
||||||
@deffn {Scheme Procedure} bitvector-bit-set? vec idx
|
@deffn {Scheme Procedure} bitvector-bit-set? vec idx
|
||||||
@deffnx {Scheme Procedure} bitvector-bit-clear? vec idx
|
@deffnx {Scheme Procedure} bitvector-bit-clear? vec idx
|
||||||
Return @code{#t} if the bit at index @var{idx} of the bitvector
|
Return @code{#t} if the bit at index @var{idx} of the bitvector
|
||||||
|
@ -6623,7 +6617,6 @@ of the bitvector @var{vec}.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} bitvector-count bitvector
|
@deffn {Scheme Procedure} bitvector-count bitvector
|
||||||
@deffnx {C Function} scm_bitvector_count (bitvector)
|
|
||||||
Return a count of how many entries in @var{bitvector} are set.
|
Return a count of how many entries in @var{bitvector} are set.
|
||||||
|
|
||||||
@example
|
@example
|
||||||
|
@ -6643,9 +6636,11 @@ For example,
|
||||||
@end example
|
@end example
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deftypefn {C Function} size_t scm_c_bitvector_count_bits (SCM bitvector, SCM bits)
|
@deftypefn {C Function} size_t scm_c_bitvector_length (SCM bitvector)
|
||||||
Same as @code{bitvector-count-bits}, but returning a @code{size_t} for
|
@deftypefnx {C Function} size_t scm_c_bitvector_count (SCM bitvector)
|
||||||
C.
|
@deftypefnx {C Function} size_t scm_c_bitvector_count_bits (SCM bitvector, SCM bits)
|
||||||
|
Same as @code{bitvector-length}, @code{bitvector-count}, and
|
||||||
|
@code{bitvector-count-bits}, but returning a @code{size_t} result.
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} bitvector-position bitvector bool start
|
@deffn {Scheme Procedure} bitvector-position bitvector bool start
|
||||||
|
|
|
@ -184,10 +184,10 @@ scm_c_bitvector_length (SCM vec)
|
||||||
return BITVECTOR_LENGTH (vec);
|
return BITVECTOR_LENGTH (vec);
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM_DEFINE (scm_bitvector_length, "bitvector-length", 1, 0, 0,
|
SCM_DEFINE_STATIC (bitvector_length, "bitvector-length", 1, 0, 0,
|
||||||
(SCM vec),
|
(SCM vec),
|
||||||
"Return the length of the bitvector @var{vec}.")
|
"Return the length of the bitvector @var{vec}.")
|
||||||
#define FUNC_NAME s_scm_bitvector_length
|
#define FUNC_NAME s_bitvector_length
|
||||||
{
|
{
|
||||||
return scm_from_size_t (scm_c_bitvector_length (vec));
|
return scm_from_size_t (scm_c_bitvector_length (vec));
|
||||||
}
|
}
|
||||||
|
@ -490,17 +490,16 @@ count_ones (uint32_t x)
|
||||||
return (x+(x>>16)) & 0xff;
|
return (x+(x>>16)) & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
SCM_DEFINE (scm_bitvector_count, "bitvector-count", 1, 0, 0,
|
size_t
|
||||||
(SCM bitvector),
|
scm_c_bitvector_count (SCM bitvector)
|
||||||
"Return the number of set bits in @var{bitvector}.")
|
#define FUNC_NAME "bitvector-count"
|
||||||
#define FUNC_NAME s_scm_bitvector_count
|
|
||||||
{
|
{
|
||||||
VALIDATE_BITVECTOR (1, bitvector);
|
VALIDATE_BITVECTOR (1, bitvector);
|
||||||
|
|
||||||
size_t len = BITVECTOR_LENGTH (bitvector);
|
size_t len = BITVECTOR_LENGTH (bitvector);
|
||||||
|
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
return SCM_INUM0;
|
return 0;
|
||||||
|
|
||||||
const uint32_t *bits = BITVECTOR_BITS (bitvector);
|
const uint32_t *bits = BITVECTOR_BITS (bitvector);
|
||||||
size_t count = 0;
|
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);
|
uint32_t last_mask = ((uint32_t)-1) >> (32*word_len - len);
|
||||||
count += count_ones (bits[i] & last_mask);
|
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
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
|
|
@ -35,11 +35,9 @@
|
||||||
SCM_API SCM scm_bitvector_p (SCM vec);
|
SCM_API SCM scm_bitvector_p (SCM vec);
|
||||||
SCM_API SCM scm_bitvector (SCM bits);
|
SCM_API SCM scm_bitvector (SCM bits);
|
||||||
SCM_API SCM scm_make_bitvector (SCM len, SCM fill);
|
SCM_API SCM scm_make_bitvector (SCM len, SCM fill);
|
||||||
SCM_API SCM scm_bitvector_length (SCM vec);
|
|
||||||
SCM_API SCM scm_list_to_bitvector (SCM list);
|
SCM_API SCM scm_list_to_bitvector (SCM list);
|
||||||
SCM_API SCM scm_bitvector_to_list (SCM vec);
|
SCM_API SCM scm_bitvector_to_list (SCM vec);
|
||||||
|
|
||||||
SCM_API SCM scm_bitvector_count (SCM v);
|
|
||||||
SCM_API SCM scm_bitvector_position (SCM v, SCM item, SCM start);
|
SCM_API SCM scm_bitvector_position (SCM v, SCM item, SCM start);
|
||||||
SCM_API SCM scm_bitvector_set_bits_x (SCM v, SCM bits);
|
SCM_API SCM scm_bitvector_set_bits_x (SCM v, SCM bits);
|
||||||
SCM_API SCM scm_bitvector_clear_bits_x (SCM v, SCM bits);
|
SCM_API SCM scm_bitvector_clear_bits_x (SCM v, SCM bits);
|
||||||
|
@ -47,6 +45,7 @@ SCM_API SCM scm_bitvector_clear_bits_x (SCM v, SCM bits);
|
||||||
SCM_API int scm_is_bitvector (SCM obj);
|
SCM_API int scm_is_bitvector (SCM obj);
|
||||||
SCM_API SCM scm_c_make_bitvector (size_t len, SCM fill);
|
SCM_API SCM scm_c_make_bitvector (size_t len, SCM fill);
|
||||||
SCM_API size_t scm_c_bitvector_length (SCM vec);
|
SCM_API size_t scm_c_bitvector_length (SCM vec);
|
||||||
|
SCM_API size_t scm_c_bitvector_count (SCM v);
|
||||||
SCM_API int scm_c_bitvector_bit_is_set (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 int scm_c_bitvector_bit_is_clear (SCM vec, size_t idx);
|
||||||
SCM_API void scm_c_bitvector_set_bit_x (SCM vec, size_t idx);
|
SCM_API void scm_c_bitvector_set_bit_x (SCM vec, size_t idx);
|
||||||
|
|
|
@ -88,6 +88,16 @@ scm_find_executable (const char *name)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SCM
|
||||||
|
scm_bitvector_length (SCM vec)
|
||||||
|
{
|
||||||
|
scm_c_issue_deprecation_warning
|
||||||
|
("scm_bitvector_length is deprecated. Use scm_c_bitvector_length "
|
||||||
|
"instead.");
|
||||||
|
|
||||||
|
return scm_from_size_t (scm_c_bitvector_length (vec));
|
||||||
|
}
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
scm_c_bitvector_ref (SCM vec, size_t idx)
|
scm_c_bitvector_ref (SCM vec, size_t idx)
|
||||||
{
|
{
|
||||||
|
@ -251,7 +261,7 @@ SCM_DEFINE (scm_bit_count, "bit-count", 2, 0, 0,
|
||||||
if (scm_is_bitvector (bitvector))
|
if (scm_is_bitvector (bitvector))
|
||||||
{
|
{
|
||||||
len = scm_to_size_t (scm_bitvector_length (bitvector));
|
len = scm_to_size_t (scm_bitvector_length (bitvector));
|
||||||
count = scm_to_size_t (scm_bitvector_count (bitvector));
|
count = scm_c_bitvector_count (bitvector);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -309,7 +319,7 @@ SCM_DEFINE (scm_bit_count_star, "bit-count*", 3, 0, 0,
|
||||||
{
|
{
|
||||||
count = scm_c_bitvector_count_bits (v, kv);
|
count = scm_c_bitvector_count_bits (v, kv);
|
||||||
if (count == 0)
|
if (count == 0)
|
||||||
count = scm_to_size_t (scm_bitvector_count (kv)) - count;
|
count = scm_c_bitvector_count (kv) - count;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -115,6 +115,7 @@ typedef struct scm_thread scm_i_thread SCM_DEPRECATED_TYPE;
|
||||||
|
|
||||||
SCM_DEPRECATED char* scm_find_executable (const char *name);
|
SCM_DEPRECATED char* scm_find_executable (const char *name);
|
||||||
|
|
||||||
|
SCM_DEPRECATED SCM scm_bitvector_length (SCM vec);
|
||||||
SCM_DEPRECATED SCM scm_c_bitvector_ref (SCM vec, size_t idx);
|
SCM_DEPRECATED SCM scm_c_bitvector_ref (SCM vec, size_t idx);
|
||||||
SCM_DEPRECATED SCM scm_bitvector_ref (SCM vec, SCM idx);
|
SCM_DEPRECATED SCM scm_bitvector_ref (SCM vec, SCM idx);
|
||||||
SCM_DEPRECATED void scm_c_bitvector_set_x (SCM vec, size_t idx, SCM val);
|
SCM_DEPRECATED void scm_c_bitvector_set_x (SCM vec, size_t idx, SCM val);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue