diff options
author | Marius Vollmer <mvo@zagadka.de> | 2004-12-29 18:21:55 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 2004-12-29 18:21:55 +0000 |
commit | f301dbf34a32e982f671b7b86ac39f3a880cac7b (patch) | |
tree | 6a6ed3a054f591f3f7e1cc1bc1455ad4fea57baf /libguile/srfi-4.c | |
parent | 55088b6a628bfe9ab8180641cd359f72d4ab814f (diff) | |
download | guile-f301dbf34a32e982f671b7b86ac39f3a880cac7b.tar.gz |
* srfi-4.h (scm_i_proc_make_u8vector, scm_i_proc_make_s8vector,
scm_i_proc_make_u16vector, scm_i_proc_make_s16vector,
scm_i_proc_make_u32vector, scm_i_proc_make_s32vector,
scm_i_proc_make_u64vector, scm_i_proc_make_s64vector,
scm_i_proc_make_f32vector, scm_i_proc_make_f64vector,
scm_i_proc_make_c32vector, scm_i_proc_make_c64vector,
uvec_proc_vars): Removed.
(scm_i_generalized_vector_creator): Removed.
(scm_i_generalized_vector_type): New.
* unif.h, unif.c (scm_typed_array_p, scm_make_array,
scm_make_typed_array, scm_array_type, scm_list_to_array,
scm_list_to_typed_array, scm_is_array, scm_is_typed_array): New.
(scm_array_creator): Removed.
(scm_array_p): Deprecated second PROT argument.
(scm_dimensions_to_uniform_array, scm_list_to_uniform_array):
Deprecated, reimplemented in terms of scm_make_typed_array and
scm_list_to_typed_array.
(scm_i_proc_make_vector, scm_i_proc_make_string,
scm_i_proc_make_bitvector): Removed.
(type_creator_table, init_type_creator_table, type_to_creator,
make_typed_vector): New.
(scm_i_convert_old_prototype): Removed.
(prototype_to_type): New.
(scm_make_uve): Deprecated, reimplemented using make_typed_vector.
(scm_array_dimensions): Use scm_list_1 instead of scm_cons for
minor added clarity.
(scm_make_shared_array, scm_ra2contig): Use make_typed_vector
instead of scm_make_uve.
(tag_creator_table, scm_i_tag_to_creator): Removed.
(tag_to_type): New.
(scm_i_read_array): Use scm_list_to_typed_array instead of
scm_list_to_uniform_array.
Diffstat (limited to 'libguile/srfi-4.c')
-rw-r--r-- | libguile/srfi-4.c | 58 |
1 files changed, 8 insertions, 50 deletions
diff --git a/libguile/srfi-4.c b/libguile/srfi-4.c index f3a75c78c..32b1b23d2 100644 --- a/libguile/srfi-4.c +++ b/libguile/srfi-4.c @@ -449,32 +449,20 @@ coerce_to_uvec (int type, SCM obj) scm_wrong_type_arg_msg (NULL, 0, obj, "list or generalized vector"); } -static SCM *uvec_proc_vars[12] = { - &scm_i_proc_make_u8vector, - &scm_i_proc_make_s8vector, - &scm_i_proc_make_u16vector, - &scm_i_proc_make_s16vector, - &scm_i_proc_make_u32vector, - &scm_i_proc_make_s32vector, - &scm_i_proc_make_u64vector, - &scm_i_proc_make_s64vector, - &scm_i_proc_make_f32vector, - &scm_i_proc_make_f64vector, - &scm_i_proc_make_c32vector, - &scm_i_proc_make_c64vector -}; +SCM_SYMBOL (scm_sym_a, "a"); +SCM_SYMBOL (scm_sym_b, "b"); SCM -scm_i_generalized_vector_creator (SCM v) +scm_i_generalized_vector_type (SCM v) { if (scm_is_vector (v)) - return scm_i_proc_make_vector; + return SCM_BOOL_T; else if (scm_is_string (v)) - return scm_i_proc_make_string; + return scm_sym_a; else if (scm_is_bitvector (v)) - return scm_i_proc_make_bitvector; + return scm_sym_b; else if (scm_is_uniform_vector (v)) - return *(uvec_proc_vars[SCM_UVEC_TYPE(v)]); + return scm_from_locale_symbol (uvec_tags[SCM_UVEC_TYPE(v)]); else return SCM_BOOL_F; } @@ -931,21 +919,6 @@ SCM_DEFINE (scm_uniform_vector_write, "uniform-vector-write", 1, 3, 0, #define CTYPE double #include "libguile/srfi-4.i.c" -SCM scm_i_proc_make_u8vector; -SCM scm_i_proc_make_s8vector; -SCM scm_i_proc_make_u16vector; -SCM scm_i_proc_make_s16vector; -SCM scm_i_proc_make_u32vector; -SCM scm_i_proc_make_s32vector; -SCM scm_i_proc_make_u64vector; -SCM scm_i_proc_make_s64vector; -SCM scm_i_proc_make_f32vector; -SCM scm_i_proc_make_f64vector; -SCM scm_i_proc_make_c32vector; -SCM scm_i_proc_make_c64vector; - -/* Create the smob type for homogeneous numeric vectors and install - the primitives. */ void scm_init_srfi_4 (void) { @@ -953,24 +926,9 @@ scm_init_srfi_4 (void) scm_set_smob_equalp (scm_tc16_uvec, uvec_equalp); scm_set_smob_free (scm_tc16_uvec, uvec_free); scm_set_smob_print (scm_tc16_uvec, uvec_print); + #include "libguile/srfi-4.x" -#define GETPROC(tag) \ - scm_i_proc_make_##tag##vector = \ - scm_variable_ref (scm_c_lookup ("make-"#tag"vector")) - - GETPROC (u8); - GETPROC (s8); - GETPROC (u16); - GETPROC (s16); - GETPROC (u32); - GETPROC (s32); - GETPROC (u64); - GETPROC (s64); - GETPROC (f32); - GETPROC (f64); - GETPROC (c32); - GETPROC (c64); } /* End of srfi-4.c. */ |