aboutsummaryrefslogtreecommitdiff
path: root/src/template.c
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2024-06-26 13:03:40 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2024-06-26 13:27:41 -0400
commitc5e5ad3f42b16da324cf4cba0ecca2a449f560f0 (patch)
tree977fb33ec4e2bb5d04c7739c5e53fb25793489bf /src/template.c
parentebd9d7cc8cb921f1e51187fe5cf7e781edf6f1b2 (diff)
downloadstasis-c5e5ad3f42b16da324cf4cba0ecca2a449f560f0.tar.gz
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
Diffstat (limited to 'src/template.c')
-rw-r--r--src/template.c11
1 files changed, 7 insertions, 4 deletions
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++;
}