#ifndef LIBRARIES_EXPAT_H #define LIBRARIES_EXPAT_H /* ** Copyright (c) 2001-2007 Expat maintainers. ** ** Permission is hereby granted, free of charge, to any person obtaining ** a copy of this software and associated documentation files (the ** "Software"), to deal in the Software without restriction, including ** without limitation the rights to use, copy, modify, merge, publish, ** distribute, sublicense, and/or sell copies of the Software, and to ** permit persons to whom the Software is furnished to do so, subject to ** the following conditions: ** ** The above copyright notice and this permission notice shall be included ** in all copies or substantial portions of the Software. ** ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /****************************************************************************/ #ifdef __cplusplus extern "C" { #endif #ifdef __GNUC__ #ifdef __PPC__ #pragma pack(2) #endif #elif defined(__VBCC__) #pragma amiga-align #endif /****************************************************************************/ #include <stdlib.h> #ifndef XMLCALL #define XMLCALL #endif typedef char XML_Char; typedef char XML_LChar; typedef long XML_Index; typedef unsigned long XML_Size; struct XML_ParserStruct; typedef struct XML_ParserStruct *XML_Parser; typedef unsigned char XML_Bool; #define XML_TRUE ((XML_Bool) 1) #define XML_FALSE ((XML_Bool) 0) enum XML_Status { XML_STATUS_ERROR = 0, #define XML_STATUS_ERROR XML_STATUS_ERROR XML_STATUS_OK = 1, #define XML_STATUS_OK XML_STATUS_OK XML_STATUS_SUSPENDED = 2, #define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED }; enum XML_Error { XML_ERROR_NONE, XML_ERROR_NO_MEMORY, XML_ERROR_SYNTAX, XML_ERROR_NO_ELEMENTS, XML_ERROR_INVALID_TOKEN, XML_ERROR_UNCLOSED_TOKEN, XML_ERROR_PARTIAL_CHAR, XML_ERROR_TAG_MISMATCH, XML_ERROR_DUPLICATE_ATTRIBUTE, XML_ERROR_JUNK_AFTER_DOC_ELEMENT, XML_ERROR_PARAM_ENTITY_REF, XML_ERROR_UNDEFINED_ENTITY, XML_ERROR_RECURSIVE_ENTITY_REF, XML_ERROR_ASYNC_ENTITY, XML_ERROR_BAD_CHAR_REF, XML_ERROR_BINARY_ENTITY_REF, XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, XML_ERROR_MISPLACED_XML_PI, XML_ERROR_UNKNOWN_ENCODING, XML_ERROR_INCORRECT_ENCODING, XML_ERROR_UNCLOSED_CDATA_SECTION, XML_ERROR_EXTERNAL_ENTITY_HANDLING, XML_ERROR_NOT_STANDALONE, XML_ERROR_UNEXPECTED_STATE, XML_ERROR_ENTITY_DECLARED_IN_PE, XML_ERROR_FEATURE_REQUIRES_XML_DTD, XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, XML_ERROR_UNBOUND_PREFIX, XML_ERROR_UNDECLARING_PREFIX, XML_ERROR_INCOMPLETE_PE, XML_ERROR_XML_DECL, XML_ERROR_TEXT_DECL, XML_ERROR_PUBLICID, XML_ERROR_SUSPENDED, XML_ERROR_NOT_SUSPENDED, XML_ERROR_ABORTED, XML_ERROR_FINISHED, XML_ERROR_SUSPEND_PE, XML_ERROR_RESERVED_PREFIX_XML, XML_ERROR_RESERVED_PREFIX_XMLNS, XML_ERROR_RESERVED_NAMESPACE_URI }; enum XML_Content_Type { XML_CTYPE_EMPTY = 1, XML_CTYPE_ANY, XML_CTYPE_MIXED, XML_CTYPE_NAME, XML_CTYPE_CHOICE, XML_CTYPE_SEQ }; enum XML_Content_Quant { XML_CQUANT_NONE, XML_CQUANT_OPT, XML_CQUANT_REP, XML_CQUANT_PLUS }; typedef struct XML_cp XML_Content; struct XML_cp { enum XML_Content_Type type; enum XML_Content_Quant quant; XML_Char * name; unsigned int numchildren; XML_Content * children; }; typedef void (*XML_ElementDeclHandler) (void *userData, const XML_Char *name, XML_Content *model); void XML_SetElementDeclHandler(XML_Parser parser, XML_ElementDeclHandler eldecl); typedef void (*XML_AttlistDeclHandler) ( void *userData, const XML_Char *elname, const XML_Char *attname, const XML_Char *att_type, const XML_Char *dflt, int isrequired); void XML_SetAttlistDeclHandler(XML_Parser parser, XML_AttlistDeclHandler attdecl); typedef void (*XML_XmlDeclHandler) (void *userData, const XML_Char *version, const XML_Char *encoding, int standalone); void XML_SetXmlDeclHandler(XML_Parser parser, XML_XmlDeclHandler xmldecl); typedef struct { void *(*malloc_fcn)(size_t size); void *(*realloc_fcn)(void *ptr, size_t size); void (*free_fcn)(void *ptr); } XML_Memory_Handling_Suite; XML_Parser XML_ParserCreate(const XML_Char *encoding); XML_Parser XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); XML_Parser XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, const XML_Char *namespaceSeparator); XML_Bool XML_ParserReset(XML_Parser parser, const XML_Char *encoding); typedef void (*XML_StartElementHandler) (void *userData, const XML_Char *name, const XML_Char **atts); typedef void (*XML_EndElementHandler) (void *userData, const XML_Char *name); typedef void (*XML_CharacterDataHandler) (void *userData, const XML_Char *s, int len); typedef void (*XML_ProcessingInstructionHandler) ( void *userData, const XML_Char *target, const XML_Char *data); typedef void (*XML_CommentHandler) (void *userData, const XML_Char *data); typedef void (*XML_StartCdataSectionHandler) (void *userData); typedef void (*XML_EndCdataSectionHandler) (void *userData); typedef void (*XML_DefaultHandler) (void *userData, const XML_Char *s, int len); typedef void (*XML_StartDoctypeDeclHandler) ( void *userData, const XML_Char *doctypeName, const XML_Char *sysid, const XML_Char *pubid, int has_internal_subset); typedef void (*XML_EndDoctypeDeclHandler)(void *userData); typedef void (*XML_EntityDeclHandler) ( void *userData, const XML_Char *entityName, int is_parameter_entity, const XML_Char *value, int value_length, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName); void XML_SetEntityDeclHandler(XML_Parser parser, XML_EntityDeclHandler handler); typedef void (*XML_UnparsedEntityDeclHandler) ( void *userData, const XML_Char *entityName, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId, const XML_Char *notationName); typedef void (*XML_NotationDeclHandler) ( void *userData, const XML_Char *notationName, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId); typedef void (*XML_StartNamespaceDeclHandler) ( void *userData, const XML_Char *prefix, const XML_Char *uri); typedef void (*XML_EndNamespaceDeclHandler) ( void *userData, const XML_Char *prefix); typedef int (*XML_NotStandaloneHandler) (void *userData); typedef int (*XML_ExternalEntityRefHandler) ( XML_Parser parser, const XML_Char *context, const XML_Char *base, const XML_Char *systemId, const XML_Char *publicId); typedef void (*XML_SkippedEntityHandler) ( void *userData, const XML_Char *entityName, int is_parameter_entity); typedef struct { int map[256]; void *data; int (*convert)(void *data, const char *s); void (*release)(void *data); } XML_Encoding; typedef int (*XML_UnknownEncodingHandler) ( void *encodingHandlerData, const XML_Char *name, XML_Encoding *info); void XML_SetElementHandler(XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end); void XML_SetStartElementHandler(XML_Parser parser, XML_StartElementHandler handler); void XML_SetEndElementHandler(XML_Parser parser, XML_EndElementHandler handler); void XML_SetCharacterDataHandler(XML_Parser parser, XML_CharacterDataHandler handler); void XML_SetProcessingInstructionHandler(XML_Parser parser, XML_ProcessingInstructionHandler handler); void XML_SetCommentHandler(XML_Parser parser, XML_CommentHandler handler); void XML_SetCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start, XML_EndCdataSectionHandler end); void XML_SetStartCdataSectionHandler(XML_Parser parser, XML_StartCdataSectionHandler start); void XML_SetEndCdataSectionHandler(XML_Parser parser, XML_EndCdataSectionHandler end); void XML_SetDefaultHandler(XML_Parser parser, XML_DefaultHandler handler); void XML_SetDefaultHandlerExpand(XML_Parser parser, XML_DefaultHandler handler); void XML_SetDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start, XML_EndDoctypeDeclHandler end); void XML_SetStartDoctypeDeclHandler(XML_Parser parser, XML_StartDoctypeDeclHandler start); void XML_SetEndDoctypeDeclHandler(XML_Parser parser, XML_EndDoctypeDeclHandler end); void XML_SetUnparsedEntityDeclHandler(XML_Parser parser, XML_UnparsedEntityDeclHandler handler); void XML_SetNotationDeclHandler(XML_Parser parser, XML_NotationDeclHandler handler); void XML_SetNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end); void XML_SetStartNamespaceDeclHandler(XML_Parser parser, XML_StartNamespaceDeclHandler start); void XML_SetEndNamespaceDeclHandler(XML_Parser parser, XML_EndNamespaceDeclHandler end); void XML_SetNotStandaloneHandler(XML_Parser parser, XML_NotStandaloneHandler handler); void XML_SetExternalEntityRefHandler(XML_Parser parser, XML_ExternalEntityRefHandler handler); void XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg); void XML_SetSkippedEntityHandler(XML_Parser parser, XML_SkippedEntityHandler handler); void XML_SetUnknownEncodingHandler(XML_Parser parser, XML_UnknownEncodingHandler handler, void *encodingHandlerData); void XML_DefaultCurrent(XML_Parser parser); void XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); void XML_SetUserData(XML_Parser parser, void *userData); #define XML_GetUserData(parser) (*(void **)(parser)) enum XML_Status XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); void XML_UseParserAsHandlerArg(XML_Parser parser); enum XML_Error XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); enum XML_Status XML_SetBase(XML_Parser parser, const XML_Char *base); const XML_Char * XML_GetBase(XML_Parser parser); int XML_GetSpecifiedAttributeCount(XML_Parser parser); int XML_GetIdAttributeIndex(XML_Parser parser); enum XML_Status XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); void * XML_GetBuffer(XML_Parser parser, int len); enum XML_Status XML_ParseBuffer(XML_Parser parser, int len, int isFinal); enum XML_Status XML_StopParser(XML_Parser parser, XML_Bool resumable); enum XML_Status XML_ResumeParser(XML_Parser parser); enum XML_Parsing { XML_INITIALIZED, XML_PARSING, XML_FINISHED, XML_SUSPENDED }; typedef struct { enum XML_Parsing parsing; XML_Bool finalBuffer; } XML_ParsingStatus; void XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); XML_Parser XML_ExternalEntityParserCreate(XML_Parser parser, const XML_Char *context, const XML_Char *encoding); enum XML_ParamEntityParsing { XML_PARAM_ENTITY_PARSING_NEVER, XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, XML_PARAM_ENTITY_PARSING_ALWAYS }; int XML_SetParamEntityParsing(XML_Parser parser, enum XML_ParamEntityParsing parsing); enum XML_Error XML_GetErrorCode(XML_Parser parser); int XML_GetCurrentLineNumber(XML_Parser parser); int XML_GetCurrentColumnNumber(XML_Parser parser); long XML_GetCurrentByteIndex(XML_Parser parser); int XML_GetCurrentByteCount(XML_Parser parser); const char * XML_GetInputContext(XML_Parser parser, int *offset, int *size); #define XML_GetErrorLineNumber XML_GetCurrentLineNumber #define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber #define XML_GetErrorByteIndex XML_GetCurrentByteIndex void XML_FreeContentModel(XML_Parser parser, XML_Content *model); void * XML_MemMalloc(XML_Parser parser, size_t size); void * XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); void XML_MemFree(XML_Parser parser, void *ptr); void XML_ParserFree(XML_Parser parser); const XML_LChar * XML_ErrorString(enum XML_Error code); const XML_LChar * XML_ExpatVersion(void); typedef struct { int major; int minor; int micro; } XML_Expat_Version; XML_Expat_Version XML_ExpatVersionInfo(void); enum XML_FeatureEnum { XML_FEATURE_END = 0, XML_FEATURE_UNICODE, XML_FEATURE_UNICODE_WCHAR_T, XML_FEATURE_DTD, XML_FEATURE_CONTEXT_BYTES, XML_FEATURE_MIN_SIZE, XML_FEATURE_SIZEOF_XML_CHAR, XML_FEATURE_SIZEOF_XML_LCHAR, XML_FEATURE_NS, XML_FEATURE_LARGE_SIZE }; typedef struct { enum XML_FeatureEnum feature; const XML_LChar *name; long int value; } XML_Feature; const XML_Feature * XML_GetFeatureList(void); #define XML_MAJOR_VERSION 2 #define XML_MINOR_VERSION 0 #define XML_MICRO_VERSION 1 /****************************************************************************/ #ifdef __GNUC__ #ifdef __PPC__ #pragma pack() #endif #elif defined(__VBCC__) #pragma default-align #endif #ifdef __cplusplus } #endif /****************************************************************************/ #endif /* EXPAT_EXPAT_H */