summaryrefslogtreecommitdiff
path: root/libguile/init.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/init.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/init.c')
-rw-r--r--libguile/init.c24
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);