summaryrefslogtreecommitdiff
path: root/libguile/eval.h
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/eval.h')
-rw-r--r--libguile/eval.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/libguile/eval.h b/libguile/eval.h
new file mode 100644
index 000000000..b25e76f94
--- /dev/null
+++ b/libguile/eval.h
@@ -0,0 +1,92 @@
+#ifndef SCM_EVAL_H
+#define SCM_EVAL_H
+
+/* Copyright 1995-1996,1998-2004,2008-2012,2018
+ Free Software Foundation, Inc.
+
+ This file is part of Guile.
+
+ Guile is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Guile is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Guile. If not, see
+ <https://www.gnu.org/licenses/>. */
+
+
+
+#include "libguile/struct.h"
+#include "libguile/memoize.h"
+
+
+
+/* {Options}
+ */
+
+
+
+
+/* {Ilocs}
+ *
+ * Ilocs are relative pointers into local environment structures.
+ *
+ */
+#define SCM_ILOCP(n) (SCM_ITAG8(n)==scm_tc8_iloc)
+
+
+
+/* {Evaluator}
+ */
+
+typedef SCM (*scm_t_trampoline_0) (SCM proc);
+typedef SCM (*scm_t_trampoline_1) (SCM proc, SCM arg1);
+typedef SCM (*scm_t_trampoline_2) (SCM proc, SCM arg1, SCM arg2);
+
+
+
+#define SCM_EXTEND_ENV scm_acons
+
+
+
+SCM_API SCM scm_call_0 (SCM proc);
+SCM_API SCM scm_call_1 (SCM proc, SCM arg1);
+SCM_API SCM scm_call_2 (SCM proc, SCM arg1, SCM arg2);
+SCM_API SCM scm_call_3 (SCM proc, SCM arg1, SCM arg2, SCM arg3);
+SCM_API SCM scm_call_4 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4);
+SCM_API SCM scm_call_5 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4,
+ SCM arg5);
+SCM_API SCM scm_call_6 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4,
+ SCM arg5, SCM arg6);
+SCM_API SCM scm_call_7 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4,
+ SCM arg5, SCM arg6, SCM arg7);
+SCM_API SCM scm_call_8 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4,
+ SCM arg5, SCM arg6, SCM arg7, SCM arg8);
+SCM_API SCM scm_call_9 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4,
+ SCM arg5, SCM arg6, SCM arg7, SCM arg8, SCM arg9);
+SCM_API SCM scm_call_n (SCM proc, SCM *argv, size_t nargs);
+SCM_API SCM scm_call (SCM proc, ...);
+SCM_API SCM scm_apply_0 (SCM proc, SCM args);
+SCM_API SCM scm_apply_1 (SCM proc, SCM arg1, SCM args);
+SCM_API SCM scm_apply_2 (SCM proc, SCM arg1, SCM arg2, SCM args);
+SCM_API SCM scm_apply_3 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM args);
+SCM_API SCM scm_nconc2last (SCM lst);
+SCM_API SCM scm_apply (SCM proc, SCM arg1, SCM args);
+#define scm_dapply(proc,arg1,args) scm_apply (proc, arg1, args)
+SCM_API SCM scm_map (SCM proc, SCM arg1, SCM args);
+SCM_API SCM scm_for_each (SCM proc, SCM arg1, SCM args);
+SCM_API SCM scm_primitive_eval (SCM exp);
+#define scm_primitive_eval_x(exp) scm_primitive_eval (exp)
+SCM_API SCM scm_eval (SCM exp, SCM module);
+#define scm_eval_x(exp, module) scm_eval (exp, module)
+
+SCM_INTERNAL void scm_init_eval (void);
+
+
+#endif /* SCM_EVAL_H */