diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2013-11-28 08:53:32 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2013-11-28 08:53:32 -0800 |
commit | 5690908deca7a4a803381ed7629da1f5ef057375 (patch) | |
tree | 01851ce84c3105952a3cc59bec4ef6789a30233e /eval.c | |
parent | 2cca0f202343044e81785c7612da105f528217fd (diff) | |
download | txr-5690908deca7a4a803381ed7629da1f5ef057375.tar.gz txr-5690908deca7a4a803381ed7629da1f5ef057375.tar.bz2 txr-5690908deca7a4a803381ed7629da1f5ef057375.zip |
Extending intrinsic functions to go up to 7 arguments.
Adding wrapper for mktime.
* eval.c (apply): Handle function codes N5 through N7.
(eval_init): Register make_time as intrinsic.
* lib.c (auto_k): New keyword symbol variable.
(equal, generic_funcall): Handle N5-N7.
(func_n5, func_n6, func_n7, func_n5v, func_n6v, func_n7v): New
functions.
(obj_init): Initialize auto_k.
(make_time): New function.
* lib.h (functype_t): New enum members: N5, N6, N7.
(struct func): New members: n5, n6, n7, n5v, n6v, n7v.
(auto_k, func_n5, func_n6, func_n7, func_n5v, func_n6v, func_n7v,
make_time): Declared.
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -317,6 +317,12 @@ val apply(val fun, val arglist, val ctx_form) return fun->f.f.n3(arg[0], arg[1], arg[2]); case N4: return fun->f.f.n4(arg[0], arg[1], arg[2], arg[3]); + case N5: + return fun->f.f.n5(arg[0], arg[1], arg[2], arg[3], arg[4]); + case N6: + return fun->f.f.n6(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5]); + case N7: + return fun->f.f.n7(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6]); case FINTERP: internal_error("unsupported function type"); } @@ -356,6 +362,12 @@ val apply(val fun, val arglist, val ctx_form) return fun->f.f.n3v(arg[0], arg[1], arg[2], arglist); case N4: return fun->f.f.n4v(arg[0], arg[1], arg[2], arg[3], arglist); + case N5: + return fun->f.f.n5v(arg[0], arg[1], arg[2], arg[3], arg[4], arglist); + case N6: + return fun->f.f.n6v(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arglist); + case N7: + return fun->f.f.n7v(arg[0], arg[1], arg[2], arg[3], arg[4], arg[5], arg[6], arglist); } } @@ -2518,7 +2530,7 @@ void eval_init(void) reg_fun(intern(lit("time-usec"), user_package), func_n0(time_sec_usec)); reg_fun(intern(lit("time-string-local"), user_package), func_n2(time_string_local)); reg_fun(intern(lit("time-string-utc"), user_package), func_n2(time_string_utc)); - + reg_fun(intern(lit("make-time"), user_package), func_n7(make_time)); reg_fun(intern(lit("source-loc"), user_package), func_n1(source_loc)); reg_fun(intern(lit("source-loc-str"), user_package), func_n1(source_loc_str)); |