summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Llorens <daniel.llorens@bluewin.ch>2013-04-15 13:44:10 +0200
committerAndy Wingo <wingo@pobox.com>2014-01-27 21:45:18 +0100
commit3e5f10e8a2fd838fd48cbb36194b833073a6b12b (patch)
treed6a14bf001daeeb321da64061746f434482d36c8
parenta70333d2968ef945db2188f1720f52ff9b0e54a5 (diff)
downloadguile-3e5f10e8a2fd838fd48cbb36194b833073a6b12b.tar.gz
Don't bother with array handle in scm_c_array_rank
* libguile/generalized-arrays.c: (scm_c_array_rank): compute rank directly from object.
-rw-r--r--libguile/generalized-arrays.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/libguile/generalized-arrays.c b/libguile/generalized-arrays.c
index 59925a09e..6d2106714 100644
--- a/libguile/generalized-arrays.c
+++ b/libguile/generalized-arrays.c
@@ -94,16 +94,15 @@ SCM_DEFINE (scm_typed_array_p, "typed-array?", 2, 0, 0,
size_t
scm_c_array_rank (SCM array)
{
- scm_t_array_handle handle;
- size_t res;
-
- scm_array_get_handle (array, &handle);
- res = scm_array_handle_rank (&handle);
- scm_array_handle_release (&handle);
- return res;
+ if (SCM_I_ARRAYP (array))
+ return SCM_I_ARRAY_NDIM (array);
+ else if (scm_i_array_implementation_for_obj (array))
+ return 1;
+ else
+ scm_wrong_type_arg_msg (NULL, 0, array, "array");
}
-SCM_DEFINE (scm_array_rank, "array-rank", 1, 0, 0,
+SCM_DEFINE (scm_array_rank, "array-rank", 1, 0, 0,
(SCM array),
"Return the number of dimensions of the array @var{array.}\n")
#define FUNC_NAME s_scm_array_rank