summaryrefslogtreecommitdiffstats
path: root/args.c
diff options
context:
space:
mode:
Diffstat (limited to 'args.c')
-rw-r--r--args.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/args.c b/args.c
index 3a1319f3..22c9fadd 100644
--- a/args.c
+++ b/args.c
@@ -198,3 +198,18 @@ void args_keys_extract(struct args *args, struct args_bool_key *akv, int n)
args_for_each(args, args_key_check_store, coerce(mem_t *, &acx));
}
}
+
+val dyn_args(struct args *args, val car, val cdr)
+{
+ size_t size = offsetof(struct args, arg) + sizeof (val) * args->argc;
+ struct args *copy = coerce(struct args *, chk_copy_obj(coerce(mem_t *, args),
+ size));
+ val obj = make_obj();
+
+ obj->a.type = DARG;
+ obj->a.car = car;
+ obj->a.cdr = cdr;
+ obj->a.args = copy;
+
+ return obj;
+}