From 8331e7f693366f7775ab107953678dc4909a4068 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 18 Jun 2019 06:36:13 -0700 Subject: carray-replace: use seq_iter. * ffi.c (carray_replace): Use generic sequence iteration for range replacement instead of separate list/vector code. --- ffi.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/ffi.c b/ffi.c index 2459dc17..49f6303e 100644 --- a/ffi.c +++ b/ffi.c @@ -4934,6 +4934,8 @@ val carray_replace(val carray, val values, val from, val to) cnum vn = c_num(vlen); cnum sn; mem_t *ptr; + seq_iter_t item_iter; + seq_iter_init(self, &item_iter, values); if (fn < 0) fn = 0; @@ -4976,21 +4978,9 @@ val carray_replace(val carray, val values, val from, val to) } } - if (consp(values)) { - val iter; - - for (iter = values; fn < sn; iter = cdr(iter), fn++, ptr += elsize) - { - val newval = car(iter); - eltft->put(eltft, newval, ptr, self); - } - } else if (values) { - cnum i; - - for (i = 0; fn < sn; i++, fn++, ptr += elsize) { - val newval = ref(values, num_fast(i)); - eltft->put(eltft, newval, ptr, self); - } + for (; fn != tn; fn++, ptr += elsize) { + val item = seq_geti(&item_iter); + eltft->put(eltft, item, ptr, self); } return carray; -- cgit v1.2.3