Fix load errors related to the new ari_model_validators.
[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 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 ari_validate_void(struct ast_json *json);
54
55 /*!
56  * \brief Validator for native Swagger byte.
57  *
58  * \param json JSON object to validate.
59  * \returns True (non-zero) if valid.
60  * \returns False (zero) if invalid.
61  */
62 int ari_validate_byte(struct ast_json *json);
63
64 /*!
65  * \brief Validator for native Swagger boolean.
66  *
67  * \param json JSON object to validate.
68  * \returns True (non-zero) if valid.
69  * \returns False (zero) if invalid.
70  */
71 int ari_validate_boolean(struct ast_json *json);
72
73 /*!
74  * \brief Validator for native Swagger int.
75  *
76  * \param json JSON object to validate.
77  * \returns True (non-zero) if valid.
78  * \returns False (zero) if invalid.
79  */
80 int ari_validate_int(struct ast_json *json);
81
82 /*!
83  * \brief Validator for native Swagger long.
84  *
85  * \param json JSON object to validate.
86  * \returns True (non-zero) if valid.
87  * \returns False (zero) if invalid.
88  */
89 int ari_validate_long(struct ast_json *json);
90
91 /*!
92  * \brief Validator for native Swagger float.
93  *
94  * \param json JSON object to validate.
95  * \returns True (non-zero) if valid.
96  * \returns False (zero) if invalid.
97  */
98 int ari_validate_float(struct ast_json *json);
99
100 /*!
101  * \brief Validator for native Swagger double.
102  *
103  * \param json JSON object to validate.
104  * \returns True (non-zero) if valid.
105  * \returns False (zero) if invalid.
106  */
107 int ari_validate_double(struct ast_json *json);
108
109 /*!
110  * \brief Validator for native Swagger string.
111  *
112  * \param json JSON object to validate.
113  * \returns True (non-zero) if valid.
114  * \returns False (zero) if invalid.
115  */
116 int ari_validate_string(struct ast_json *json);
117
118 /*!
119  * \brief Validator for native Swagger date.
120  *
121  * \param json JSON object to validate.
122  * \returns True (non-zero) if valid.
123  * \returns False (zero) if invalid.
124  */
125 int ari_validate_date(struct ast_json *json);
126
127 /*!
128  * \brief Validator for a Swagger List[]/JSON array.
129  *
130  * \param json JSON object to validate.
131  * \param fn Validator to call on every element in the array.
132  * \returns True (non-zero) if valid.
133  * \returns False (zero) if invalid.
134  */
135 int ari_validate_list(struct ast_json *json, int (*fn)(struct ast_json *));
136
137 /*! @} */
138
139 /*!
140  * \brief Function type for validator functions. Allows for 
141  */
142 typedef int (*ari_validator)(struct ast_json *json);
143 {{#apis}}
144 {{#api_declaration}}
145 {{#models}}
146
147 /*!
148  * \brief Validator for {{id}}.
149  *
150  * {{{description_dox}}}
151  *
152  * \param json JSON object to validate.
153  * \returns True (non-zero) if valid.
154  * \returns False (zero) if invalid.
155  */
156 int ari_validate_{{c_id}}(struct ast_json *json);
157
158 /*!
159  * \brief Function pointer to ari_validate_{{c_id}}().
160  *
161  * See \ref ari_model_validators.h for more details.
162  */
163 ari_validator ari_validate_{{c_id}}_fn(void);
164 {{/models}}
165 {{/api_declaration}}
166 {{/apis}}
167
168 /*
169  * JSON models
170  *
171 {{#apis}}
172 {{#api_declaration}}
173 {{#models}}
174  * {{id}}
175 {{#properties}}
176  * - {{name}}: {{type.name}}{{#required}} (required){{/required}}
177 {{/properties}}
178 {{/models}}
179 {{/api_declaration}}
180 {{/apis}} */
181
182 #endif /* _ASTERISK_ARI_MODEL_H */