expat.h 16 KB

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