diff options
author | Andy Wingo <wingo@pobox.com> | 2009-07-18 12:43:54 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-07-19 15:15:44 +0200 |
commit | f45eccffa73c043466a4cc0f5037132ee5795eee (patch) | |
tree | 16e441eddc02d5274cd61592814ea29bbe55b73d /libguile/init.c | |
parent | 476b894c71b436f3befb8af46b899aaf244763e2 (diff) | |
download | guile-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/init.c')
-rw-r--r-- | libguile/init.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/libguile/init.c b/libguile/init.c index 9e3151c82..da3bc0af2 100644 --- a/libguile/init.c +++ b/libguile/init.c @@ -521,7 +521,19 @@ scm_i_init_guile (SCM_STACKITEM *base) scm_init_sort (); scm_init_srcprop (); scm_init_stackchk (); - scm_init_strings (); + + scm_init_array_handle (); + scm_init_generalized_arrays (); + scm_init_generalized_vectors (); + scm_init_vectors (); + scm_init_uniform (); + scm_init_bitvectors (); + scm_bootstrap_bytevectors (); + scm_init_srfi_4 (); + scm_init_arrays (); + scm_init_array_map (); + + scm_init_strings (); /* Requires array-handle */ scm_init_struct (); /* Requires strings */ scm_init_stacks (); /* Requires strings, struct */ scm_init_symbols (); @@ -535,7 +547,6 @@ scm_i_init_guile (SCM_STACKITEM *base) scm_init_srfi_13 (); scm_init_srfi_14 (); scm_init_throw (); - scm_init_vectors (); scm_init_version (); scm_init_weaks (); scm_init_guardians (); @@ -544,13 +555,6 @@ scm_i_init_guile (SCM_STACKITEM *base) scm_init_evalext (); scm_init_debug (); /* Requires macro smobs */ scm_init_random (); - scm_init_array_handle (); - scm_init_generalized_arrays (); - scm_init_generalized_vectors (); - scm_init_uniform (); - scm_init_bitvectors (); - scm_init_array_map (); - scm_init_arrays (); scm_init_simpos (); scm_init_load_path (); scm_init_standard_ports (); /* Requires fports */ @@ -559,7 +563,6 @@ scm_i_init_guile (SCM_STACKITEM *base) scm_init_lang (); #endif /* SCM_ENABLE_ELISP */ scm_init_script (); - scm_init_srfi_4 (); scm_init_goops (); @@ -583,7 +586,6 @@ scm_i_init_guile (SCM_STACKITEM *base) scm_init_rw (); scm_init_extensions (); - scm_bootstrap_bytevectors (); scm_bootstrap_vm (); atexit (cleanup_for_exit); |