/ .. / / -> download
/**
 * @file brexcheck.h
 * @brief Check CSDB objects against BREX data modules
 */

#ifndef S1KD_BREXCHECK
#define S1KD_BREXCHECK

/**
 * BREX check options.
 */
typedef enum {
	S1KD_BREXCHECK_VALUES = 1, /**< Check object values. */
	S1KD_BREXCHECK_SNS = 2, /**< Check SNS rules. */
	S1KD_BREXCHECK_STRICT_SNS = 4, /**< Use strict SNS checking. */
	S1KD_BREXCHECK_UNSTRICT_SNS = 8, /**< Use unstrict SNS checking. */
	S1KD_BREXCHECK_NOTATIONS = 16, /**< Check notation rules. */
	S1KD_BREXCHECK_NORMAL_LOG = 32, /**< Output errors to console. */
	S1KD_BREXCHECK_VERBOSE_LOG = 64 /**< Output errors and informative messages to console. */
} s1kdBREXCheckOption;

/**
 * Check a CSDB object against the appropriate S1000D default BREX and generate
 * a report of the results.
 *
 * @param doc The CSDB object
 * @param options A combination of s1kdBREXCheckOption
 * @param report XML report returned by the BREX check. The caller must free the report. If report is NULL, the report is discarded.
 * @return 0 if there are no BREX errors, non-zero otherwise
 */
int s1kdDocCheckDefaultBREX(xmlDocPtr doc, int options, xmlDocPtr *report);

/**
 * Check a CSDB object against the appropriate S1000D default BREX and generate
 * a report of the results.
 *
 * @param object_xml Input buffer containing the XML of the CSDB object
 * @param object_size Size of the object XML buffer
 * @param options A combination of s1kdBREXCheckOption
 * @param report_xml Output buffer for the XML of the BREX report. The caller must free the buffer. If report_xml is NULL, the report is discarded.
 * @param report_size Size of the report XML buffer
 * @return 0 if there are no BREX errors, non-zero otherwise
 */
int s1kdCheckDefaultBREX(const char *object_xml, int object_size, int options, char **report, int *report_size);

/**
 * Check a CSDB object against a BREX data module and generate a report of the
 * results.
 *
 * @param doc The CSDB object
 * @param brex The BREX data module
 * @param options A combination of s1kdBREXCheckOption
 * @param report XML report returned by the BREX check. The caller must free the report. If report is NULL, the report is discarded.
 * @return 0 if there are no BREX error,s non-zero otherwise
 */
int s1kdDocCheckBREX(xmlDocPtr doc, xmlDocPtr brex, int options, xmlDocPtr *report);

/** Check a CSDB object against a BREX data module and generate a report of the
 * results.
 *
 * @param object_xml Input buffer containing the XML of the CSDB object
 * @param object_size Size of the object XML buffer
 * @param brex_xml Input buffer containing the XML of the BREX data module.
 * @param brex_size Size of the BREX buffer
 * @param options A combination of s1kdBREXCheckOption
 * @param report_xml Output buffer for the XML of the BREX report. The caller must free the buffer. If report_xml is NULL, the report is discarded.
 * @param report_size Size of the report XML buffer
 * @return 0 if there are no BREX errors, non-zero otherwise.
 */
int s1kdCheckBREX(const char *object_xml, int object_size, const char *brex_xml, int brex_size, int options, char **report_xml, int *report_size);

#endif


/ gopher://khzae.net/0/s1000d/s1kd-tools/src/tools/libs1kd/include/s1kd/brexcheck.h
Styles: Light Dark Classic