Imported Upstream version 0.19.7
[platform/upstream/gettext.git] / gnulib-local / lib / libxml / relaxng.in.h
1 /*
2  * Summary: implementation of the Relax-NG validation
3  * Description: implementation of the Relax-NG validation
4  *
5  * Copy: See Copyright for the status of this software.
6  *
7  * Author: Daniel Veillard
8  */
9
10 #ifndef __XML_RELAX_NG__
11 #define __XML_RELAX_NG__
12
13 #include <libxml/xmlversion.h>
14 #include <libxml/hash.h>
15 #include <libxml/xmlstring.h>
16
17 #ifdef LIBXML_SCHEMAS_ENABLED
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 typedef struct _xmlRelaxNG xmlRelaxNG;
24 typedef xmlRelaxNG *xmlRelaxNGPtr;
25
26
27 /**
28  * xmlRelaxNGValidityErrorFunc:
29  * @ctx: the validation context
30  * @msg: the message
31  * @...: extra arguments
32  *
33  * Signature of an error callback from a Relax-NG validation
34  */
35 typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx,
36                                                       const char *msg,
37                                                       ...) LIBXML_ATTR_FORMAT(2,3);
38
39 /**
40  * xmlRelaxNGValidityWarningFunc:
41  * @ctx: the validation context
42  * @msg: the message
43  * @...: extra arguments
44  *
45  * Signature of a warning callback from a Relax-NG validation
46  */
47 typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx,
48                                                         const char *msg,
49                                                         ...) LIBXML_ATTR_FORMAT(2,3);
50
51 /**
52  * A schemas validation context
53  */
54 typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
55 typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
56
57 typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
58 typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
59
60 /*
61  * xmlRelaxNGValidErr:
62  *
63  * List of possible Relax NG validation errors
64  */
65 typedef enum {
66     XML_RELAXNG_OK = 0,
67     XML_RELAXNG_ERR_MEMORY,
68     XML_RELAXNG_ERR_TYPE,
69     XML_RELAXNG_ERR_TYPEVAL,
70     XML_RELAXNG_ERR_DUPID,
71     XML_RELAXNG_ERR_TYPECMP,
72     XML_RELAXNG_ERR_NOSTATE,
73     XML_RELAXNG_ERR_NODEFINE,
74     XML_RELAXNG_ERR_LISTEXTRA,
75     XML_RELAXNG_ERR_LISTEMPTY,
76     XML_RELAXNG_ERR_INTERNODATA,
77     XML_RELAXNG_ERR_INTERSEQ,
78     XML_RELAXNG_ERR_INTEREXTRA,
79     XML_RELAXNG_ERR_ELEMNAME,
80     XML_RELAXNG_ERR_ATTRNAME,
81     XML_RELAXNG_ERR_ELEMNONS,
82     XML_RELAXNG_ERR_ATTRNONS,
83     XML_RELAXNG_ERR_ELEMWRONGNS,
84     XML_RELAXNG_ERR_ATTRWRONGNS,
85     XML_RELAXNG_ERR_ELEMEXTRANS,
86     XML_RELAXNG_ERR_ATTREXTRANS,
87     XML_RELAXNG_ERR_ELEMNOTEMPTY,
88     XML_RELAXNG_ERR_NOELEM,
89     XML_RELAXNG_ERR_NOTELEM,
90     XML_RELAXNG_ERR_ATTRVALID,
91     XML_RELAXNG_ERR_CONTENTVALID,
92     XML_RELAXNG_ERR_EXTRACONTENT,
93     XML_RELAXNG_ERR_INVALIDATTR,
94     XML_RELAXNG_ERR_DATAELEM,
95     XML_RELAXNG_ERR_VALELEM,
96     XML_RELAXNG_ERR_LISTELEM,
97     XML_RELAXNG_ERR_DATATYPE,
98     XML_RELAXNG_ERR_VALUE,
99     XML_RELAXNG_ERR_LIST,
100     XML_RELAXNG_ERR_NOGRAMMAR,
101     XML_RELAXNG_ERR_EXTRADATA,
102     XML_RELAXNG_ERR_LACKDATA,
103     XML_RELAXNG_ERR_INTERNAL,
104     XML_RELAXNG_ERR_ELEMWRONG,
105     XML_RELAXNG_ERR_TEXTWRONG
106 } xmlRelaxNGValidErr;
107
108 /*
109  * xmlRelaxNGParserFlags:
110  *
111  * List of possible Relax NG Parser flags
112  */
113 typedef enum {
114     XML_RELAXNGP_NONE = 0,
115     XML_RELAXNGP_FREE_DOC = 1,
116     XML_RELAXNGP_CRNG = 2
117 } xmlRelaxNGParserFlag;
118
119 XMLPUBFUN int XMLCALL
120                     xmlRelaxNGInitTypes         (void);
121 XMLPUBFUN void XMLCALL
122                     xmlRelaxNGCleanupTypes      (void);
123
124 /*
125  * Interfaces for parsing.
126  */
127 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
128                     xmlRelaxNGNewParserCtxt     (const char *URL);
129 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
130                     xmlRelaxNGNewMemParserCtxt  (const char *buffer,
131                                                  int size);
132 XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
133                     xmlRelaxNGNewDocParserCtxt  (xmlDocPtr doc);
134
135 XMLPUBFUN int XMLCALL
136                     xmlRelaxParserSetFlag       (xmlRelaxNGParserCtxtPtr ctxt,
137                                                  int flag);
138
139 XMLPUBFUN void XMLCALL
140                     xmlRelaxNGFreeParserCtxt    (xmlRelaxNGParserCtxtPtr ctxt);
141 XMLPUBFUN void XMLCALL
142                     xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
143                                          xmlRelaxNGValidityErrorFunc err,
144                                          xmlRelaxNGValidityWarningFunc warn,
145                                          void *ctx);
146 XMLPUBFUN int XMLCALL
147                     xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
148                                          xmlRelaxNGValidityErrorFunc *err,
149                                          xmlRelaxNGValidityWarningFunc *warn,
150                                          void **ctx);
151 XMLPUBFUN void XMLCALL
152                     xmlRelaxNGSetParserStructuredErrors(
153                                          xmlRelaxNGParserCtxtPtr ctxt,
154                                          xmlStructuredErrorFunc serror,
155                                          void *ctx);
156 XMLPUBFUN xmlRelaxNGPtr XMLCALL
157                     xmlRelaxNGParse             (xmlRelaxNGParserCtxtPtr ctxt);
158 XMLPUBFUN void XMLCALL
159                     xmlRelaxNGFree              (xmlRelaxNGPtr schema);
160 #ifdef LIBXML_OUTPUT_ENABLED
161 XMLPUBFUN void XMLCALL
162                     xmlRelaxNGDump              (FILE *output,
163                                          xmlRelaxNGPtr schema);
164 XMLPUBFUN void XMLCALL
165                     xmlRelaxNGDumpTree  (FILE * output,
166                                          xmlRelaxNGPtr schema);
167 #endif /* LIBXML_OUTPUT_ENABLED */
168 /*
169  * Interfaces for validating
170  */
171 XMLPUBFUN void XMLCALL
172                     xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
173                                          xmlRelaxNGValidityErrorFunc err,
174                                          xmlRelaxNGValidityWarningFunc warn,
175                                          void *ctx);
176 XMLPUBFUN int XMLCALL
177                     xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
178                                          xmlRelaxNGValidityErrorFunc *err,
179                                          xmlRelaxNGValidityWarningFunc *warn,
180                                          void **ctx);
181 XMLPUBFUN void XMLCALL
182                         xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
183                                           xmlStructuredErrorFunc serror, void *ctx);
184 XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
185                     xmlRelaxNGNewValidCtxt      (xmlRelaxNGPtr schema);
186 XMLPUBFUN void XMLCALL
187                     xmlRelaxNGFreeValidCtxt     (xmlRelaxNGValidCtxtPtr ctxt);
188 XMLPUBFUN int XMLCALL
189                     xmlRelaxNGValidateDoc       (xmlRelaxNGValidCtxtPtr ctxt,
190                                                  xmlDocPtr doc);
191 /*
192  * Interfaces for progressive validation when possible
193  */
194 XMLPUBFUN int XMLCALL
195                     xmlRelaxNGValidatePushElement       (xmlRelaxNGValidCtxtPtr ctxt,
196                                          xmlDocPtr doc,
197                                          xmlNodePtr elem);
198 XMLPUBFUN int XMLCALL
199                     xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
200                                          const xmlChar *data,
201                                          int len);
202 XMLPUBFUN int XMLCALL
203                     xmlRelaxNGValidatePopElement        (xmlRelaxNGValidCtxtPtr ctxt,
204                                          xmlDocPtr doc,
205                                          xmlNodePtr elem);
206 XMLPUBFUN int XMLCALL
207                     xmlRelaxNGValidateFullElement       (xmlRelaxNGValidCtxtPtr ctxt,
208                                          xmlDocPtr doc,
209                                          xmlNodePtr elem);
210
211 #ifdef __cplusplus
212 }
213 #endif
214
215 #endif /* LIBXML_SCHEMAS_ENABLED */
216
217 #endif /* __XML_RELAX_NG__ */