summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib.c21
-rw-r--r--lib.h3
3 files changed, 30 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 14614715..e2a651c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2014-12-23 Kaz Kylheku <kaz@kylheku.com>
+ * lib.c (func_n1ov, func_n2ov, func_n3ov): New functions.
+
+ * lib.h (func_n1ov, func_n2ov, func_n3ov): Declared.
+
+2014-12-23 Kaz Kylheku <kaz@kylheku.com>
+
* lib.c (func_n0o): Useless, unused function removed.
* lib.h (func_n0o): Declaration removed.
diff --git a/lib.c b/lib.c
index 471d5d17..4261ec08 100644
--- a/lib.c
+++ b/lib.c
@@ -3989,6 +3989,27 @@ val func_n4o(val (*fun)(val, val, val, val), int reqargs)
return obj;
}
+val func_n1ov(val (*fun)(val, val rest), int reqargs)
+{
+ val obj = func_n1v(fun);
+ obj->f.optargs = 1 - reqargs;
+ return obj;
+}
+
+val func_n2ov(val (*fun)(val, val, val rest), int reqargs)
+{
+ val obj = func_n2v(fun);
+ obj->f.optargs = 2 - reqargs;
+ return obj;
+}
+
+val func_n3ov(val (*fun)(val, val, val, val rest), int reqargs)
+{
+ val obj = func_n3v(fun);
+ obj->f.optargs = 3 - reqargs;
+ return obj;
+}
+
val func_interp(val env, val form)
{
val obj = make_obj();
diff --git a/lib.h b/lib.h
index 829be4d4..0d20cd7a 100644
--- a/lib.h
+++ b/lib.h
@@ -714,6 +714,9 @@ val func_n1o(val (*fun)(val), int reqargs);
val func_n2o(val (*fun)(val, val), int reqargs);
val func_n3o(val (*fun)(val, val, val), int reqargs);
val func_n4o(val (*fun)(val, val, val, val), int reqargs);
+val func_n1ov(val (*fun)(val, val rest), int reqargs);
+val func_n2ov(val (*fun)(val, val, val rest), int reqargs);
+val func_n3ov(val (*fun)(val, val, val, val rest), int reqargs);
val func_interp(val env, val form);
val func_get_form(val fun);
val func_get_env(val fun);