diff options
Diffstat (limited to 'lib.h')
-rw-r--r-- | lib.h | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -106,7 +106,7 @@ struct func { unsigned fixparam : 7; /* total non-variadic parameters */ unsigned optargs : 7; /* fixparam - optargs = required args */ unsigned variadic : 1; - unsigned : 1; + unsigned mark_missing_args: 1; /* missing opt. args given as special value */ unsigned functype : 16; val env; union { @@ -601,6 +601,7 @@ 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); @@ -717,6 +718,10 @@ INLINE val nullp(val v) { return v ? nil : t; } #define nao ((obj_t *) (1 << TAG_SHIFT)) /* "not an object" sentinel value. */ +INLINE val missingp(val v) { return v == colon_k ? t : nil; } + +INLINE val null_or_missing_p(val v) { return (!v || v == colon_k) ? t : nil; } + #define if2(a, b) ((a) ? (b) : nil) #define if3(a, b, c) ((a) ? (b) : (c)) |