diff options
-rw-r--r-- | libguile/vectors.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/libguile/vectors.c b/libguile/vectors.c index 079e056f2..4c1b490dc 100644 --- a/libguile/vectors.c +++ b/libguile/vectors.c @@ -128,13 +128,14 @@ scm_vector_p(x) return SCM_VECTORP(x) ? SCM_BOOL_T : SCM_BOOL_F; } -SCM_PROC(s_vector_length, "vector-length", 1, 0, 0, scm_vector_length); +SCM_GPROC(s_vector_length, "vector-length", 1, 0, 0, scm_vector_length, g_vector_length); SCM scm_vector_length(v) SCM v; { - SCM_ASSERT(SCM_NIMP(v) && SCM_VECTORP(v), v, SCM_ARG1, s_vector_length); + SCM_GASSERT1(SCM_NIMP(v) && SCM_VECTORP(v), + g_vector_length, v, SCM_ARG1, s_vector_length); return SCM_MAKINUM(SCM_LENGTH(v)); } @@ -156,19 +157,21 @@ scm_vector(l) return res; } -SCM_PROC(s_vector_ref, "vector-ref", 2, 0, 0, scm_vector_ref); +SCM_GPROC(s_vector_ref, "vector-ref", 2, 0, 0, scm_vector_ref, g_vector_ref); SCM scm_vector_ref (SCM v, SCM k) { - SCM_ASSERT (SCM_NIMP (v) && SCM_VECTORP (v), v, SCM_ARG1, s_vector_ref); - SCM_ASSERT (SCM_INUMP (k), k, SCM_ARG2, s_vector_ref); + SCM_GASSERT2 (SCM_NIMP (v) && SCM_VECTORP (v), + g_vector_ref, v, k, SCM_ARG1, s_vector_ref); + SCM_GASSERT2 (SCM_INUMP (k), + g_vector_ref, v, k, SCM_ARG2, s_vector_ref); SCM_ASSERT (SCM_INUM (k) < SCM_LENGTH (v) && SCM_INUM (k) >= 0, k, SCM_OUTOFRANGE, s_vector_ref); return SCM_VELTS (v)[(long) SCM_INUM (k)]; } -SCM_PROC(s_vector_set_x, "vector-set!", 3, 0, 0, scm_vector_set_x); +SCM_GPROC(s_vector_set_x, "vector-set!", 3, 0, 0, scm_vector_set_x, g_vector_set_x); SCM scm_vector_set_x(v, k, obj) @@ -176,9 +179,14 @@ scm_vector_set_x(v, k, obj) SCM k; SCM obj; { - SCM_ASSERT(SCM_NIMP(v) && SCM_VECTORP(v), v, SCM_ARG1, s_vector_set_x); - SCM_ASSERT(SCM_INUMP(k), k, SCM_ARG2, s_vector_set_x); - SCM_ASSERT((SCM_INUM(k) < SCM_LENGTH(v)) && (SCM_INUM(k) >= 0), k, SCM_OUTOFRANGE, s_vector_set_x); + SCM_GASSERTn (SCM_NIMP(v) && SCM_VECTORP(v), + g_vector_set_x, SCM_LIST3 (v, k, obj), + SCM_ARG1, s_vector_set_x); + SCM_GASSERTn (SCM_INUMP(k), + g_vector_set_x, SCM_LIST3 (v, k, obj), + SCM_ARG2, s_vector_set_x); + SCM_ASSERT ((SCM_INUM(k) < SCM_LENGTH(v)) && (SCM_INUM(k) >= 0), + k, SCM_OUTOFRANGE, s_vector_set_x); SCM_VELTS(v)[((long) SCM_INUM(k))] = obj; return obj; } |