summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2013-11-28 08:53:32 -0800
committerKaz Kylheku <kaz@kylheku.com>2013-11-28 08:53:32 -0800
commit5690908deca7a4a803381ed7629da1f5ef057375 (patch)
tree01851ce84c3105952a3cc59bec4ef6789a30233e /lib.h
parent2cca0f202343044e81785c7612da105f528217fd (diff)
downloadtxr-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 'lib.h')
-rw-r--r--lib.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/lib.h b/lib.h
index 231d830b..ac791ae9 100644
--- a/lib.h
+++ b/lib.h
@@ -52,7 +52,7 @@ typedef enum functype
{
FINTERP, /* Interpreted function. */
F0, F1, F2, F3, F4, /* Intrinsic functions with env. */
- N0, N1, N2, N3, N4 /* No-env intrinsics. */
+ N0, N1, N2, N3, N4, N5, N6, N7 /* No-env intrinsics. */
} functype_t;
typedef union obj obj_t;
@@ -121,6 +121,9 @@ struct func {
val (*n2)(val, val);
val (*n3)(val, val, val);
val (*n4)(val, val, val, val);
+ val (*n5)(val, val, val, val, val);
+ val (*n6)(val, val, val, val, val, val);
+ val (*n7)(val, val, val, val, val, val, val);
val (*f0v)(val, val);
val (*f1v)(val, val, val);
val (*f2v)(val, val, val, val);
@@ -131,6 +134,9 @@ struct func {
val (*n2v)(val, val, val);
val (*n3v)(val, val, val, val);
val (*n4v)(val, val, val, val, val);
+ val (*n5v)(val, val, val, val, val, val);
+ val (*n6v)(val, val, val, val, val, val, val);
+ val (*n7v)(val, val, val, val, val, val, val, val);
} f;
};
@@ -327,7 +333,7 @@ extern val error_s, type_error_s, internal_error_s;
extern val numeric_error_s, range_error_s;
extern val query_error_s, file_error_s, process_error_s;
-extern val nothrow_k, args_k, colon_k;
+extern val nothrow_k, args_k, colon_k, auto_k;
extern val null_string;
extern val null_list; /* (nil) */
@@ -557,6 +563,9 @@ val func_n1(val (*fun)(val));
val func_n2(val (*fun)(val, val));
val func_n3(val (*fun)(val, val, val));
val func_n4(val (*fun)(val, val, val, val));
+val func_n5(val (*fun)(val, val, val, val, val));
+val func_n6(val (*fun)(val, val, val, val, val, val));
+val func_n7(val (*fun)(val, val, val, val, val, val, val));
val func_f0v(val, val (*fun)(val env, val rest));
val func_f1v(val, val (*fun)(val env, val, val rest));
val func_f2v(val, val (*fun)(val env, val, val, val rest));
@@ -567,6 +576,9 @@ val func_n1v(val (*fun)(val, val rest));
val func_n2v(val (*fun)(val, val, val rest));
val func_n3v(val (*fun)(val, val, val, val rest));
val func_n4v(val (*fun)(val, val, val, val, val rest));
+val func_n5v(val (*fun)(val, val, val, val, val, val rest));
+val func_n6v(val (*fun)(val, val, val, val, val, val, val rest));
+val func_n7v(val (*fun)(val, val, val, val, val, val, val, val rest));
val func_n0o(val (*fun)(void), int reqargs);
val func_n1o(val (*fun)(val), int reqargs);
val func_n2o(val (*fun)(val, val), int reqargs);
@@ -667,6 +679,9 @@ val time_sec(void);
val time_sec_usec(void);
val time_string_local(val time, val format);
val time_string_utc(val time, val format);
+val make_time(val year, val month, val day,
+ val hour, val minute, val second,
+ val isdst);
void init(const wchar_t *progname, mem_t *(*oom_realloc)(mem_t *, size_t),
val *stack_bottom);