summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2020-08-24 13:32:37 +0200
committerJo-Philipp Wich <jo@mein.io>2020-08-25 20:38:15 +0200
commit2b47499474c6efb39b5b0c0fdbf1be27ae72ac84 (patch)
tree002da1146f119a9b42647a6591925be76eefe0d9
parent2d2ab2f4f0c56f613fb093180ed58f990f3c67e0 (diff)
lib.c: move ut_add_function() to header
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r--lib.c20
-rw-r--r--lib.h19
2 files changed, 20 insertions, 19 deletions
diff --git a/lib.c b/lib.c
index fdda6a0..96e5e87 100644
--- a/lib.c
+++ b/lib.c
@@ -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);
}
diff --git a/lib.h b/lib.h
index 9a23d56..b6d693a 100644
--- a/lib.h
+++ b/lib.h
@@ -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);