diff options
author | Daniel Llorens <daniel.llorens@bluewin.ch> | 2013-04-11 19:32:23 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2014-01-27 21:45:17 +0100 |
commit | e1df3b3ea7e4e4b25ea1b6a698fdf8694c0b082c (patch) | |
tree | 501b957940185aa29b9c561f665cbcf8d558ef93 | |
parent | fa156321d4946b01a7590e1a154425ab6d474dba (diff) | |
download | guile-e1df3b3ea7e4e4b25ea1b6a698fdf8694c0b082c.tar.gz |
vector-length rejects non vector? arg
* libguile/vectors.c
- scm_c_vector_length: error if SCM_I_IS_VECTOR (v) fails.
- scm_vector_length: Documentation for vector-length.
-rw-r--r-- | libguile/vectors.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/libguile/vectors.c b/libguile/vectors.c index 25ad38b57..369691e1f 100644 --- a/libguile/vectors.c +++ b/libguile/vectors.c @@ -100,31 +100,29 @@ SCM_DEFINE (scm_vector_p, "vector?", 1, 0, 0, } #undef FUNC_NAME -SCM_GPROC (s_vector_length, "vector-length", 1, 0, 0, scm_vector_length, g_vector_length); -/* Returns the number of elements in @var{vector} as an exact integer. */ -SCM -scm_vector_length (SCM v) -{ - if (SCM_I_IS_VECTOR (v)) - return scm_from_size_t (SCM_I_VECTOR_LENGTH (v)); - else if (SCM_I_ARRAYP (v) && SCM_I_ARRAY_NDIM (v) == 1) - { - scm_t_array_dim *dim = SCM_I_ARRAY_DIMS (v); - return scm_from_size_t (dim->ubnd - dim->lbnd + 1); - } - else - return scm_wta_dispatch_1 (g_vector_length, v, 1, "vector-length"); -} - size_t scm_c_vector_length (SCM v) { if (SCM_I_IS_VECTOR (v)) return SCM_I_VECTOR_LENGTH (v); else - return scm_to_size_t (scm_vector_length (v)); + scm_wrong_type_arg_msg (NULL, 0, v, "vector"); } +SCM_DEFINE (scm_vector_length, "vector-length", 1, 0, 0, + (SCM v), + "Return the number of elements in vector @var{v} as an exact\n" + "integer.\n" + "\n" + "@lisp\n" + "(vector-length #(a b c)) @result{} 3\n" + "@end lisp") +#define FUNC_NAME s_scm_vector_length +{ + return scm_from_size_t (scm_c_vector_length (v)); +} +#undef FUNC_NAME + SCM_REGISTER_PROC (s_list_to_vector, "list->vector", 1, 0, 0, scm_vector); /* "Return a newly created vector initialized to the elements of" |