Merge branch 'vendor/EXPAT'
[dragonfly.git] / contrib / expat / amiga / include / libraries / expat.h
1 #ifndef LIBRARIES_EXPAT_H
2 #define LIBRARIES_EXPAT_H
3
4 /*
5 ** Copyright (c) 2001-2007 Expat maintainers.
6 **
7 ** Permission is hereby granted, free of charge, to any person obtaining
8 ** a copy of this software and associated documentation files (the
9 ** "Software"), to deal in the Software without restriction, including
10 ** without limitation the rights to use, copy, modify, merge, publish,
11 ** distribute, sublicense, and/or sell copies of the Software, and to
12 ** permit persons to whom the Software is furnished to do so, subject to
13 ** the following conditions:
14 ** 
15 ** The above copyright notice and this permission notice shall be included
16 ** in all copies or substantial portions of the Software.
17 ** 
18 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22 ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 */
26
27
28 /****************************************************************************/
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 #ifdef __GNUC__
35    #ifdef __PPC__
36     #pragma pack(2)
37    #endif
38 #elif defined(__VBCC__)
39    #pragma amiga-align
40 #endif
41
42 /****************************************************************************/
43
44
45 #include <stdlib.h>
46
47 #ifndef XMLCALL
48 #define XMLCALL
49 #endif
50
51 typedef char XML_Char;
52 typedef char XML_LChar;
53 typedef long XML_Index;
54 typedef unsigned long XML_Size;
55
56 struct XML_ParserStruct;
57 typedef struct XML_ParserStruct *XML_Parser;
58
59 typedef unsigned char XML_Bool;
60 #define XML_TRUE   ((XML_Bool) 1)
61 #define XML_FALSE  ((XML_Bool) 0)
62
63 enum XML_Status {
64   XML_STATUS_ERROR = 0,
65 #define XML_STATUS_ERROR XML_STATUS_ERROR
66   XML_STATUS_OK = 1,
67 #define XML_STATUS_OK XML_STATUS_OK
68   XML_STATUS_SUSPENDED = 2,
69 #define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED
70 };
71
72 enum XML_Error {
73   XML_ERROR_NONE,
74   XML_ERROR_NO_MEMORY,
75   XML_ERROR_SYNTAX,
76   XML_ERROR_NO_ELEMENTS,
77   XML_ERROR_INVALID_TOKEN,
78   XML_ERROR_UNCLOSED_TOKEN,
79   XML_ERROR_PARTIAL_CHAR,
80   XML_ERROR_TAG_MISMATCH,
81   XML_ERROR_DUPLICATE_ATTRIBUTE,
82   XML_ERROR_JUNK_AFTER_DOC_ELEMENT,
83   XML_ERROR_PARAM_ENTITY_REF,
84   XML_ERROR_UNDEFINED_ENTITY,
85   XML_ERROR_RECURSIVE_ENTITY_REF,
86   XML_ERROR_ASYNC_ENTITY,
87   XML_ERROR_BAD_CHAR_REF,
88   XML_ERROR_BINARY_ENTITY_REF,
89   XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF,
90   XML_ERROR_MISPLACED_XML_PI,
91   XML_ERROR_UNKNOWN_ENCODING,
92   XML_ERROR_INCORRECT_ENCODING,
93   XML_ERROR_UNCLOSED_CDATA_SECTION,
94   XML_ERROR_EXTERNAL_ENTITY_HANDLING,
95   XML_ERROR_NOT_STANDALONE,
96   XML_ERROR_UNEXPECTED_STATE,
97   XML_ERROR_ENTITY_DECLARED_IN_PE,
98   XML_ERROR_FEATURE_REQUIRES_XML_DTD,
99   XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING,
100   XML_ERROR_UNBOUND_PREFIX,
101   XML_ERROR_UNDECLARING_PREFIX,
102   XML_ERROR_INCOMPLETE_PE,
103   XML_ERROR_XML_DECL,
104   XML_ERROR_TEXT_DECL,
105   XML_ERROR_PUBLICID,
106   XML_ERROR_SUSPENDED,
107   XML_ERROR_NOT_SUSPENDED,
108   XML_ERROR_ABORTED,
109   XML_ERROR_FINISHED,
110   XML_ERROR_SUSPEND_PE,
111   XML_ERROR_RESERVED_PREFIX_XML,
112   XML_ERROR_RESERVED_PREFIX_XMLNS,
113   XML_ERROR_RESERVED_NAMESPACE_URI
114 };
115
116 enum XML_Content_Type {
117   XML_CTYPE_EMPTY = 1,
118   XML_CTYPE_ANY,
119   XML_CTYPE_MIXED,
120   XML_CTYPE_NAME,
121   XML_CTYPE_CHOICE,
122   XML_CTYPE_SEQ
123 };
124
125 enum XML_Content_Quant {
126   XML_CQUANT_NONE,
127   XML_CQUANT_OPT,
128   XML_CQUANT_REP,
129   XML_CQUANT_PLUS
130 };
131
132 typedef struct XML_cp XML_Content;
133
134 struct XML_cp {
135   enum XML_Content_Type         type;
136   enum XML_Content_Quant        quant;
137   XML_Char *                    name;
138   unsigned int                  numchildren;
139   XML_Content *                 children;
140 };
141
142
143 typedef void (*XML_ElementDeclHandler) (void *userData,
144                                         const XML_Char *name,
145                                         XML_Content *model);
146
147 void
148 XML_SetElementDeclHandler(XML_Parser parser,
149                           XML_ElementDeclHandler eldecl);
150
151 typedef void (*XML_AttlistDeclHandler) (
152                                     void            *userData,
153                                     const XML_Char  *elname,
154                                     const XML_Char  *attname,
155                                     const XML_Char  *att_type,
156                                     const XML_Char  *dflt,
157                                     int              isrequired);
158
159 void
160 XML_SetAttlistDeclHandler(XML_Parser parser,
161                           XML_AttlistDeclHandler attdecl);
162
163 typedef void (*XML_XmlDeclHandler) (void *userData,
164                                     const XML_Char *version,
165                                     const XML_Char *encoding,
166                                     int             standalone);
167
168 void
169 XML_SetXmlDeclHandler(XML_Parser parser,
170                       XML_XmlDeclHandler xmldecl);
171
172
173 typedef struct {
174   void *(*malloc_fcn)(size_t size);
175   void *(*realloc_fcn)(void *ptr, size_t size);
176   void (*free_fcn)(void *ptr);
177 } XML_Memory_Handling_Suite;
178
179 XML_Parser
180 XML_ParserCreate(const XML_Char *encoding);
181
182 XML_Parser
183 XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
184
185
186 XML_Parser
187 XML_ParserCreate_MM(const XML_Char *encoding,
188                     const XML_Memory_Handling_Suite *memsuite,
189                     const XML_Char *namespaceSeparator);
190
191 XML_Bool
192 XML_ParserReset(XML_Parser parser, const XML_Char *encoding);
193
194 typedef void (*XML_StartElementHandler) (void *userData,
195                                          const XML_Char *name,
196                                          const XML_Char **atts);
197
198 typedef void (*XML_EndElementHandler) (void *userData,
199                                        const XML_Char *name);
200
201
202 typedef void (*XML_CharacterDataHandler) (void *userData,
203                                           const XML_Char *s,
204                                           int len);
205
206 typedef void (*XML_ProcessingInstructionHandler) (
207                                                 void *userData,
208                                                 const XML_Char *target,
209                                                 const XML_Char *data);
210
211 typedef void (*XML_CommentHandler) (void *userData,
212                                     const XML_Char *data);
213
214 typedef void (*XML_StartCdataSectionHandler) (void *userData);
215 typedef void (*XML_EndCdataSectionHandler) (void *userData);
216
217 typedef void (*XML_DefaultHandler) (void *userData,
218                                     const XML_Char *s,
219                                     int len);
220
221 typedef void (*XML_StartDoctypeDeclHandler) (
222                                             void *userData,
223                                             const XML_Char *doctypeName,
224                                             const XML_Char *sysid,
225                                             const XML_Char *pubid,
226                                             int has_internal_subset);
227
228 typedef void (*XML_EndDoctypeDeclHandler)(void *userData);
229
230 typedef void (*XML_EntityDeclHandler) (
231                               void *userData,
232                               const XML_Char *entityName,
233                               int is_parameter_entity,
234                               const XML_Char *value,
235                               int value_length,
236                               const XML_Char *base,
237                               const XML_Char *systemId,
238                               const XML_Char *publicId,
239                               const XML_Char *notationName);
240
241 void
242 XML_SetEntityDeclHandler(XML_Parser parser,
243                          XML_EntityDeclHandler handler);
244
245 typedef void (*XML_UnparsedEntityDeclHandler) (
246                                     void *userData,
247                                     const XML_Char *entityName,
248                                     const XML_Char *base,
249                                     const XML_Char *systemId,
250                                     const XML_Char *publicId,
251                                     const XML_Char *notationName);
252
253 typedef void (*XML_NotationDeclHandler) (
254                                     void *userData,
255                                     const XML_Char *notationName,
256                                     const XML_Char *base,
257                                     const XML_Char *systemId,
258                                     const XML_Char *publicId);
259
260 typedef void (*XML_StartNamespaceDeclHandler) (
261                                     void *userData,
262                                     const XML_Char *prefix,
263                                     const XML_Char *uri);
264
265 typedef void (*XML_EndNamespaceDeclHandler) (
266                                     void *userData,
267                                     const XML_Char *prefix);
268
269 typedef int (*XML_NotStandaloneHandler) (void *userData);
270
271 typedef int (*XML_ExternalEntityRefHandler) (
272                                     XML_Parser parser,
273                                     const XML_Char *context,
274                                     const XML_Char *base,
275                                     const XML_Char *systemId,
276                                     const XML_Char *publicId);
277
278 typedef void (*XML_SkippedEntityHandler) (
279                                     void *userData,
280                                     const XML_Char *entityName,
281                                     int is_parameter_entity);
282
283 typedef struct {
284   int map[256];
285   void *data;
286   int (*convert)(void *data, const char *s);
287   void (*release)(void *data);
288 } XML_Encoding;
289
290 typedef int (*XML_UnknownEncodingHandler) (
291                                     void *encodingHandlerData,
292                                     const XML_Char *name,
293                                     XML_Encoding *info);
294
295 void
296 XML_SetElementHandler(XML_Parser parser,
297                       XML_StartElementHandler start,
298                       XML_EndElementHandler end);
299
300 void
301 XML_SetStartElementHandler(XML_Parser parser,
302                            XML_StartElementHandler handler);
303
304 void
305 XML_SetEndElementHandler(XML_Parser parser,
306                          XML_EndElementHandler handler);
307
308 void
309 XML_SetCharacterDataHandler(XML_Parser parser,
310                             XML_CharacterDataHandler handler);
311
312 void
313 XML_SetProcessingInstructionHandler(XML_Parser parser,
314                                     XML_ProcessingInstructionHandler handler);
315 void
316 XML_SetCommentHandler(XML_Parser parser,
317                       XML_CommentHandler handler);
318
319 void
320 XML_SetCdataSectionHandler(XML_Parser parser,
321                            XML_StartCdataSectionHandler start,
322                            XML_EndCdataSectionHandler end);
323
324 void
325 XML_SetStartCdataSectionHandler(XML_Parser parser,
326                                 XML_StartCdataSectionHandler start);
327
328 void
329 XML_SetEndCdataSectionHandler(XML_Parser parser,
330                               XML_EndCdataSectionHandler end);
331
332 void
333 XML_SetDefaultHandler(XML_Parser parser,
334                       XML_DefaultHandler handler);
335
336 void
337 XML_SetDefaultHandlerExpand(XML_Parser parser,
338                             XML_DefaultHandler handler);
339
340 void
341 XML_SetDoctypeDeclHandler(XML_Parser parser,
342                           XML_StartDoctypeDeclHandler start,
343                           XML_EndDoctypeDeclHandler end);
344
345 void
346 XML_SetStartDoctypeDeclHandler(XML_Parser parser,
347                                XML_StartDoctypeDeclHandler start);
348
349 void
350 XML_SetEndDoctypeDeclHandler(XML_Parser parser,
351                              XML_EndDoctypeDeclHandler end);
352
353 void
354 XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
355                                  XML_UnparsedEntityDeclHandler handler);
356
357 void
358 XML_SetNotationDeclHandler(XML_Parser parser,
359                            XML_NotationDeclHandler handler);
360
361 void
362 XML_SetNamespaceDeclHandler(XML_Parser parser,
363                             XML_StartNamespaceDeclHandler start,
364                             XML_EndNamespaceDeclHandler end);
365
366 void
367 XML_SetStartNamespaceDeclHandler(XML_Parser parser,
368                                  XML_StartNamespaceDeclHandler start);
369
370 void
371 XML_SetEndNamespaceDeclHandler(XML_Parser parser,
372                                XML_EndNamespaceDeclHandler end);
373
374 void
375 XML_SetNotStandaloneHandler(XML_Parser parser,
376                             XML_NotStandaloneHandler handler);
377
378 void
379 XML_SetExternalEntityRefHandler(XML_Parser parser,
380                                 XML_ExternalEntityRefHandler handler);
381
382 void
383 XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
384                                    void *arg);
385
386 void
387 XML_SetSkippedEntityHandler(XML_Parser parser,
388                             XML_SkippedEntityHandler handler);
389
390 void
391 XML_SetUnknownEncodingHandler(XML_Parser parser,
392                               XML_UnknownEncodingHandler handler,
393                               void *encodingHandlerData);
394
395 void
396 XML_DefaultCurrent(XML_Parser parser);
397
398 void
399 XML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
400
401 void
402 XML_SetUserData(XML_Parser parser, void *userData);
403
404 #define XML_GetUserData(parser) (*(void **)(parser))
405
406 enum XML_Status
407 XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
408
409 void
410 XML_UseParserAsHandlerArg(XML_Parser parser);
411
412 enum XML_Error
413 XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
414
415
416 enum XML_Status
417 XML_SetBase(XML_Parser parser, const XML_Char *base);
418
419 const XML_Char *
420 XML_GetBase(XML_Parser parser);
421
422 int
423 XML_GetSpecifiedAttributeCount(XML_Parser parser);
424
425 int
426 XML_GetIdAttributeIndex(XML_Parser parser);
427
428 enum XML_Status
429 XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
430
431 void *
432 XML_GetBuffer(XML_Parser parser, int len);
433
434 enum XML_Status
435 XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
436
437 enum XML_Status
438 XML_StopParser(XML_Parser parser, XML_Bool resumable);
439
440 enum XML_Status
441 XML_ResumeParser(XML_Parser parser);
442
443 enum XML_Parsing {
444   XML_INITIALIZED,
445   XML_PARSING,
446   XML_FINISHED,
447   XML_SUSPENDED
448 };
449
450 typedef struct {
451   enum XML_Parsing parsing;
452   XML_Bool finalBuffer;
453 } XML_ParsingStatus;
454
455 void
456 XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
457
458 XML_Parser
459 XML_ExternalEntityParserCreate(XML_Parser parser,
460                                const XML_Char *context,
461                                const XML_Char *encoding);
462
463 enum XML_ParamEntityParsing {
464   XML_PARAM_ENTITY_PARSING_NEVER,
465   XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE,
466   XML_PARAM_ENTITY_PARSING_ALWAYS
467 };
468
469 int
470 XML_SetParamEntityParsing(XML_Parser parser,
471                           enum XML_ParamEntityParsing parsing);
472
473 enum XML_Error
474 XML_GetErrorCode(XML_Parser parser);
475
476 int XML_GetCurrentLineNumber(XML_Parser parser);
477 int XML_GetCurrentColumnNumber(XML_Parser parser);
478 long XML_GetCurrentByteIndex(XML_Parser parser);
479
480 int
481 XML_GetCurrentByteCount(XML_Parser parser);
482
483 const char *
484 XML_GetInputContext(XML_Parser parser,
485                     int *offset,
486                     int *size);
487
488 #define XML_GetErrorLineNumber   XML_GetCurrentLineNumber
489 #define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber
490 #define XML_GetErrorByteIndex    XML_GetCurrentByteIndex
491
492 void
493 XML_FreeContentModel(XML_Parser parser, XML_Content *model);
494
495 void *
496 XML_MemMalloc(XML_Parser parser, size_t size);
497
498 void *
499 XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
500
501 void
502 XML_MemFree(XML_Parser parser, void *ptr);
503
504 void
505 XML_ParserFree(XML_Parser parser);
506
507 const XML_LChar *
508 XML_ErrorString(enum XML_Error code);
509
510 const XML_LChar *
511 XML_ExpatVersion(void);
512
513 typedef struct {
514   int major;
515   int minor;
516   int micro;
517 } XML_Expat_Version;
518
519 XML_Expat_Version 
520 XML_ExpatVersionInfo(void);
521
522 enum XML_FeatureEnum {
523   XML_FEATURE_END = 0,
524   XML_FEATURE_UNICODE,
525   XML_FEATURE_UNICODE_WCHAR_T,
526   XML_FEATURE_DTD,
527   XML_FEATURE_CONTEXT_BYTES,
528   XML_FEATURE_MIN_SIZE,
529   XML_FEATURE_SIZEOF_XML_CHAR,
530   XML_FEATURE_SIZEOF_XML_LCHAR,
531   XML_FEATURE_NS,
532   XML_FEATURE_LARGE_SIZE
533 };
534
535 typedef struct {
536   enum XML_FeatureEnum  feature;
537   const XML_LChar       *name;
538   long int              value;
539 } XML_Feature;
540
541 const XML_Feature *
542 XML_GetFeatureList(void);
543
544
545 #define XML_MAJOR_VERSION 2
546 #define XML_MINOR_VERSION 0
547 #define XML_MICRO_VERSION 1
548
549
550 /****************************************************************************/
551
552 #ifdef __GNUC__
553    #ifdef __PPC__
554     #pragma pack()
555    #endif
556 #elif defined(__VBCC__)
557    #pragma default-align
558 #endif
559
560 #ifdef __cplusplus
561 }
562 #endif
563
564 /****************************************************************************/
565
566 #endif  /* EXPAT_EXPAT_H */