app_chanspy: reduce audio loss on the spying channel.
[asterisk/asterisk.git] / rest-api-templates / ari_model_validators.h.mustache
index 65efbbd..5a1be4b 100644 (file)
 /*! \file
  *
  * \brief Generated file - Build validators for ARI model objects.
+ *
+ * In addition to the normal validation functions one would normally expect,
+ * each validator has a ast_ari_validate_{id}_fn() companion function that returns
+ * the validator's function pointer.
+ *
+ * The reason for this seamingly useless indirection is the way function
+ * pointers interfere with module loading. Asterisk attempts to dlopen() each
+ * module using \c RTLD_LAZY in order to read some metadata from the module.
+ * Unfortunately, if you take the address of a function, the function has to be
+ * resolvable at load time, even if \c RTLD_LAZY is specified. By moving the
+ * function-address-taking into this module, we can once again be lazy.
  */
 
  /*
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_void(struct ast_json *json);
+int ast_ari_validate_void(struct ast_json *json);
+
+/*!
+ * \brief Validator for native Swagger object.
+ *
+ * \param json JSON object to validate.
+ * \returns True (non-zero) if valid.
+ * \returns False (zero) if invalid.
+ */
+int ast_ari_validate_object(struct ast_json *json);
 
 /*!
  * \brief Validator for native Swagger byte.
@@ -48,7 +68,7 @@ int ari_validate_void(struct ast_json *json);
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_byte(struct ast_json *json);
+int ast_ari_validate_byte(struct ast_json *json);
 
 /*!
  * \brief Validator for native Swagger boolean.
@@ -57,7 +77,7 @@ int ari_validate_byte(struct ast_json *json);
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_boolean(struct ast_json *json);
+int ast_ari_validate_boolean(struct ast_json *json);
 
 /*!
  * \brief Validator for native Swagger int.
@@ -66,7 +86,7 @@ int ari_validate_boolean(struct ast_json *json);
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_int(struct ast_json *json);
+int ast_ari_validate_int(struct ast_json *json);
 
 /*!
  * \brief Validator for native Swagger long.
@@ -75,7 +95,7 @@ int ari_validate_int(struct ast_json *json);
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_long(struct ast_json *json);
+int ast_ari_validate_long(struct ast_json *json);
 
 /*!
  * \brief Validator for native Swagger float.
@@ -84,7 +104,7 @@ int ari_validate_long(struct ast_json *json);
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_float(struct ast_json *json);
+int ast_ari_validate_float(struct ast_json *json);
 
 /*!
  * \brief Validator for native Swagger double.
@@ -93,7 +113,7 @@ int ari_validate_float(struct ast_json *json);
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_double(struct ast_json *json);
+int ast_ari_validate_double(struct ast_json *json);
 
 /*!
  * \brief Validator for native Swagger string.
@@ -102,7 +122,7 @@ int ari_validate_double(struct ast_json *json);
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_string(struct ast_json *json);
+int ast_ari_validate_string(struct ast_json *json);
 
 /*!
  * \brief Validator for native Swagger date.
@@ -111,7 +131,7 @@ int ari_validate_string(struct ast_json *json);
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_date(struct ast_json *json);
+int ast_ari_validate_date(struct ast_json *json);
 
 /*!
  * \brief Validator for a Swagger List[]/JSON array.
@@ -121,9 +141,14 @@ int ari_validate_date(struct ast_json *json);
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_list(struct ast_json *json, int (*fn)(struct ast_json *));
+int ast_ari_validate_list(struct ast_json *json, int (*fn)(struct ast_json *));
 
 /*! @} */
+
+/*!
+ * \brief Function type for validator functions. Allows for 
+ */
+typedef int (*ari_validator)(struct ast_json *json);
 {{#apis}}
 {{#api_declaration}}
 {{#models}}
@@ -137,7 +162,14 @@ int ari_validate_list(struct ast_json *json, int (*fn)(struct ast_json *));
  * \returns True (non-zero) if valid.
  * \returns False (zero) if invalid.
  */
-int ari_validate_{{c_id}}(struct ast_json *json);
+int ast_ari_validate_{{c_id}}(struct ast_json *json);
+
+/*!
+ * \brief Function pointer to ast_ari_validate_{{c_id}}().
+ *
+ * See \ref ast_ari_model_validators.h for more details.
+ */
+ari_validator ast_ari_validate_{{c_id}}_fn(void);
 {{/models}}
 {{/api_declaration}}
 {{/apis}}