mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-22 19:44:10 +02:00
add registry of vector constructors, make-generalized-vector
* libguile/generalized-vectors.h: * libguile/generalized-vectors.c: Add a registry of vector constructors. (scm_make_generalized_vector): New public function, constructs a vector of a given type. * libguile/bitvectors.c: * libguile/bytevectors.c: * libguile/srfi-4.c: * libguile/strings.c: * libguile/vectors.c: Register vector constructors. * libguile/extensions.c (scm_init_extensions): No need to NULL the list of registered extensions here, the static init does it for us. Allows scm_c_register_extension to be called before scm_init_extensions. * libguile/init.c (scm_i_init_guile): Move array initialization earlier, so e.g. scm_init_strings has access to a valid list of array element types when registering its vector constructor.
This commit is contained in:
parent
476b894c71
commit
f45eccffa7
9 changed files with 85 additions and 14 deletions
|
@ -920,6 +920,24 @@ scm_init_srfi_4 (void)
|
|||
scm_permanent_object (scm_c_read_string ("9223372036854775807"));
|
||||
#endif
|
||||
|
||||
#define REGISTER(tag, TAG) \
|
||||
scm_i_register_vector_constructor \
|
||||
(scm_i_array_element_types[SCM_ARRAY_ELEMENT_TYPE_##TAG], \
|
||||
scm_make_##tag##vector)
|
||||
|
||||
REGISTER (u8, U8);
|
||||
REGISTER (s8, S8);
|
||||
REGISTER (u16, U16);
|
||||
REGISTER (s16, S16);
|
||||
REGISTER (u32, U32);
|
||||
REGISTER (s32, S32);
|
||||
REGISTER (u64, U64);
|
||||
REGISTER (s64, S64);
|
||||
REGISTER (f32, F32);
|
||||
REGISTER (f64, F64);
|
||||
REGISTER (c32, C32);
|
||||
REGISTER (c64, C64);
|
||||
|
||||
#include "libguile/srfi-4.x"
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue