summaryrefslogtreecommitdiff
path: root/libguile/bytevectors.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-07-18 12:43:54 +0200
committerAndy Wingo <wingo@pobox.com>2009-07-19 15:15:44 +0200
commitf45eccffa73c043466a4cc0f5037132ee5795eee (patch)
tree16e441eddc02d5274cd61592814ea29bbe55b73d /libguile/bytevectors.c
parent476b894c71b436f3befb8af46b899aaf244763e2 (diff)
downloadguile-f45eccffa73c043466a4cc0f5037132ee5795eee.tar.gz
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.
Diffstat (limited to 'libguile/bytevectors.c')
-rw-r--r--libguile/bytevectors.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
index 75028aee1..9e9586d75 100644
--- a/libguile/bytevectors.c
+++ b/libguile/bytevectors.c
@@ -2117,12 +2117,16 @@ scm_bootstrap_bytevectors (void)
{
scm_t_array_implementation impl;
+
impl.tag = scm_tc16_bytevector;
impl.mask = 0xffff;
impl.vref = bv_handle_ref;
impl.vset = bv_handle_set_x;
impl.get_handle = bytevector_get_handle;
scm_i_register_array_implementation (&impl);
+ scm_i_register_vector_constructor
+ (scm_i_array_element_types[SCM_ARRAY_ELEMENT_TYPE_VU8],
+ scm_make_bytevector);
}
}