diff options
author | Jo-Philipp Wich <jo@mein.io> | 2020-08-24 13:32:37 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2020-08-25 20:38:15 +0200 |
commit | 2b47499474c6efb39b5b0c0fdbf1be27ae72ac84 (patch) | |
tree | 002da1146f119a9b42647a6591925be76eefe0d9 | |
parent | 2d2ab2f4f0c56f613fb093180ed58f990f3c67e0 (diff) |
lib.c: move ut_add_function() to header
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r-- | lib.c | 20 | ||||
-rw-r--r-- | lib.h | 19 |
2 files changed, 20 insertions, 19 deletions
@@ -1599,29 +1599,11 @@ static const struct { const char *name; ut_c_fn *func; } functions[] = { { "printf", ut_printf }, }; -static int -func_to_string(struct json_object *v, struct printbuf *pb, int level, int flags) -{ - return sprintbuf(pb, "%sfunction(...) { [native code] }%s", - level ? "\"" : "", level ? "\"" : ""); -} - -static bool -add_function(struct ut_state *state, struct json_object *scope, const char *name, ut_c_fn *fn) -{ - struct ut_opcode *op = ut_new_op(state, T_CFUNC, - json_object_new_boolean(0), (struct ut_opcode *)fn, (void *)1); - - json_object_set_serializer(op->val, func_to_string, op, NULL); - - return json_object_object_add(scope, name, json_object_get(op->val)); -} - void ut_lib_init(struct ut_state *state, struct json_object *scope) { int i; for (i = 0; i < sizeof(functions) / sizeof(functions[0]); i++) - add_function(state, scope, functions[i].name, functions[i].func); + ut_add_function(state, scope, functions[i].name, functions[i].func); } @@ -18,9 +18,28 @@ #define __LIB_H_ #include "ast.h" +#include "lexer.h" typedef struct json_object *(ut_c_fn)(struct ut_state *, struct ut_opcode *, struct json_object *); +static inline int +ut_c_fn_to_string(struct json_object *v, struct printbuf *pb, int level, int flags) +{ + return sprintbuf(pb, "%sfunction(...) { [native code] }%s", + level ? "\"" : "", level ? "\"" : ""); +} + +static inline bool +ut_add_function(struct ut_state *state, struct json_object *scope, const char *name, ut_c_fn *fn) +{ + struct ut_opcode *op = ut_new_op(state, T_CFUNC, + json_object_new_boolean(0), (struct ut_opcode *)fn, (void *)1); + + json_object_set_serializer(op->val, ut_c_fn_to_string, op, NULL); + + return json_object_object_add(scope, name, json_object_get(op->val)); +} + void ut_lib_init(struct ut_state *state, struct json_object *scope); char *ut_format_error(struct ut_state *state, const char *expr); |