diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-06-04 20:16:10 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-06-04 20:16:10 -0700 |
commit | 977cad2eae706e7fc33abf57fdc837bce93901e4 (patch) | |
tree | 66bc3384ce753949113f8a4229ca6d2f29989682 /lib.h | |
parent | f7b4b05012a9e40deca1bdc72b02638d0be5a386 (diff) | |
download | txr-977cad2eae706e7fc33abf57fdc837bce93901e4.tar.gz txr-977cad2eae706e7fc33abf57fdc837bce93901e4.tar.bz2 txr-977cad2eae706e7fc33abf57fdc837bce93901e4.zip |
seq_iter: support reverse iteration for ranges.
* lib.h (seq_iter_t): Add some union members to ui and ul for
use with ranges. The purpose of this is to have separate
naming for the iteration variables for ranges.
* lib.c (seq_iter_get_range_cnum, seq_iter_peek_range_cnum,
seq_iter_get_range_chr, seq_iter_peek_range_chr,
seq_iter_get_range_bignum, seq_iter_peek_range_bignum): Use
new union member names for clarity.
(seq_iter_get_rev_range_cnum, seq_iter_peek_rev_range_cnum,
seq_iter_get_rev_range_chr, seq_iter_peek_rev_range_chr,
seq_iter_get_rev_range_bignum,
seq_iter_peek_rev_range_bignum): New static functions.
(seq_iter_with_init_info): Drop obj argument since the si
argument has the object. Add handling for empty and reversed
ranges. Also convert unbounded ranges like N..t and N..: to
just N, recursively. Use new union member names.
(seq_iter_init, seq_iter_init_with_rewind, iter_begin,
iter_reset): Follow elimination of argument in
seq_iter_init_with_info.
Diffstat (limited to 'lib.h')
-rw-r--r-- | lib.h | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -390,10 +390,13 @@ typedef struct seq_iter { union { val iter; cnum index; + val vn; + cnum cn; } ui; union { - val lim; cnum len; + val vbound; + cnum cbound; } ul; int (*get)(struct seq_iter *, val *pval); int (*peek)(struct seq_iter *, val *pval); |