Investigate and fix memory leaks in Asterisk
[asterisk/asterisk.git] / rest-api-templates / ari_model_validators.h.mustache
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2013, Digium, Inc.
5  *
6  * See http://www.asterisk.org for more information about
7  * the Asterisk project. Please do not directly contact
8  * any of the maintainers of this project for assistance;
9  * the project provides a web site, mailing lists and IRC
10  * channels for your use.
11  *
12  * This program is free software, distributed under the terms of
13  * the GNU General Public License Version 2. See the LICENSE file
14  * at the top of the source tree.
15  */
16
17 /*! \file
18  *
19  * \brief Generated file - Build validators for ARI model objects.
20  *
21  * In addition to the normal validation functions one would normally expect,
22  * each validator has a ast_ari_validate_{id}_fn() companion function that returns
23  * the validator's function pointer.
24  *
25  * The reason for this seamingly useless indirection is the way function
26  * pointers interfere with module loading. Asterisk attempts to dlopen() each
27  * module using \c RTLD_LAZY in order to read some metadata from the module.
28  * Unfortunately, if you take the address of a function, the function has to be
29  * resolvable at load time, even if \c RTLD_LAZY is specified. By moving the
30  * function-address-taking into this module, we can once again be lazy.
31  */
32
33  /*
34 {{> do-not-edit}}
35  * This file is generated by a mustache template. Please see the original
36  * template in rest-api-templates/ari_model_validators.h.mustache
37  */
38
39 #ifndef _ASTERISK_ARI_MODEL_H
40 #define _ASTERISK_ARI_MODEL_H
41
42 #include "asterisk/json.h"
43
44 /*! @{ */
45
46 /*!
47  * \brief Validator for native Swagger void.
48  *
49  * \param json JSON object to validate.
50  * \returns True (non-zero) if valid.
51  * \returns False (zero) if invalid.
52  */
53 int ast_ari_validate_void(struct ast_json *json);
54
55 /*!
56  * \brief Validator for native Swagger object.
57  *
58  * \param json JSON object to validate.
59  * \returns True (non-zero) if valid.
60  * \returns False (zero) if invalid.
61  */
62 int ast_ari_validate_object(struct ast_json *json);
63
64 /*!
65  * \brief Validator for native Swagger byte.
66  *
67  * \param json JSON object to validate.
68  * \returns True (non-zero) if valid.
69  * \returns False (zero) if invalid.
70  */
71 int ast_ari_validate_byte(struct ast_json *json);
72
73 /*!
74  * \brief Validator for native Swagger boolean.
75  *
76  * \param json JSON object to validate.
77  * \returns True (non-zero) if valid.
78  * \returns False (zero) if invalid.
79  */
80 int ast_ari_validate_boolean(struct ast_json *json);
81
82 /*!
83  * \brief Validator for native Swagger int.
84  *
85  * \param json JSON object to validate.
86  * \returns True (non-zero) if valid.
87  * \returns False (zero) if invalid.
88  */
89 int ast_ari_validate_int(struct ast_json *json);
90
91 /*!
92  * \brief Validator for native Swagger long.
93  *
94  * \param json JSON object to validate.
95  * \returns True (non-zero) if valid.
96  * \returns False (zero) if invalid.
97  */
98 int ast_ari_validate_long(struct ast_json *json);
99
100 /*!
101  * \brief Validator for native Swagger float.
102  *
103  * \param json JSON object to validate.
104  * \returns True (non-zero) if valid.
105  * \returns False (zero) if invalid.
106  */
107 int ast_ari_validate_float(struct ast_json *json);
108
109 /*!
110  * \brief Validator for native Swagger double.
111  *
112  * \param json JSON object to validate.
113  * \returns True (non-zero) if valid.
114  * \returns False (zero) if invalid.
115  */
116 int ast_ari_validate_double(struct ast_json *json);
117
118 /*!
119  * \brief Validator for native Swagger string.
120  *
121  * \param json JSON object to validate.
122  * \returns True (non-zero) if valid.
123  * \returns False (zero) if invalid.
124  */
125 int ast_ari_validate_string(struct ast_json *json);
126
127 /*!
128  * \brief Validator for native Swagger date.
129  *
130  * \param json JSON object to validate.
131  * \returns True (non-zero) if valid.
132  * \returns False (zero) if invalid.
133  */
134 int ast_ari_validate_date(struct ast_json *json);
135
136 /*!
137  * \brief Validator for a Swagger List[]/JSON array.
138  *
139  * \param json JSON object to validate.
140  * \param fn Validator to call on every element in the array.
141  * \returns True (non-zero) if valid.
142  * \returns False (zero) if invalid.
143  */
144 int ast_ari_validate_list(struct ast_json *json, int (*fn)(struct ast_json *));
145
146 /*! @} */
147
148 /*!
149  * \brief Function type for validator functions. Allows for 
150  */
151 typedef int (*ari_validator)(struct ast_json *json);
152 {{#apis}}
153 {{#api_declaration}}
154 {{#models}}
155
156 /*!
157  * \brief Validator for {{id}}.
158  *
159  * {{{description_dox}}}
160  *
161  * \param json JSON object to validate.
162  * \returns True (non-zero) if valid.
163  * \returns False (zero) if invalid.
164  */
165 int ast_ari_validate_{{c_id}}(struct ast_json *json);
166
167 /*!
168  * \brief Function pointer to ast_ari_validate_{{c_id}}().
169  *
170  * See \ref ast_ari_model_validators.h for more details.
171  */
172 ari_validator ast_ari_validate_{{c_id}}_fn(void);
173 {{/models}}
174 {{/api_declaration}}
175 {{/apis}}
176
177 /*
178  * JSON models
179  *
180 {{#apis}}
181 {{#api_declaration}}
182 {{#models}}
183  * {{id}}
184 {{#properties}}
185  * - {{name}}: {{type.name}}{{#required}} (required){{/required}}
186 {{/properties}}
187 {{/models}}
188 {{/api_declaration}}
189 {{/apis}} */
190
191 #endif /* _ASTERISK_ARI_MODEL_H */