summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-08-22 11:18:19 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-08-22 11:18:19 -0700
commit9ec47b693f9618bfd29347226157dc2f8a655ff8 (patch)
tree14c6648713e8d63f9380dbcd5d048aed1e94fae7 /lib.c
parentceff5513bb6b309d892ff58149ce16f527ce0011 (diff)
downloadtxr-9ec47b693f9618bfd29347226157dc2f8a655ff8.tar.gz
txr-9ec47b693f9618bfd29347226157dc2f8a655ff8.tar.bz2
txr-9ec47b693f9618bfd29347226157dc2f8a655ff8.zip
iter-begin: allow iterator argument.
* lib.c (seq_iter_init_with_info): Allow the iterated object to be an iterator, in which case a copy of the iterator is set up. * txr.1: Documented.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 628ed06e..6175497f 100644
--- a/lib.c
+++ b/lib.c
@@ -987,6 +987,11 @@ void seq_iter_init_with_info(val self, seq_iter_t *it,
}
}
}
+ if (it->inf.obj->co.cls == seq_iter_cls)
+ {
+ *it = *coerce(struct seq_iter *, it->inf.obj->co.handle);
+ break;
+ }
if (it->inf.obj->co.cls == tree_iter_cls)
{
it->ui.iter = if3(support_rewind,