diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-06-26 13:03:40 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2024-06-26 13:27:41 -0400 |
commit | c5e5ad3f42b16da324cf4cba0ecca2a449f560f0 (patch) | |
tree | 977fb33ec4e2bb5d04c7739c5e53fb25793489bf /src/template.c | |
parent | ebd9d7cc8cb921f1e51187fe5cf7e781edf6f1b2 (diff) | |
download | stasis-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.c | 11 |
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++; } |