summaryrefslogtreecommitdiff
path: root/src/templating/mustach-jansson.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/templating/mustach-jansson.h')
-rw-r--r--src/templating/mustach-jansson.h72
1 files changed, 42 insertions, 30 deletions
diff --git a/src/templating/mustach-jansson.h b/src/templating/mustach-jansson.h
index 8fe989fa5..8def948e0 100644
--- a/src/templating/mustach-jansson.h
+++ b/src/templating/mustach-jansson.h
@@ -1,60 +1,60 @@
/*
- Copyright (C) 2020 Taler Systems SA
-
- Original license:
- Author: José Bollo <jose.bollo@iot.bzh>
Author: José Bollo <jobol@nonadev.net>
https://gitlab.com/jobol/mustach
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+ SPDX-License-Identifier: ISC
*/
#ifndef _mustach_jansson_h_included_
#define _mustach_jansson_h_included_
-#include "taler_json_lib.h"
-#include "mustach.h"
+/*
+ * mustach-jansson is intended to make integration of jansson
+ * library by providing integrated functions.
+ */
+
+#include <jansson.h>
+#include "mustach-wrap.h"
/**
- * fmustach_jansson - Renders the mustache 'template' in 'file' for 'root'.
+ * Wrap interface used internally by mustach jansson functions.
+ * Can be used for overriding behaviour.
+ */
+extern const struct mustach_wrap_itf mustach_jansson_wrap_itf;
+
+/**
+ * mustach_jansson_file - Renders the mustache 'template' in 'file' for 'root'.
*
* @template: the template string to instantiate
+ * @length: length of the template or zero if unknown and template null terminated
* @root: the root json object to render
- * \@file: the file where to write the result
+ * @file: the file where to write the result
*
* Returns 0 in case of success, -1 with errno set in case of system error
* a other negative value in case of error.
*/
-extern int fmustach_jansson (const char *template, json_t *root, FILE *file);
+extern int mustach_jansson_file(const char *template, size_t length, json_t *root, int flags, FILE *file);
/**
- * fmustach_jansson - Renders the mustache 'template' in 'fd' for 'root'.
+ * mustach_jansson_fd - Renders the mustache 'template' in 'fd' for 'root'.
*
* @template: the template string to instantiate
+ * @length: length of the template or zero if unknown and template null terminated
* @root: the root json object to render
* @fd: the file descriptor number where to write the result
*
* Returns 0 in case of success, -1 with errno set in case of system error
* a other negative value in case of error.
*/
-extern int fdmustach_jansson (const char *template, json_t *root, int fd);
+extern int mustach_jansson_fd(const char *template, size_t length, json_t *root, int flags, int fd);
/**
- * fmustach_jansson - Renders the mustache 'template' in 'result' for 'root'.
+ * mustach_jansson_mem - Renders the mustache 'template' in 'result' for 'root'.
*
* @template: the template string to instantiate
+ * @length: length of the template or zero if unknown and template null terminated
* @root: the root json object to render
* @result: the pointer receiving the result when 0 is returned
* @size: the size of the returned result
@@ -62,13 +62,13 @@ extern int fdmustach_jansson (const char *template, json_t *root, int fd);
* Returns 0 in case of success, -1 with errno set in case of system error
* a other negative value in case of error.
*/
-extern int mustach_jansson (const char *template, json_t *root, char **result,
- size_t *size);
+extern int mustach_jansson_mem(const char *template, size_t length, json_t *root, int flags, char **result, size_t *size);
/**
- * umustach_jansson - Renders the mustache 'template' for 'root' to custom writer 'writecb' with 'closure'.
+ * mustach_jansson_write - Renders the mustache 'template' for 'root' to custom writer 'writecb' with 'closure'.
*
* @template: the template string to instantiate
+ * @length: length of the template or zero if unknown and template null terminated
* @root: the root json object to render
* @writecb: the function that write values
* @closure: the closure for the write function
@@ -76,9 +76,21 @@ extern int mustach_jansson (const char *template, json_t *root, char **result,
* Returns 0 in case of success, -1 with errno set in case of system error
* a other negative value in case of error.
*/
-typedef int (*mustach_jansson_write_cb)(void *closure, const char *buffer,
- size_t size);
-extern int umustach_jansson (const char *template, json_t *root,
- mustach_jansson_write_cb writecb, void *closure);
+extern int mustach_jansson_write(const char *template, size_t length, json_t *root, int flags, mustach_write_cb_t *writecb, void *closure);
+
+/**
+ * mustach_jansson_emit - Renders the mustache 'template' for 'root' to custom emiter 'emitcb' with 'closure'.
+ *
+ * @template: the template string to instantiate
+ * @length: length of the template or zero if unknown and template null terminated
+ * @root: the root json object to render
+ * @emitcb: the function that emit values
+ * @closure: the closure for the write function
+ *
+ * Returns 0 in case of success, -1 with errno set in case of system error
+ * a other negative value in case of error.
+ */
+extern int mustach_jansson_emit(const char *template, size_t length, json_t *root, int flags, mustach_emit_cb_t *emitcb, void *closure);
#endif
+