From c5e5ad3f42b16da324cf4cba0ecca2a449f560f0 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Wed, 26 Jun 2024 13:03:40 -0400 Subject: Fix circular dependency on tplfunc_frame * Remove predeclaration of tplfunc_frame * tpl_register_func accepts pointer to void instead * tpl_register_func sets maximum number of arguments * Frame is generated within tpl_register_func --- src/template.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/template.c b/src/template.c index 819fe92..c30d6ae 100644 --- a/src/template.c +++ b/src/template.c @@ -25,10 +25,13 @@ extern void tpl_reset() { tpl_pool_func_used = 0; } -void tpl_register_func(char *key, struct tplfunc_frame *frame) { - (void) key; // TODO: placeholder - tpl_pool_func[tpl_pool_func_used] = calloc(1, sizeof(*tpl_pool_func[tpl_pool_func_used])); - memcpy(tpl_pool_func[tpl_pool_func_used], frame, sizeof(*frame)); +void tpl_register_func(char *key, void *tplfunc_ptr, int argc) { + struct tplfunc_frame *frame = calloc(1, sizeof(*frame)); + frame->key = strdup(key); + frame->argc = argc; + frame->func = tplfunc_ptr; + + tpl_pool_func[tpl_pool_func_used] = frame; tpl_pool_func_used++; } -- cgit