summaryrefslogtreecommitdiffstats
path: root/builtin.c
diff options
context:
space:
mode:
authorStephen Dolan <mu@netsoc.tcd.ie>2013-06-22 23:27:16 +0100
committerStephen Dolan <mu@netsoc.tcd.ie>2013-06-22 23:27:16 +0100
commit1c9e03f8009be4ff6d4e79f5399c476e13caca45 (patch)
tree4140d45fe414f8f3dcb356cbb4e3f8d529118ee7 /builtin.c
parent5d9ec838051c3451a59f9aa70eecde5c238a201c (diff)
parent7af88962eea41fd25b483f1e4ef750bfd8a999e8 (diff)
Merge branch 'header-cleanup' into libjq
Conflicts: Makefile.am
Diffstat (limited to 'builtin.c')
-rw-r--r--builtin.c18
1 files changed, 1 insertions, 17 deletions
diff --git a/builtin.c b/builtin.c
index 3929dafd..826d8c92 100644
--- a/builtin.c
+++ b/builtin.c
@@ -3,27 +3,11 @@
#include "builtin.h"
#include "compile.h"
#include "jq_parser.h"
+#include "bytecode.h"
#include "locfile.h"
#include "jv_unicode.h"
-
-typedef jv (*func_1)(jv);
-typedef jv (*func_2)(jv,jv);
-typedef jv (*func_3)(jv,jv,jv);
-typedef jv (*func_4)(jv,jv,jv,jv);
-typedef jv (*func_5)(jv,jv,jv,jv,jv);
-jv cfunction_invoke(struct cfunction* function, jv input[]) {
- switch (function->nargs) {
- case 1: return ((func_1)function->fptr)(input[0]);
- case 2: return ((func_2)function->fptr)(input[0], input[1]);
- case 3: return ((func_3)function->fptr)(input[0], input[1], input[2]);
- case 4: return ((func_4)function->fptr)(input[0], input[1], input[2], input[3]);
- case 5: return ((func_5)function->fptr)(input[0], input[1], input[2], input[3], input[4]);
- default: return jv_invalid_with_msg(jv_string("Function takes too many arguments"));
- }
-}
-
static jv type_error(jv bad, const char* msg) {
jv err = jv_invalid_with_msg(jv_string_fmt("%s %s",
jv_kind_name(jv_get_kind(bad)),