[Guile-commits] 05/08: Support non-zero lower bounds in array-slice-for-each

2017-10-27 Thread Daniel Llorens
lloda pushed a commit to branch wip-lloda
in repository guile.

commit 0a5023149d260f0802b8c5f3332e90810bef0372
Author: Daniel Llorens 
Date:   Mon Feb 13 13:49:35 2017 +0100

Support non-zero lower bounds in array-slice-for-each

* libguile/array-handle.c (scm_array_handle_writable_elements): Fix
  error message.
* libguile/array-map.c (scm_array_slice_for_each): Support non-zero
  lower bounds. Fix error messages.
* test-suite/tests/array-map.test: Test scm_array_slice_for_each with
  non-zero lower bound argument.
---
 libguile/array-map.c| 22 +-
 test-suite/tests/array-map.test |  8 
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/libguile/array-map.c b/libguile/array-map.c
index 651a1bf..29e4aa7 100644
--- a/libguile/array-map.c
+++ b/libguile/array-map.c
@@ -679,6 +679,7 @@ SCM_DEFINE (scm_array_slice_for_each, 
"array-slice-for-each", 2, 0, 1,
 "@end lisp")
 #define FUNC_NAME s_scm_array_slice_for_each
 {
+  SCM xargs = args;
   int const N = scm_ilength (args);
   int const frank = scm_to_int (frame_rank);
   int ocd;
@@ -742,9 +743,9 @@ SCM_DEFINE (scm_array_slice_for_each, 
"array-slice-for-each", 2, 0, 1,
   assert((pool0+pool_size==pool) && "internal error");
 #undef AFIC_ALLOC_ADVANCE
 
-  for (n=0; scm_is_pair(args); args=scm_cdr(args), ++n)
+  for (n=0, xargs=args; scm_is_pair(xargs); xargs=scm_cdr(xargs), ++n)
 {
-  args_[n] = scm_car(args);
+  args_[n] = scm_car(xargs);
   scm_array_get_handle(args_[n], ah+n);
   as[n] = scm_array_handle_dims(ah+n);
   rank[n] = scm_array_handle_rank(ah+n);
@@ -752,29 +753,24 @@ SCM_DEFINE (scm_array_slice_for_each, 
"array-slice-for-each", 2, 0, 1,
   /* checks */
   msg = NULL;
   if (frank<0)
-msg = "bad frame rank";
+msg = "bad frame rank ~S, ~S";
   else
 {
   for (n=0; n!=N; ++n)
 {
   if (rank[n]typed-array 'f64 2 '((9 1) (7 8



[Guile-commits] 05/08: Support non-zero lower bounds in array-slice-for-each

2017-02-16 Thread Daniel Llorens
lloda pushed a commit to branch wip-exception-truncate
in repository guile.

commit 592d6aa32dfdfbaa0c0130a4017201c761a6
Author: Daniel Llorens 
Date:   Mon Feb 13 13:49:35 2017 +0100

Support non-zero lower bounds in array-slice-for-each

* libguile/array-handle.c (scm_array_handle_writable_elements): Fix
  error message.
* libguile/array-map.c (scm_array_slice_for_each): Support non-zero
  lower bounds. Fix error messages.
* test-suite/tests/array-map.test: Test scm_array_slice_for_each with
  non-zero lower bound argument.
---
 libguile/array-handle.c |  2 +-
 libguile/array-map.c| 22 +-
 test-suite/tests/array-map.test |  8 
 3 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/libguile/array-handle.c b/libguile/array-handle.c
index 89277d9..4c2fe0e 100644
--- a/libguile/array-handle.c
+++ b/libguile/array-handle.c
@@ -327,7 +327,7 @@ SCM *
 scm_array_handle_writable_elements (scm_t_array_handle *h)
 {
   if (h->element_type != SCM_ARRAY_ELEMENT_TYPE_SCM)
-scm_wrong_type_arg_msg (NULL, 0, h->array, "non-uniform array");
+scm_wrong_type_arg_msg (NULL, 0, h->array, "array of Scheme values");
   return ((SCM*)h->elements) + h->base;
 }
 
diff --git a/libguile/array-map.c b/libguile/array-map.c
index c2825bc..b6529c0 100644
--- a/libguile/array-map.c
+++ b/libguile/array-map.c
@@ -677,6 +677,7 @@ SCM_DEFINE (scm_array_slice_for_each, 
"array-slice-for-each", 2, 0, 1,
 "@end lisp")
 #define FUNC_NAME s_scm_array_slice_for_each
 {
+  SCM xargs = args;
   int const N = scm_ilength (args);
   int const frank = scm_to_int (frame_rank);
   int ocd;
@@ -740,9 +741,9 @@ SCM_DEFINE (scm_array_slice_for_each, 
"array-slice-for-each", 2, 0, 1,
   assert((pool0+pool_size==pool) && "internal error");
 #undef AFIC_ALLOC_ADVANCE
 
-  for (n=0; scm_is_pair(args); args=scm_cdr(args), ++n)
+  for (n=0, xargs=args; scm_is_pair(xargs); xargs=scm_cdr(xargs), ++n)
 {
-  args_[n] = scm_car(args);
+  args_[n] = scm_car(xargs);
   scm_array_get_handle(args_[n], ah+n);
   as[n] = scm_array_handle_dims(ah+n);
   rank[n] = scm_array_handle_rank(ah+n);
@@ -750,29 +751,24 @@ SCM_DEFINE (scm_array_slice_for_each, 
"array-slice-for-each", 2, 0, 1,
   /* checks */
   msg = NULL;
   if (frank<0)
-msg = "bad frame rank";
+msg = "bad frame rank ~S, ~S";
   else
 {
   for (n=0; n!=N; ++n)
 {
   if (rank[n]typed-array 'f64 2 '((9 1) (7 8



[Guile-commits] 05/08: Support non-zero lower bounds in array-slice-for-each

2017-02-15 Thread Daniel Llorens
lloda pushed a commit to branch wip-exception-truncate
in repository guile.

commit 88b249d576b2a2751a9af059d797be9368b58957
Author: Daniel Llorens 
Date:   Mon Feb 13 13:49:35 2017 +0100

Support non-zero lower bounds in array-slice-for-each

* libguile/array-handle.c (scm_array_handle_writable_elements): Fix
  error message.
* libguile/array-map.c (scm_array_slice_for_each): Support non-zero
  lower bounds. Fix error messages.
* test-suite/tests/array-map.test: Test scm_array_slice_for_each with
  non-zero lower bound argument.
---
 libguile/array-handle.c |  2 +-
 libguile/array-map.c| 22 +-
 test-suite/tests/array-map.test |  8 
 3 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/libguile/array-handle.c b/libguile/array-handle.c
index 89277d9..4c2fe0e 100644
--- a/libguile/array-handle.c
+++ b/libguile/array-handle.c
@@ -327,7 +327,7 @@ SCM *
 scm_array_handle_writable_elements (scm_t_array_handle *h)
 {
   if (h->element_type != SCM_ARRAY_ELEMENT_TYPE_SCM)
-scm_wrong_type_arg_msg (NULL, 0, h->array, "non-uniform array");
+scm_wrong_type_arg_msg (NULL, 0, h->array, "array of Scheme values");
   return ((SCM*)h->elements) + h->base;
 }
 
diff --git a/libguile/array-map.c b/libguile/array-map.c
index c2825bc..b6529c0 100644
--- a/libguile/array-map.c
+++ b/libguile/array-map.c
@@ -677,6 +677,7 @@ SCM_DEFINE (scm_array_slice_for_each, 
"array-slice-for-each", 2, 0, 1,
 "@end lisp")
 #define FUNC_NAME s_scm_array_slice_for_each
 {
+  SCM xargs = args;
   int const N = scm_ilength (args);
   int const frank = scm_to_int (frame_rank);
   int ocd;
@@ -740,9 +741,9 @@ SCM_DEFINE (scm_array_slice_for_each, 
"array-slice-for-each", 2, 0, 1,
   assert((pool0+pool_size==pool) && "internal error");
 #undef AFIC_ALLOC_ADVANCE
 
-  for (n=0; scm_is_pair(args); args=scm_cdr(args), ++n)
+  for (n=0, xargs=args; scm_is_pair(xargs); xargs=scm_cdr(xargs), ++n)
 {
-  args_[n] = scm_car(args);
+  args_[n] = scm_car(xargs);
   scm_array_get_handle(args_[n], ah+n);
   as[n] = scm_array_handle_dims(ah+n);
   rank[n] = scm_array_handle_rank(ah+n);
@@ -750,29 +751,24 @@ SCM_DEFINE (scm_array_slice_for_each, 
"array-slice-for-each", 2, 0, 1,
   /* checks */
   msg = NULL;
   if (frank<0)
-msg = "bad frame rank";
+msg = "bad frame rank ~S, ~S";
   else
 {
   for (n=0; n!=N; ++n)
 {
   if (rank[n]typed-array 'f64 2 '((9 1) (7 8