summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2024-06-15 15:01:16 -0700
committerKaz Kylheku <kaz@kylheku.com>2024-06-15 15:01:16 -0700
commit38a76d820decec3c703185b12a0f89bedec7716c (patch)
treeb4a0dea1deb5004adbbf6d1cc88f90a550c2d4d7 /eval.c
parent08eef02fb98856550fdd6a2cdccfdb65dc0cfec8 (diff)
downloadtxr-38a76d820decec3c703185b12a0f89bedec7716c.tar.gz
txr-38a76d820decec3c703185b12a0f89bedec7716c.tar.bz2
txr-38a76d820decec3c703185b12a0f89bedec7716c.zip
New permi: iterator version of perm.
* eval.c (eval_init): Register permi intrinsic. * combi.c (permi_get, permi_peek, permi_clone): New static functions. (permi_ops): New static structure. (permi_iter): New static function. (permi): New function. * combi.h (permi): Declared. * lib.h (struct seq_iter_ops): New function pointer, clone. (seq_iter_ops_init, seq_iter_ops_init_nomark): Initialize new member. (seq_iter_ops_init_clone): New macro. (seq_iter_cls): Existing external name declared. (seq_iter_cobj_ops, seq_iter_mark_op): Previously internal names declared external. * lib.c (seq_iter_mark_op, seq_iter_cobj_ops): Static variables become extern. (seq_iter_clone): New static function. (seq_iter_init_with_info): Use seq_iter_clone instead of assuming we can trivially clone an iterator state bitwise.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 1e6e48d5..815d488f 100644
--- a/eval.c
+++ b/eval.c
@@ -7898,6 +7898,7 @@ void eval_init(void)
reg_fun(intern(lit("promisep"), user_package), func_n1(promisep));
reg_fun(intern(lit("rperm"), user_package), func_n2(rperm));
reg_fun(intern(lit("perm"), user_package), func_n2o(perm, 1));
+ reg_fun(intern(lit("permi"), user_package), func_n2o(permi, 1));
reg_fun(intern(lit("comb"), user_package), func_n2(comb));
reg_fun(intern(lit("rcomb"), user_package), func_n2(rcomb));