• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef LIBRARIES_EXPAT_H
2 #define LIBRARIES_EXPAT_H
3 
4 /*
5 ** Copyright (c) 2001-2005 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 };
532 
533 typedef struct {
534   enum XML_FeatureEnum  feature;
535   const XML_LChar       *name;
536   long int              value;
537 } XML_Feature;
538 
539 const XML_Feature *
540 XML_GetFeatureList(void);
541 
542 
543 #define XML_MAJOR_VERSION 2
544 #define XML_MINOR_VERSION 0
545 #define XML_MICRO_VERSION 0
546 
547 
548 /****************************************************************************/
549 
550 #ifdef __GNUC__
551    #ifdef __PPC__
552     #pragma pack()
553    #endif
554 #elif defined(__VBCC__)
555    #pragma default-align
556 #endif
557 
558 #ifdef __cplusplus
559 }
560 #endif
561 
562 /****************************************************************************/
563 
564 #endif  /* EXPAT_EXPAT_H */
565