diff options
author | Daniel Llorens <daniel.llorens@bluewin.ch> | 2013-04-15 13:44:10 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2014-01-27 21:45:18 +0100 |
commit | 3e5f10e8a2fd838fd48cbb36194b833073a6b12b (patch) | |
tree | d6a14bf001daeeb321da64061746f434482d36c8 | |
parent | a70333d2968ef945db2188f1720f52ff9b0e54a5 (diff) | |
download | guile-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.c | 15 |
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 |