diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-06-03 22:32:34 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-06-03 22:32:34 -0700 |
commit | fff34360b061c93926826945d6c570da3c2fbcca (patch) | |
tree | 83c7e7b503eb18344f2a1c961f4405d1ba527f1b /lib.h | |
parent | 91c85dc6a85bef1c62743bd278ebeb8914bf8b4b (diff) | |
download | txr-fff34360b061c93926826945d6c570da3c2fbcca.tar.gz txr-fff34360b061c93926826945d6c570da3c2fbcca.tar.bz2 txr-fff34360b061c93926826945d6c570da3c2fbcca.zip |
seq_iter: integers and ranges become iterable.
I think with the iter-begin API, we have the the "Maxwell's
Equations of Iteration". This not only works well for conses,
but it extends to numbers and ranges.
* lib.h (seq_iter_t): New union member ul, containing a new
member lim. existing len member moved into ul union.
* lib.c (seq_iter_get_vec, seq_iter_peek_vec): Adjust access
of len, now wrapped in union.
(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,
seq_iter_get_chr, seq_iter_peek_chr, seq_iter_get_num,
seq_iter_peek_num): New static functions.
(seq_iter_init_with_info): Support RNG object, further
classifying the iteration based on the type of the from
element. Support numbers and characters as iterable.
(iter_begin, iter_more, iter_item, iter_step, iter_reset):
Support numbers directly as unencapsulated iterators.
Diffstat (limited to 'lib.h')
-rw-r--r-- | lib.h | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -391,7 +391,10 @@ typedef struct seq_iter { val iter; cnum index; } ui; - cnum len; + union { + val lim; + cnum len; + } ul; int (*get)(struct seq_iter *, val *pval); int (*peek)(struct seq_iter *, val *pval); } seq_iter_t; |