summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Llorens <daniel.llorens@bluewin.ch>2013-04-11 19:32:23 +0200
committerAndy Wingo <wingo@pobox.com>2014-01-27 21:45:17 +0100
commite1df3b3ea7e4e4b25ea1b6a698fdf8694c0b082c (patch)
tree501b957940185aa29b9c561f665cbcf8d558ef93
parentfa156321d4946b01a7590e1a154425ab6d474dba (diff)
downloadguile-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.c32
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"