doubango/thirdparties/common/include/libxml/relaxng.h
c732d49e
 /*
  * Summary: implementation of the Relax-NG validation
  * Description: implementation of the Relax-NG validation
  *
  * Copy: See Copyright for the status of this software.
  *
  * Author: Daniel Veillard
  */
 
 #ifndef __XML_RELAX_NG__
 #define __XML_RELAX_NG__
 
 #include <libxml/xmlversion.h>
 #include <libxml/hash.h>
 #include <libxml/xmlstring.h>
 
 #ifdef LIBXML_SCHEMAS_ENABLED
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 typedef struct _xmlRelaxNG xmlRelaxNG;
 typedef xmlRelaxNG *xmlRelaxNGPtr;
 
 
 /**
  * xmlRelaxNGValidityErrorFunc:
  * @ctx: the validation context
  * @msg: the message
  * @...: extra arguments
  *
  * Signature of an error callback from a Relax-NG validation
  */
 typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 
 /**
  * xmlRelaxNGValidityWarningFunc:
  * @ctx: the validation context
  * @msg: the message
  * @...: extra arguments
  *
  * Signature of a warning callback from a Relax-NG validation
  */
 typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 
 /**
  * A schemas validation context
  */
 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
 
 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
 
 /*
  * xmlRelaxNGValidErr:
  *
  * List of possible Relax NG validation errors
  */
 typedef enum {
     XML_RELAXNG_OK = 0,
     XML_RELAXNG_ERR_MEMORY,
     XML_RELAXNG_ERR_TYPE,
     XML_RELAXNG_ERR_TYPEVAL,
     XML_RELAXNG_ERR_DUPID,
     XML_RELAXNG_ERR_TYPECMP,
     XML_RELAXNG_ERR_NOSTATE,
     XML_RELAXNG_ERR_NODEFINE,
     XML_RELAXNG_ERR_LISTEXTRA,
     XML_RELAXNG_ERR_LISTEMPTY,
     XML_RELAXNG_ERR_INTERNODATA,
     XML_RELAXNG_ERR_INTERSEQ,
     XML_RELAXNG_ERR_INTEREXTRA,
     XML_RELAXNG_ERR_ELEMNAME,
     XML_RELAXNG_ERR_ATTRNAME,
     XML_RELAXNG_ERR_ELEMNONS,
     XML_RELAXNG_ERR_ATTRNONS,
     XML_RELAXNG_ERR_ELEMWRONGNS,
     XML_RELAXNG_ERR_ATTRWRONGNS,
     XML_RELAXNG_ERR_ELEMEXTRANS,
     XML_RELAXNG_ERR_ATTREXTRANS,
     XML_RELAXNG_ERR_ELEMNOTEMPTY,
     XML_RELAXNG_ERR_NOELEM,
     XML_RELAXNG_ERR_NOTELEM,
     XML_RELAXNG_ERR_ATTRVALID,
     XML_RELAXNG_ERR_CONTENTVALID,
     XML_RELAXNG_ERR_EXTRACONTENT,
     XML_RELAXNG_ERR_INVALIDATTR,
     XML_RELAXNG_ERR_DATAELEM,
     XML_RELAXNG_ERR_VALELEM,
     XML_RELAXNG_ERR_LISTELEM,
     XML_RELAXNG_ERR_DATATYPE,
     XML_RELAXNG_ERR_VALUE,
     XML_RELAXNG_ERR_LIST,
     XML_RELAXNG_ERR_NOGRAMMAR,
     XML_RELAXNG_ERR_EXTRADATA,
     XML_RELAXNG_ERR_LACKDATA,
     XML_RELAXNG_ERR_INTERNAL,
     XML_RELAXNG_ERR_ELEMWRONG,
     XML_RELAXNG_ERR_TEXTWRONG
 } xmlRelaxNGValidErr;
 
 /*
  * xmlRelaxNGParserFlags:
  *
  * List of possible Relax NG Parser flags
  */
 typedef enum {
     XML_RELAXNGP_NONE = 0,
     XML_RELAXNGP_FREE_DOC = 1,
     XML_RELAXNGP_CRNG = 2
 } xmlRelaxNGParserFlag;
 
 XMLPUBFUN int XMLCALL
 		    xmlRelaxNGInitTypes		(void);
 XMLPUBFUN void XMLCALL
 		    xmlRelaxNGCleanupTypes	(void);
 
 /*
  * Interfaces for parsing.
  */
 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
 		    xmlRelaxNGNewParserCtxt	(const char *URL);
 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
 		    xmlRelaxNGNewMemParserCtxt	(const char *buffer,
 						 int size);
 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
 		    xmlRelaxNGNewDocParserCtxt	(xmlDocPtr doc);
 
 XMLPUBFUN int XMLCALL
 		    xmlRelaxParserSetFlag	(xmlRelaxNGParserCtxtPtr ctxt,
 						 int flag);
 
 XMLPUBFUN void XMLCALL
 		    xmlRelaxNGFreeParserCtxt	(xmlRelaxNGParserCtxtPtr ctxt);
 XMLPUBFUN void XMLCALL
 		    xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
 					 xmlRelaxNGValidityErrorFunc err,
 					 xmlRelaxNGValidityWarningFunc warn,
 					 void *ctx);
 XMLPUBFUN int XMLCALL
 		    xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
 					 xmlRelaxNGValidityErrorFunc *err,
 					 xmlRelaxNGValidityWarningFunc *warn,
 					 void **ctx);
 XMLPUBFUN void XMLCALL
 		    xmlRelaxNGSetParserStructuredErrors(
 					 xmlRelaxNGParserCtxtPtr ctxt,
 					 xmlStructuredErrorFunc serror,
 					 void *ctx);
 XMLPUBFUN xmlRelaxNGPtr XMLCALL
 		    xmlRelaxNGParse		(xmlRelaxNGParserCtxtPtr ctxt);
 XMLPUBFUN void XMLCALL
 		    xmlRelaxNGFree		(xmlRelaxNGPtr schema);
 #ifdef LIBXML_OUTPUT_ENABLED
 XMLPUBFUN void XMLCALL
 		    xmlRelaxNGDump		(FILE *output,
 					 xmlRelaxNGPtr schema);
 XMLPUBFUN void XMLCALL
 		    xmlRelaxNGDumpTree	(FILE * output,
 					 xmlRelaxNGPtr schema);
 #endif /* LIBXML_OUTPUT_ENABLED */
 /*
  * Interfaces for validating
  */
 XMLPUBFUN void XMLCALL
 		    xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
 					 xmlRelaxNGValidityErrorFunc err,
 					 xmlRelaxNGValidityWarningFunc warn,
 					 void *ctx);
 XMLPUBFUN int XMLCALL
 		    xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
 					 xmlRelaxNGValidityErrorFunc *err,
 					 xmlRelaxNGValidityWarningFunc *warn,
 					 void **ctx);
 XMLPUBFUN void XMLCALL
 			xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
 					  xmlStructuredErrorFunc serror, void *ctx);
 XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
 		    xmlRelaxNGNewValidCtxt	(xmlRelaxNGPtr schema);
 XMLPUBFUN void XMLCALL
 		    xmlRelaxNGFreeValidCtxt	(xmlRelaxNGValidCtxtPtr ctxt);
 XMLPUBFUN int XMLCALL
 		    xmlRelaxNGValidateDoc	(xmlRelaxNGValidCtxtPtr ctxt,
 						 xmlDocPtr doc);
 /*
  * Interfaces for progressive validation when possible
  */
 XMLPUBFUN int XMLCALL
 		    xmlRelaxNGValidatePushElement	(xmlRelaxNGValidCtxtPtr ctxt,
 					 xmlDocPtr doc,
 					 xmlNodePtr elem);
 XMLPUBFUN int XMLCALL
 		    xmlRelaxNGValidatePushCData	(xmlRelaxNGValidCtxtPtr ctxt,
 					 const xmlChar *data,
 					 int len);
 XMLPUBFUN int XMLCALL
 		    xmlRelaxNGValidatePopElement	(xmlRelaxNGValidCtxtPtr ctxt,
 					 xmlDocPtr doc,
 					 xmlNodePtr elem);
 XMLPUBFUN int XMLCALL
 		    xmlRelaxNGValidateFullElement	(xmlRelaxNGValidCtxtPtr ctxt,
 					 xmlDocPtr doc,
 					 xmlNodePtr elem);
 
 #ifdef __cplusplus
 }
 #endif
 
 #endif /* LIBXML_SCHEMAS_ENABLED */
 
 #endif /* __XML_RELAX_NG__ */