summaryrefslogtreecommitdiff
path: root/libguile/srfi-4.c
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>2004-12-29 18:21:55 +0000
committerMarius Vollmer <mvo@zagadka.de>2004-12-29 18:21:55 +0000
commitf301dbf34a32e982f671b7b86ac39f3a880cac7b (patch)
tree6a6ed3a054f591f3f7e1cc1bc1455ad4fea57baf /libguile/srfi-4.c
parent55088b6a628bfe9ab8180641cd359f72d4ab814f (diff)
downloadguile-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.c58
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. */