summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib.h')
-rw-r--r--lib.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib.h b/lib.h
index 03a67406..1fc95a00 100644
--- a/lib.h
+++ b/lib.h
@@ -106,7 +106,7 @@ struct func {
unsigned fixparam : 7; /* total non-variadic parameters */
unsigned optargs : 7; /* fixparam - optargs = required args */
unsigned variadic : 1;
- unsigned mark_missing_args: 1; /* missing opt. args given as special value */
+ unsigned : 1;
unsigned functype : 16;
val env;
union {
@@ -601,7 +601,6 @@ val func_interp(val env, val form);
val func_get_form(val fun);
val func_get_env(val fun);
val func_set_env(val fun, val env);
-val func_set_mark_missing(val fun);
val functionp(val);
val interp_fun_p(val);
val funcall(val fun);
@@ -740,6 +739,16 @@ INLINE val null_or_missing_p(val v) { return (!v || v == colon_k) ? t : nil; }
#define c_true(c_cond) ((c_cond) ? t : nil)
+INLINE val default_arg(val arg, val dfl)
+{
+ return if3(null_or_missing_p(arg), dfl, arg);
+}
+
+INLINE val default_bool_arg(val arg)
+{
+ return if3(missingp(arg), nil, arg);
+}
+
#define list_collect_decl(OUT, PTAIL) \
val OUT = nil, *PTAIL = &OUT