From a65f394284685aa9bd73ad146c582c848b3dcde0 Mon Sep 17 00:00:00 2001 From: overflowerror Date: Sun, 23 May 2021 16:41:03 +0200 Subject: [PATCH] added hidden functions for direct use of va_lists --- src/templates.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/templates.c b/src/templates.c index cf8d32e..b54aa95 100644 --- a/src/templates.c +++ b/src/templates.c @@ -57,7 +57,7 @@ void _registerTemplate(const char* name, template_t f, template_length_t s) { static size_t emptyTemplateSize(va_list _) { return 0; } static void emptyTemplate(FILE* out, va_list _) { } -void renderTemplate(const char* name, FILE* out, ...) { +void _renderTemplate(const char* name, FILE* out, va_list argptr) { template_t t = _findTemplate(name); if (t == NULL) { @@ -65,15 +65,19 @@ void renderTemplate(const char* name, FILE* out, ...) { t = &emptyTemplate; } + t(out, argptr); +} + +void renderTemplate(const char* name, FILE* out, ...) { va_list argptr; va_start(argptr, out); - t(out, argptr); + _renderTemplate(name, out, argptr); va_end(argptr); } -size_t sizeTemplate(const char* name, ...) { +size_t _sizeTemplate(const char* name, va_list argptr) { template_length_t s = _findTemplateSize(name); if (s == NULL) { @@ -81,12 +85,16 @@ size_t sizeTemplate(const char* name, ...) { s = &emptyTemplateSize; } + return s(argptr); +} + +size_t sizeTemplate(const char* name, ...) { size_t result; - + va_list argptr; va_start(argptr, name); - result = s(argptr); + result = _sizeTemplate(name, argptr); va_end(argptr);