Patch for SF feature request #1048448
Raphael Bossek <[email protected]>
| Newsgroups | gmane.text.xml.expat.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Karl, as you mentioned before we should consider the sourceforge.net feature request #1048448. There are today incompatibilites for applications linking agains different variantes of libexpat: * wchar_t -> XMLWC_ * unsigned short -> XML16_ * char -> XML_ * unsigned long -> XML32_ To make these libraries work together in _one_ application I've introduced a simple macro called XMLABI() which prefix all ABI function with different tags as shown abow. See attached patch. This patch is against the UTF32 support, but should not be to hard to be modified to apply to original CVS HEAD. If this patch is accepted we have to change the ABI version for non char (XML_) libraries. They become incompatible with todays applications which uses XML_ in UNICODE (libexpatw) environments. We try to fix this now. This patch also convert all XML_ function names to XMLABI() for applications that did not change they names but defined XML_UNICODE. This makes things easier for the developers. On the other hand we get our change faster public. Any comments are appreciated! -- Raphael Bossek _______________________________________________ Expat-discuss mailing list [email protected] http://mail.libexpat.org/mailman/listinfo/expat-discuss
utf32+sym.diff
(text/plain, 24 KB)
diff -Naur expat.cvs+utf32/lib/expat_external.h expat.cvs+utf32+sym/lib/expat_external.h
--- expat.cvs+utf32/lib/expat_external.h 2005-10-04 23:10:05.000000000 +0200
+++ expat.cvs+utf32+sym/lib/expat_external.h 2005-10-13 23:16:02.000000000 +0200
@@ -112,10 +112,13 @@
#ifdef XML_UNICODE /* Information is UTF-16 encoded. */
# if defined(HAVE_USABLE_WCHAR_T)
# define XML_UNICODE_TYPE wchar_t
+# define XMLABI(f) XMLWC_ ## f
# elif defined(XML_UNICODE_WIDE)
# define XML_UNICODE_TYPE unsigned long
+# define XMLABI(f) XML32_ ## f
# else
# define XML_UNICODE_TYPE unsigned short
+# define XMLABI(f) XML16_ ## f
# endif
typedef XML_UNICODE_TYPE XML_Char;
# ifdef XML_UNICODE_WCHAR_T
@@ -125,6 +128,7 @@
# endif /* XML_UNICODE_WCHAR_T */
#else /* Information is UTF-8 encoded. */
+#define XMLABI(f) XML_ ## f
typedef char XML_Char;
typedef char XML_LChar;
#endif /* XML_UNICODE */
diff -Naur expat.cvs+utf32/lib/expat.h expat.cvs+utf32+sym/lib/expat.h
--- expat.cvs+utf32/lib/expat.h 2005-10-04 23:10:05.000000000 +0200
+++ expat.cvs+utf32+sym/lib/expat.h 2005-10-14 07:28:48.000000000 +0200
@@ -153,8 +153,8 @@
XML_Content *model);
XMLPARSEAPI(void)
-XML_SetElementDeclHandler(XML_Parser parser,
- XML_ElementDeclHandler eldecl);
+XMLABI(SetElementDeclHandler)(XML_Parser parser,
+ XML_ElementDeclHandler eldecl);
/* The Attlist declaration handler is called for *each* attribute. So
a single Attlist declaration with multiple attributes declared will
@@ -173,8 +173,8 @@
int isrequired);
XMLPARSEAPI(void)
-XML_SetAttlistDeclHandler(XML_Parser parser,
- XML_AttlistDeclHandler attdecl);
+XMLABI(SetAttlistDeclHandler)(XML_Parser parser,
+ XML_AttlistDeclHandler attdecl);
/* The XML declaration handler is called for *both* XML declarations
and text declarations. The way to distinguish is that the version
@@ -190,8 +190,8 @@
int standalone);
XMLPARSEAPI(void)
-XML_SetXmlDeclHandler(XML_Parser parser,
- XML_XmlDeclHandler xmldecl);
+XMLABI(SetXmlDeclHandler)(XML_Parser parser,
+ XML_XmlDeclHandler xmldecl);
typedef struct {
@@ -204,7 +204,7 @@
external protocol or NULL if there is none specified.
*/
XMLPARSEAPI(XML_Parser)
-XML_ParserCreate(const XML_Char *encoding);
+XMLABI(ParserCreate)(const XML_Char *encoding);
/* Constructs a new parser and namespace processor. Element type
names and attribute names that belong to a namespace will be
@@ -218,7 +218,7 @@
triplets (see XML_SetReturnNSTriplet).
*/
XMLPARSEAPI(XML_Parser)
-XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator);
+XMLABI(ParserCreateNS)(const XML_Char *encoding, XML_Char namespaceSeparator);
/* Constructs a new parser using the memory management suite referred to
@@ -231,9 +231,9 @@
the given suite.
*/
XMLPARSEAPI(XML_Parser)
-XML_ParserCreate_MM(const XML_Char *encoding,
- const XML_Memory_Handling_Suite *memsuite,
- const XML_Char *namespaceSeparator);
+XMLABI(ParserCreate_MM)(const XML_Char *encoding,
+ const XML_Memory_Handling_Suite *memsuite,
+ const XML_Char *namespaceSeparator);
/* Prepare a parser object to be re-used. This is particularly
valuable when memory allocation overhead is disproportionatly high,
@@ -245,7 +245,7 @@
Added in Expat 1.95.3.
*/
XMLPARSEAPI(XML_Bool)
-XML_ParserReset(XML_Parser parser, const XML_Char *encoding);
+XMLABI(ParserReset)(XML_Parser parser, const XML_Char *encoding);
/* atts is array of name/value pairs, terminated by 0;
names and values are 0 terminated.
@@ -339,8 +339,8 @@
const XML_Char *notationName);
XMLPARSEAPI(void)
-XML_SetEntityDeclHandler(XML_Parser parser,
- XML_EntityDeclHandler handler);
+XMLABI(SetEntityDeclHandler)(XML_Parser parser,
+ XML_EntityDeclHandler handler);
/* OBSOLETE -- OBSOLETE -- OBSOLETE
This handler has been superceded by the EntityDeclHandler above.
@@ -532,123 +532,123 @@
XML_Encoding *info);
XMLPARSEAPI(void)
-XML_SetElementHandler(XML_Parser parser,
- XML_StartElementHandler start,
- XML_EndElementHandler end);
+XMLABI(SetElementHandler)(XML_Parser parser,
+ XML_StartElementHandler start,
+ XML_EndElementHandler end);
XMLPARSEAPI(void)
-XML_SetStartElementHandler(XML_Parser parser,
- XML_StartElementHandler handler);
+XMLABI(SetStartElementHandler)(XML_Parser parser,
+ XML_StartElementHandler handler);
XMLPARSEAPI(void)
-XML_SetEndElementHandler(XML_Parser parser,
- XML_EndElementHandler handler);
+XMLABI(SetEndElementHandler)(XML_Parser parser,
+ XML_EndElementHandler handler);
XMLPARSEAPI(void)
-XML_SetCharacterDataHandler(XML_Parser parser,
- XML_CharacterDataHandler handler);
+XMLABI(SetCharacterDataHandler)(XML_Parser parser,
+ XML_CharacterDataHandler handler);
XMLPARSEAPI(void)
-XML_SetProcessingInstructionHandler(XML_Parser parser,
- XML_ProcessingInstructionHandler handler);
+XMLABI(SetProcessingInstructionHandler)(XML_Parser parser,
+ XML_ProcessingInstructionHandler handler);
XMLPARSEAPI(void)
-XML_SetCommentHandler(XML_Parser parser,
- XML_CommentHandler handler);
+XMLABI(SetCommentHandler)(XML_Parser parser,
+ XML_CommentHandler handler);
XMLPARSEAPI(void)
-XML_SetCdataSectionHandler(XML_Parser parser,
- XML_StartCdataSectionHandler start,
- XML_EndCdataSectionHandler end);
+XMLABI(SetCdataSectionHandler)(XML_Parser parser,
+ XML_StartCdataSectionHandler start,
+ XML_EndCdataSectionHandler end);
XMLPARSEAPI(void)
-XML_SetStartCdataSectionHandler(XML_Parser parser,
- XML_StartCdataSectionHandler start);
+XMLABI(SetStartCdataSectionHandler)(XML_Parser parser,
+ XML_StartCdataSectionHandler start);
XMLPARSEAPI(void)
-XML_SetEndCdataSectionHandler(XML_Parser parser,
- XML_EndCdataSectionHandler end);
+XMLABI(SetEndCdataSectionHandler)(XML_Parser parser,
+ XML_EndCdataSectionHandler end);
/* This sets the default handler and also inhibits expansion of
internal entities. These entity references will be passed to the
default handler, or to the skipped entity handler, if one is set.
*/
XMLPARSEAPI(void)
-XML_SetDefaultHandler(XML_Parser parser,
- XML_DefaultHandler handler);
+XMLABI(SetDefaultHandler)(XML_Parser parser,
+ XML_DefaultHandler handler);
/* This sets the default handler but does not inhibit expansion of
internal entities. The entity reference will not be passed to the
default handler.
*/
XMLPARSEAPI(void)
-XML_SetDefaultHandlerExpand(XML_Parser parser,
- XML_DefaultHandler handler);
+XMLABI(SetDefaultHandlerExpand)(XML_Parser parser,
+ XML_DefaultHandler handler);
XMLPARSEAPI(void)
-XML_SetDoctypeDeclHandler(XML_Parser parser,
- XML_StartDoctypeDeclHandler start,
- XML_EndDoctypeDeclHandler end);
+XMLABI(SetDoctypeDeclHandler)(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start,
+ XML_EndDoctypeDeclHandler end);
XMLPARSEAPI(void)
-XML_SetStartDoctypeDeclHandler(XML_Parser parser,
- XML_StartDoctypeDeclHandler start);
+XMLABI(SetStartDoctypeDeclHandler)(XML_Parser parser,
+ XML_StartDoctypeDeclHandler start);
XMLPARSEAPI(void)
-XML_SetEndDoctypeDeclHandler(XML_Parser parser,
- XML_EndDoctypeDeclHandler end);
+XMLABI(SetEndDoctypeDeclHandler)(XML_Parser parser,
+ XML_EndDoctypeDeclHandler end);
XMLPARSEAPI(void)
-XML_SetUnparsedEntityDeclHandler(XML_Parser parser,
- XML_UnparsedEntityDeclHandler handler);
+XMLABI(SetUnparsedEntityDeclHandler)(XML_Parser parser,
+ XML_UnparsedEntityDeclHandler handler);
XMLPARSEAPI(void)
-XML_SetNotationDeclHandler(XML_Parser parser,
- XML_NotationDeclHandler handler);
+XMLABI(SetNotationDeclHandler)(XML_Parser parser,
+ XML_NotationDeclHandler handler);
XMLPARSEAPI(void)
-XML_SetNamespaceDeclHandler(XML_Parser parser,
- XML_StartNamespaceDeclHandler start,
- XML_EndNamespaceDeclHandler end);
+XMLABI(SetNamespaceDeclHandler)(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start,
+ XML_EndNamespaceDeclHandler end);
XMLPARSEAPI(void)
-XML_SetStartNamespaceDeclHandler(XML_Parser parser,
- XML_StartNamespaceDeclHandler start);
+XMLABI(SetStartNamespaceDeclHandler)(XML_Parser parser,
+ XML_StartNamespaceDeclHandler start);
XMLPARSEAPI(void)
-XML_SetEndNamespaceDeclHandler(XML_Parser parser,
- XML_EndNamespaceDeclHandler end);
+XMLABI(SetEndNamespaceDeclHandler)(XML_Parser parser,
+ XML_EndNamespaceDeclHandler end);
XMLPARSEAPI(void)
-XML_SetNotStandaloneHandler(XML_Parser parser,
- XML_NotStandaloneHandler handler);
+XMLABI(SetNotStandaloneHandler)(XML_Parser parser,
+ XML_NotStandaloneHandler handler);
XMLPARSEAPI(void)
-XML_SetExternalEntityRefHandler(XML_Parser parser,
- XML_ExternalEntityRefHandler handler);
+XMLABI(SetExternalEntityRefHandler)(XML_Parser parser,
+ XML_ExternalEntityRefHandler handler);
/* If a non-NULL value for arg is specified here, then it will be
passed as the first argument to the external entity ref handler
instead of the parser object.
*/
XMLPARSEAPI(void)
-XML_SetExternalEntityRefHandlerArg(XML_Parser parser,
- void *arg);
+XMLABI(SetExternalEntityRefHandlerArg)(XML_Parser parser,
+ void *arg);
XMLPARSEAPI(void)
-XML_SetSkippedEntityHandler(XML_Parser parser,
- XML_SkippedEntityHandler handler);
+XMLABI(SetSkippedEntityHandler)(XML_Parser parser,
+ XML_SkippedEntityHandler handler);
XMLPARSEAPI(void)
-XML_SetUnknownEncodingHandler(XML_Parser parser,
- XML_UnknownEncodingHandler handler,
- void *encodingHandlerData);
+XMLABI(SetUnknownEncodingHandler)(XML_Parser parser,
+ XML_UnknownEncodingHandler handler,
+ void *encodingHandlerData);
/* This can be called within a handler for a start element, end
element, processing instruction or character data. It causes the
corresponding markup to be passed to the default handler.
*/
XMLPARSEAPI(void)
-XML_DefaultCurrent(XML_Parser parser);
+XMLABI(DefaultCurrent)(XML_Parser parser);
/* If do_nst is non-zero, and namespace processing is in effect, and
a name has a prefix (i.e. an explicit namespace qualifier) then
@@ -665,11 +665,11 @@
*/
XMLPARSEAPI(void)
-XML_SetReturnNSTriplet(XML_Parser parser, int do_nst);
+XMLABI(SetReturnNSTriplet)(XML_Parser parser, int do_nst);
/* This value is passed as the userData argument to callbacks. */
XMLPARSEAPI(void)
-XML_SetUserData(XML_Parser parser, void *userData);
+XMLABI(SetUserData)(XML_Parser parser, void *userData);
/* Returns the last value set by XML_SetUserData or NULL. */
#define XML_GetUserData(parser) (*(void **)(parser))
@@ -681,14 +681,14 @@
has no effect and returns XML_STATUS_ERROR.
*/
XMLPARSEAPI(enum XML_Status)
-XML_SetEncoding(XML_Parser parser, const XML_Char *encoding);
+XMLABI(SetEncoding)(XML_Parser parser, const XML_Char *encoding);
/* If this function is called, then the parser will be passed as the
first argument to callbacks instead of userData. The userData will
still be accessible using XML_GetUserData.
*/
XMLPARSEAPI(void)
-XML_UseParserAsHandlerArg(XML_Parser parser);
+XMLABI(UseParserAsHandlerArg)(XML_Parser parser);
/* If useDTD == XML_TRUE is passed to this function, then the parser
will assume that there is an external subset, even if none is
@@ -709,7 +709,7 @@
XML_ERROR_FEATURE_REQUIRES_XML_DTD.
*/
XMLPARSEAPI(enum XML_Error)
-XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD);
+XMLABI(UseForeignDTD)(XML_Parser parser, XML_Bool useDTD);
/* Sets the base to be used for resolving relative URIs in system
@@ -721,10 +721,10 @@
XML_STATUS_OK otherwise.
*/
XMLPARSEAPI(enum XML_Status)
-XML_SetBase(XML_Parser parser, const XML_Char *base);
+XMLABI(SetBase)(XML_Parser parser, const XML_Char *base);
XMLPARSEAPI(const XML_Char *)
-XML_GetBase(XML_Parser parser);
+XMLABI(GetBase)(XML_Parser parser);
/* Returns the number of the attribute/value pairs passed in last call
to the XML_StartElementHandler that were specified in the start-tag
@@ -733,7 +733,7 @@
XML_StartElementHandler.
*/
XMLPARSEAPI(int)
-XML_GetSpecifiedAttributeCount(XML_Parser parser);
+XMLABI(GetSpecifiedAttributeCount)(XML_Parser parser);
/* Returns the index of the ID attribute passed in the last call to
XML_StartElementHandler, or -1 if there is no ID attribute. Each
@@ -741,7 +741,7 @@
index into the atts array passed to the XML_StartElementHandler.
*/
XMLPARSEAPI(int)
-XML_GetIdAttributeIndex(XML_Parser parser);
+XMLABI(GetIdAttributeIndex)(XML_Parser parser);
/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is
detected. The last call to XML_Parse must have isFinal true; len
@@ -753,13 +753,13 @@
values.
*/
XMLPARSEAPI(enum XML_Status)
-XML_Parse(XML_Parser parser, const char *s, int len, int isFinal);
+XMLABI(Parse)(XML_Parser parser, const char *s, int len, int isFinal);
XMLPARSEAPI(void *)
-XML_GetBuffer(XML_Parser parser, int len);
+XMLABI(GetBuffer)(XML_Parser parser, int len);
XMLPARSEAPI(enum XML_Status)
-XML_ParseBuffer(XML_Parser parser, int len, int isFinal);
+XMLABI(ParseBuffer)(XML_Parser parser, int len, int isFinal);
/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return.
Must be called from within a call-back handler, except when aborting
@@ -793,7 +793,7 @@
When suspended, parsing can be resumed by calling XML_ResumeParser().
*/
XMLPARSEAPI(enum XML_Status)
-XML_StopParser(XML_Parser parser, XML_Bool resumable);
+XMLABI(StopParser)(XML_Parser parser, XML_Bool resumable);
/* Resumes parsing after it has been suspended with XML_StopParser().
Must not be called from within a handler call-back. Returns same
@@ -808,7 +808,7 @@
application to call XML_ResumeParser() on it at the appropriate moment.
*/
XMLPARSEAPI(enum XML_Status)
-XML_ResumeParser(XML_Parser parser);
+XMLABI(ResumeParser)(XML_Parser parser);
enum XML_Parsing {
XML_INITIALIZED,
@@ -828,7 +828,7 @@
XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED
*/
XMLPARSEAPI(void)
-XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status);
+XMLABI(GetParsingStatus)(XML_Parser parser, XML_ParsingStatus *status);
/* Creates an XML_Parser object that can parse an external general
entity; context is a '\0'-terminated string specifying the parse
@@ -847,9 +847,9 @@
Otherwise returns a new XML_Parser object.
*/
XMLPARSEAPI(XML_Parser)
-XML_ExternalEntityParserCreate(XML_Parser parser,
- const XML_Char *context,
- const XML_Char *encoding);
+XMLABI(ExternalEntityParserCreate)(XML_Parser parser,
+ const XML_Char *context,
+ const XML_Char *encoding);
enum XML_ParamEntityParsing {
XML_PARAM_ENTITY_PARSING_NEVER,
@@ -881,14 +881,14 @@
XML_ParseBuffer, then it has no effect and will always return 0.
*/
XMLPARSEAPI(int)
-XML_SetParamEntityParsing(XML_Parser parser,
- enum XML_ParamEntityParsing parsing);
+XMLABI(SetParamEntityParsing)(XML_Parser parser,
+ enum XML_ParamEntityParsing parsing);
/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then
XML_GetErrorCode returns information about the error.
*/
XMLPARSEAPI(enum XML_Error)
-XML_GetErrorCode(XML_Parser parser);
+XMLABI(GetErrorCode)(XML_Parser parser);
/* These functions return information about the current parse
location. They may be called from any callback called to report
@@ -914,7 +914,7 @@
Returns 0 if the event is in an internal entity.
*/
XMLPARSEAPI(int)
-XML_GetCurrentByteCount(XML_Parser parser);
+XMLABI(GetCurrentByteCount)(XML_Parser parser);
/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets
the integer pointed to by offset to the offset within this buffer
@@ -927,9 +927,9 @@
the handler that makes the call.
*/
XMLPARSEAPI(const char *)
-XML_GetInputContext(XML_Parser parser,
- int *offset,
- int *size);
+XMLABI(GetInputContext)(XML_Parser parser,
+ int *offset,
+ int *size);
/* For backwards compatibility with previous versions. */
#define XML_GetErrorLineNumber XML_GetCurrentLineNumber
@@ -938,29 +938,29 @@
/* Frees the content model passed to the element declaration handler */
XMLPARSEAPI(void)
-XML_FreeContentModel(XML_Parser parser, XML_Content *model);
+XMLABI(FreeContentModel)(XML_Parser parser, XML_Content *model);
/* Exposing the memory handling functions used in Expat */
XMLPARSEAPI(void *)
-XML_MemMalloc(XML_Parser parser, size_t size);
+XMLABI(MemMalloc)(XML_Parser parser, size_t size);
XMLPARSEAPI(void *)
-XML_MemRealloc(XML_Parser parser, void *ptr, size_t size);
+XMLABI(MemRealloc)(XML_Parser parser, void *ptr, size_t size);
XMLPARSEAPI(void)
-XML_MemFree(XML_Parser parser, void *ptr);
+XMLABI(MemFree)(XML_Parser parser, void *ptr);
/* Frees memory used by the parser. */
XMLPARSEAPI(void)
-XML_ParserFree(XML_Parser parser);
+XMLABI(ParserFree)(XML_Parser parser);
/* Returns a string describing the error. */
XMLPARSEAPI(const XML_LChar *)
-XML_ErrorString(enum XML_Error code);
+XMLABI(ErrorString)(enum XML_Error code);
/* Return a string containing the version number of this expat */
XMLPARSEAPI(const XML_LChar *)
-XML_ExpatVersion(void);
+XMLABI(ExpatVersion)(void);
typedef struct {
int major;
@@ -972,7 +972,7 @@
number information for this version of expat.
*/
XMLPARSEAPI(XML_Expat_Version)
-XML_ExpatVersionInfo(void);
+XMLABI(ExpatVersionInfo)(void);
/* Added in Expat 1.95.5. */
enum XML_FeatureEnum {
@@ -995,7 +995,7 @@
} XML_Feature;
XMLPARSEAPI(const XML_Feature *)
-XML_GetFeatureList(void);
+XMLABI(GetFeatureList)(void);
/* Expat follows the GNU/Linux convention of odd number minor version for
@@ -1007,6 +1007,86 @@
#define XML_MINOR_VERSION 95
#define XML_MICRO_VERSION 8
+/* This list of defines is used while moving to new function names for applications
+ * not using the new naming convention. Set -DXML_UNICODE_ABI_CHANGED=1 if you intent
+ * to supress the warning.
+ *
+ * To update the transformation list for all function defined with XMLABI()
+ * call following cline on UNIX shell:
+ * grep ^XMLABI expat.h | sed -e 's/^XMLABI(\([^)]\+\)).\+/# define XML_\1 XMLABI(\1)/g'
+ */
+#if defined (XML_UNICODE) && !defined (XML_UNICODE_ABI_CHANGED)
+# if defined (XML_UNICODE_WIDE)
+# warning Functions names changed. Please rename your XML_ function prefix to XML32_
+# elif define d(XML_UNICDE_WCHAR_T)
+# warning Functions names changed. Please rename your XML_ function prefix to XMLWC_
+# else
+# warning Functions names changed. Please rename your XML_ function prefix to XML16_
+# endif
+# define XML_SetElementDeclHandler XMLABI(SetElementDeclHandler)
+# define XML_SetAttlistDeclHandler XMLABI(SetAttlistDeclHandler)
+# define XML_SetXmlDeclHandler XMLABI(SetXmlDeclHandler)
+# define XML_ParserCreate XMLABI(ParserCreate)
+# define XML_ParserCreateNS XMLABI(ParserCreateNS)
+# define XML_ParserCreate_MM XMLABI(ParserCreate_MM)
+# define XML_ParserReset XMLABI(ParserReset)
+# define XML_SetEntityDeclHandler XMLABI(SetEntityDeclHandler)
+# define XML_SetElementHandler XMLABI(SetElementHandler)
+# define XML_SetStartElementHandler XMLABI(SetStartElementHandler)
+# define XML_SetEndElementHandler XMLABI(SetEndElementHandler)
+# define XML_SetCharacterDataHandler XMLABI(SetCharacterDataHandler)
+# define XML_SetProcessingInstructionHandler XMLABI(SetProcessingInstructionHandler)
+# define XML_SetCommentHandler XMLABI(SetCommentHandler)
+# define XML_SetCdataSectionHandler XMLABI(SetCdataSectionHandler)
+# define XML_SetStartCdataSectionHandler XMLABI(SetStartCdataSectionHandler)
+# define XML_SetEndCdataSectionHandler XMLABI(SetEndCdataSectionHandler)
+# define XML_SetDefaultHandler XMLABI(SetDefaultHandler)
+# define XML_SetDefaultHandlerExpand XMLABI(SetDefaultHandlerExpand)
+# define XML_SetDoctypeDeclHandler XMLABI(SetDoctypeDeclHandler)
+# define XML_SetStartDoctypeDeclHandler XMLABI(SetStartDoctypeDeclHandler)
+# define XML_SetEndDoctypeDeclHandler XMLABI(SetEndDoctypeDeclHandler)
+# define XML_SetUnparsedEntityDeclHandler XMLABI(SetUnparsedEntityDeclHandler)
+# define XML_SetNotationDeclHandler XMLABI(SetNotationDeclHandler)
+# define XML_SetNamespaceDeclHandler XMLABI(SetNamespaceDeclHandler)
+# define XML_SetStartNamespaceDeclHandler XMLABI(SetStartNamespaceDeclHandler)
+# define XML_SetEndNamespaceDeclHandler XMLABI(SetEndNamespaceDeclHandler)
+# define XML_SetNotStandaloneHandler XMLABI(SetNotStandaloneHandler)
+# define XML_SetExternalEntityRefHandler XMLABI(SetExternalEntityRefHandler)
+# define XML_SetExternalEntityRefHandlerArg XMLABI(SetExternalEntityRefHandlerArg)
+# define XML_SetSkippedEntityHandler XMLABI(SetSkippedEntityHandler)
+# define XML_SetUnknownEncodingHandler XMLABI(SetUnknownEncodingHandler)
+# define XML_DefaultCurrent XMLABI(DefaultCurrent)
+# define XML_SetReturnNSTriplet XMLABI(SetReturnNSTriplet)
+# define XML_SetUserData XMLABI(SetUserData)
+# define XML_SetEncoding XMLABI(SetEncoding)
+# define XML_UseParserAsHandlerArg XMLABI(UseParserAsHandlerArg)
+# define XML_UseForeignDTD XMLABI(UseForeignDTD)
+# define XML_SetBase XMLABI(SetBase)
+# define XML_GetBase XMLABI(GetBase)
+# define XML_GetSpecifiedAttributeCount XMLABI(GetSpecifiedAttributeCount)
+# define XML_GetIdAttributeIndex XMLABI(GetIdAttributeIndex)
+# define XML_Parse XMLABI(Parse)
+# define XML_GetBuffer XMLABI(GetBuffer)
+# define XML_ParseBuffer XMLABI(ParseBuffer)
+# define XML_StopParser XMLABI(StopParser)
+# define XML_ResumeParser XMLABI(ResumeParser)
+# define XML_GetParsingStatus XMLABI(GetParsingStatus)
+# define XML_ExternalEntityParserCreate XMLABI(ExternalEntityParserCreate)
+# define XML_SetParamEntityParsing XMLABI(SetParamEntityParsing)
+# define XML_GetErrorCode XMLABI(GetErrorCode)
+# define XML_GetCurrentByteCount XMLABI(GetCurrentByteCount)
+# define XML_GetInputContext XMLABI(GetInputContext)
+# define XML_FreeContentModel XMLABI(FreeContentModel)
+# define XML_MemMalloc XMLABI(MemMalloc)
+# define XML_MemRealloc XMLABI(MemRealloc)
+# define XML_MemFree XMLABI(MemFree)
+# define XML_ParserFree XMLABI(ParserFree)
+# define XML_ErrorString XMLABI(ErrorString)
+# define XML_ExpatVersion XMLABI(ExpatVersion)
+# define XML_ExpatVersionInfo XMLABI(ExpatVersionInfo)
+# define XML_GetFeatureList XMLABI(GetFeatureList)
+#endif
+
#ifdef __cplusplus
}
#endif