Mercurial > paster
annotate extern/libmustach/mustach.h @ 75:b12491ceabfd
pasterd: begin of custom theme
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 15 Mar 2023 20:15:00 +0100 |
parents | 67b3d13a5035 |
children |
rev | line source |
---|---|
74
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 Author: José Bollo <jobol@nonadev.net> |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 https://gitlab.com/jobol/mustach |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 SPDX-License-Identifier: ISC |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 #ifndef _mustach_h_included_ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 #define _mustach_h_included_ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 struct mustach_sbuf; /* see below */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * Current version of mustach and its derivates |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 #define MUSTACH_VERSION 102 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 #define MUSTACH_VERSION_MAJOR (MUSTACH_VERSION / 100) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #define MUSTACH_VERSION_MINOR (MUSTACH_VERSION % 100) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 * Maximum nested imbrications supported |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #define MUSTACH_MAX_DEPTH 256 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 * Maximum length of tags in mustaches {{...}} |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 #define MUSTACH_MAX_LENGTH 4096 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 * Maximum length of delimitors (2 normally but extended here) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 #define MUSTACH_MAX_DELIM_LENGTH 8 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 * Flags specific to mustach core |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 #define Mustach_With_NoExtensions 0 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 #define Mustach_With_Colon 1 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 #define Mustach_With_EmptyTag 2 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 #define Mustach_With_AllExtensions 3 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 /* |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 * Definition of error codes returned by mustach |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 #define MUSTACH_OK 0 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 #define MUSTACH_ERROR_SYSTEM -1 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 #define MUSTACH_ERROR_UNEXPECTED_END -2 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 #define MUSTACH_ERROR_EMPTY_TAG -3 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 #define MUSTACH_ERROR_TAG_TOO_LONG -4 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 #define MUSTACH_ERROR_BAD_SEPARATORS -5 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 #define MUSTACH_ERROR_TOO_DEEP -6 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 #define MUSTACH_ERROR_CLOSING -7 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 #define MUSTACH_ERROR_BAD_UNESCAPE_TAG -8 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 #define MUSTACH_ERROR_INVALID_ITF -9 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 #define MUSTACH_ERROR_ITEM_NOT_FOUND -10 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 #define MUSTACH_ERROR_PARTIAL_NOT_FOUND -11 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 #define MUSTACH_ERROR_UNDEFINED_TAG -12 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 /* |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 * You can use definition below for user specific error |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 * The macro MUSTACH_ERROR_USER is involutive so for any value |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 * value = MUSTACH_ERROR_USER(MUSTACH_ERROR_USER(value)) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 #define MUSTACH_ERROR_USER_BASE -100 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 #define MUSTACH_ERROR_USER(x) (MUSTACH_ERROR_USER_BASE-(x)) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 #define MUSTACH_IS_ERROR_USER(x) (MUSTACH_ERROR_USER(x) >= 0) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 * mustach_itf - pure abstract mustach - interface for callbacks |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 * The functions enter and next should return 0 or 1. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 * All other functions should normally return MUSTACH_OK (zero). |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 * If any function returns a negative value, it means an error that |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 * stop the processing and that is reported to the caller. Mustach |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 * also has its own error codes. Using the macros MUSTACH_ERROR_USER |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 * and MUSTACH_IS_ERROR_USER could help to avoid clashes. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 * @start: If defined (can be NULL), starts the mustach processing |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 * of the closure, called at the very beginning before any |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 * mustach processing occurs. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 * @put: If defined (can be NULL), writes the value of 'name' |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 * to 'file' with 'escape' or not. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 * As an extension (see NO_ALLOW_EMPTY_TAG), the 'name' can be |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 * the empty string. In that later case an implementation can |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 * return MUSTACH_ERROR_EMPTY_TAG to refuse empty names. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 * If NULL and 'get' NULL the error MUSTACH_ERROR_INVALID_ITF |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 * is returned. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 * @enter: Enters the section of 'name' if possible. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 * Musts return 1 if entered or 0 if not entered. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 * When 1 is returned, the function 'leave' will always be called. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 * Conversely 'leave' is never called when enter returns 0 or |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 * a negative value. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 * When 1 is returned, the function must activate the first |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 * item of the section. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 * @next: Activates the next item of the section if it exists. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 * Musts return 1 when the next item is activated. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 * Musts return 0 when there is no item to activate. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 * @leave: Leaves the last entered section |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 * @partial: If defined (can be NULL), returns in 'sbuf' the content of the |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 * partial of 'name'. @see mustach_sbuf |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 * If NULL but 'get' not NULL, 'get' is used instead of partial. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 * If NULL and 'get' NULL and 'put' not NULL, 'put' is called with |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 * a true FILE. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 * @emit: If defined (can be NULL), writes the 'buffer' of 'size' with 'escape'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 * If NULL the standard function 'fwrite' is used with a true FILE. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 * If not NULL that function is called instead of 'fwrite' to output |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 * text. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 * It implies that if you define either 'partial' or 'get' callback, |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 * the meaning of 'FILE *file' is abstract for mustach's process and |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 * then you can use 'FILE*file' pass any kind of pointer (including NULL) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 * to the function 'fmustach'. An example of a such behaviour is given by |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 * the implementation of 'mustach_json_c_write'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 * @get: If defined (can be NULL), returns in 'sbuf' the value of 'name'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 * As an extension (see NO_ALLOW_EMPTY_TAG), the 'name' can be |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 * the empty string. In that later case an implementation can |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 * return MUSTACH_ERROR_EMPTY_TAG to refuse empty names. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 * If 'get' is NULL and 'put' NULL the error MUSTACH_ERROR_INVALID_ITF |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 * is returned. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 * @stop: If defined (can be NULL), stops the mustach processing |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 * of the closure, called at the very end after all mustach |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 * processing occurered. The status returned by the processing |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 * is passed to the stop. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 * The array below summarize status of callbacks: |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 * FULLY OPTIONAL: start partial |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 * MANDATORY: enter next leave |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 * COMBINATORIAL: put emit get |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 * Not definig a MANDATORY callback returns error MUSTACH_ERROR_INVALID_ITF. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
145 * For COMBINATORIAL callbacks the array below summarize possible combinations: |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 * combination : put : emit : get : abstract FILE |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 * -------------+---------+---------+---------+----------------------- |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 * HISTORIC : defined : NULL : NULL : NO: standard FILE |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 * MINIMAL : NULL : NULL : defined : NO: standard FILE |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 * CUSTOM : NULL : defined : defined : YES: abstract FILE |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 * DUCK : defined : NULL : defined : NO: standard FILE |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 * DANGEROUS : defined : defined : any : YES or NO, depends on 'partial' |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 * INVALID : NULL : any : NULL : - |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 * The DUCK case runs on one leg. 'get' is not used if 'partial' is defined |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 * but is used for 'partial' if 'partial' is NULL. Thus for clarity, do not use |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 * it that way but define 'partial' and let 'get' be NULL. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 * The DANGEROUS case is special: it allows abstract FILE if 'partial' is defined |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
161 * but forbids abstract FILE when 'partial' is NULL. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 * The INVALID case returns error MUSTACH_ERROR_INVALID_ITF. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 struct mustach_itf { |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
166 int (*start)(void *closure); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 int (*put)(void *closure, const char *name, int escape, FILE *file); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
168 int (*enter)(void *closure, const char *name); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 int (*next)(void *closure); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 int (*leave)(void *closure); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
171 int (*partial)(void *closure, const char *name, struct mustach_sbuf *sbuf); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
172 int (*emit)(void *closure, const char *buffer, size_t size, int escape, FILE *file); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
173 int (*get)(void *closure, const char *name, struct mustach_sbuf *sbuf); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
174 void (*stop)(void *closure, int status); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
175 }; |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
176 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
177 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
178 * mustach_sbuf - Interface for handling zero terminated strings |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
179 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
180 * That structure is used for returning zero terminated strings -in 'value'- |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
181 * to mustach. The callee can provide a function for releasing the returned |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
182 * 'value'. Three methods for releasing the string are possible. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
183 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
184 * 1. no release: set either 'freecb' or 'releasecb' with NULL (done by default) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
185 * 2. release without closure: set 'freecb' to its expected value |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
186 * 3. release with closure: set 'releasecb' and 'closure' to their expected values |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
187 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
188 * @value: The value of the string. That value is not changed by mustach -const-. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
189 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
190 * @freecb: The function to call for freeing the value without closure. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
191 * For convenience, signature of that callback is compatible with 'free'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
192 * Can be NULL. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
193 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
194 * @releasecb: The function to release with closure. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
195 * Can be NULL. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
196 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
197 * @closure: The closure to use for 'releasecb'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
198 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
199 * @length: Length of the value or zero if unknown and value null terminated. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
200 * To return the empty string, let it to zero and let value to NULL. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
201 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
202 struct mustach_sbuf { |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
203 const char *value; |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
204 union { |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
205 void (*freecb)(void*); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
206 void (*releasecb)(const char *value, void *closure); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
207 }; |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
208 void *closure; |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
209 size_t length; |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
210 }; |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
211 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
212 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
213 * mustach_file - Renders the mustache 'template' in 'file' for 'itf' and 'closure'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
214 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
215 * @template: the template string to instantiate |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
216 * @length: length of the template or zero if unknown and template null terminated |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
217 * @itf: the interface to the functions that mustach calls |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
218 * @closure: the closure to pass to functions called |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
219 * @file: the file where to write the result |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
220 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
221 * Returns 0 in case of success, -1 with errno set in case of system error |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
222 * a other negative value in case of error. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
223 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
224 extern int mustach_file(const char *template, size_t length, const struct mustach_itf *itf, void *closure, int flags, FILE *file); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
225 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
226 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
227 * mustach_fd - Renders the mustache 'template' in 'fd' for 'itf' and 'closure'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
228 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
229 * @template: the template string to instantiate |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
230 * @length: length of the template or zero if unknown and template null terminated |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
231 * @itf: the interface to the functions that mustach calls |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
232 * @closure: the closure to pass to functions called |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
233 * @fd: the file descriptor number where to write the result |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
234 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
235 * Returns 0 in case of success, -1 with errno set in case of system error |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
236 * a other negative value in case of error. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
237 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
238 extern int mustach_fd(const char *template, size_t length, const struct mustach_itf *itf, void *closure, int flags, int fd); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
239 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
240 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
241 * mustach_mem - Renders the mustache 'template' in 'result' for 'itf' and 'closure'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
242 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
243 * @template: the template string to instantiate |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
244 * @length: length of the template or zero if unknown and template null terminated |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
245 * @itf: the interface to the functions that mustach calls |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
246 * @closure: the closure to pass to functions called |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
247 * @result: the pointer receiving the result when 0 is returned |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
248 * @size: the size of the returned result |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
249 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
250 * Returns 0 in case of success, -1 with errno set in case of system error |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
251 * a other negative value in case of error. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
252 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
253 extern int mustach_mem(const char *template, size_t length, const struct mustach_itf *itf, void *closure, int flags, char **result, size_t *size); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
254 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
255 /*************************************************************************** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
256 * compatibility with version before 1.0 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
257 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
258 #ifdef __GNUC__ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
259 #define DEPRECATED_MUSTACH(func) func __attribute__ ((deprecated)) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
260 #elif defined(_MSC_VER) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
261 #define DEPRECATED_MUSTACH(func) __declspec(deprecated) func |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
262 #elif !defined(DEPRECATED_MUSTACH) |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
263 #pragma message("WARNING: You need to implement DEPRECATED_MUSTACH for this compiler") |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
264 #define DEPRECATED_MUSTACH(func) func |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
265 #endif |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
266 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
267 * OBSOLETE use mustach_file |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
268 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
269 * fmustach - Renders the mustache 'template' in 'file' for 'itf' and 'closure'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
270 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
271 * @template: the template string to instantiate, null terminated |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
272 * @itf: the interface to the functions that mustach calls |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
273 * @closure: the closure to pass to functions called |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
274 * @file: the file where to write the result |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
275 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
276 * Returns 0 in case of success, -1 with errno set in case of system error |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
277 * a other negative value in case of error. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
278 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
279 DEPRECATED_MUSTACH(extern int fmustach(const char *template, const struct mustach_itf *itf, void *closure, FILE *file)); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
280 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
281 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
282 * OBSOLETE use mustach_fd |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
283 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
284 * fdmustach - Renders the mustache 'template' in 'fd' for 'itf' and 'closure'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
285 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
286 * @template: the template string to instantiate, null terminated |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
287 * @itf: the interface to the functions that mustach calls |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
288 * @closure: the closure to pass to functions called |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
289 * @fd: the file descriptor number where to write the result |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
290 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
291 * Returns 0 in case of success, -1 with errno set in case of system error |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
292 * a other negative value in case of error. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
293 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
294 DEPRECATED_MUSTACH(extern int fdmustach(const char *template, const struct mustach_itf *itf, void *closure, int fd)); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
295 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
296 /** |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
297 * OBSOLETE use mustach_mem |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
298 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
299 * mustach - Renders the mustache 'template' in 'result' for 'itf' and 'closure'. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
300 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
301 * @template: the template string to instantiate, null terminated |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
302 * @itf: the interface to the functions that mustach calls |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
303 * @closure: the closure to pass to functions called |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
304 * @result: the pointer receiving the result when 0 is returned |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
305 * @size: the size of the returned result |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
306 * |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
307 * Returns 0 in case of success, -1 with errno set in case of system error |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
308 * a other negative value in case of error. |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
309 */ |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
310 DEPRECATED_MUSTACH(extern int mustach(const char *template, const struct mustach_itf *itf, void *closure, char **result, size_t *size)); |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
311 |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
312 #endif |
67b3d13a5035
pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
313 |