123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- <?xml version="1.0"?>
- <!--
- win32/defgen.xsl
- This stylesheet is used to transform doc/libxml2-api.xml into a pseudo-source,
- which can then be preprocessed to get the .DEF file for the Microsoft's linker.
-
- Use any XSLT processor to produce a file called libxml2.def.src in the win32
- subdirectory, for example, run xsltproc from the win32 subdirectory:
-
- xsltproc -o libxml2.def.src defgen.xsl ../doc/libxml2-api.xml
-
- Once that finishes, rest assured, the Makefile will know what to do with the
- generated file.
- April 2003, Igor Zlatkovic <igor@zlatkovic.com>
- -->
- <!DOCTYPE xsl:stylesheet [ <!ENTITY nl '
'> ]>
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:strip-space elements="*"/>
- <xsl:output method="text"/>
- <xsl:template match="/">
- <xsl:text>#define LIBXML2_COMPILING_MSCCDEF&nl;</xsl:text>
- <xsl:text>#include "../include/libxml/xmlversion.h"&nl;</xsl:text>
- <xsl:text>LIBRARY libxml2&nl;</xsl:text>
- <xsl:text>EXPORTS&nl;</xsl:text>
- <xsl:for-each select="/api/symbols/*[self::variable or self::function]">
- <!-- Basic tests -->
- <xsl:if test="@file = 'c14n'">
- <xsl:text>#ifdef LIBXML_C14N_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'catalog'">
- <xsl:text>#ifdef LIBXML_CATALOG_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'debugXML'">
- <xsl:text>#ifdef LIBXML_DEBUG_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'DOCBparser'">
- <xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@file = 'HTMLparser')
- or (@file = 'HTMLtree')">
- <xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'nanohttp'">
- <xsl:text>#ifdef LIBXML_HTTP_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'nanoftp'">
- <xsl:text>#ifdef LIBXML_FTP_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@file = 'relaxng')
- or (@file = 'xmlschemas')
- or (@file = 'xmlschemastypes')">
- <xsl:text>#ifdef LIBXML_SCHEMAS_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'xinclude'">
- <xsl:text>#ifdef LIBXML_XINCLUDE_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'xlink'">
- <xsl:text>#ifdef LIBXML_XLINK_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'xmlautomata'">
- <xsl:text>#ifdef LIBXML_AUTOMATA_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@file = 'xmlregexp')
- or (@file = 'xmlunicode')">
- <xsl:text>#ifdef LIBXML_REGEXP_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@file = 'xpath')
- or (@file = 'xpathInternals')">
- <xsl:text>#ifdef LIBXML_XPATH_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'xpointer'">
- <xsl:text>#ifdef LIBXML_XPTR_ENABLED&nl;</xsl:text>
- </xsl:if>
- <!-- Extended tests -->
- <xsl:if test="(@name = 'htmlDefaultSAXHandlerInit')
- or (@name = 'htmlInitAutoClose')
- or (@name = 'htmlCreateFileParserCtxt')
- or (@name = 'inithtmlDefaultSAXHandler')
- or (@name = 'xmlIsXHTML')
- or (@name = 'xmlIOHTTPOpenW')
- or (@name = 'xmlRegisterHTTPPostCallbacks')
- or (@name = 'xmlIOHTTPMatch')
- or (@name = 'xmlIOHTTPOpen')
- or (@name = 'xmlIOHTTPRead')
- or (@name = 'xmlIOHTTPClose')">
- <xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'docbDefaultSAXHandlerInit')
- or (@name = 'initdocbDefaultSAXHandler')">
- <xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@name = 'xmlValidBuildContentModel'">
- <xsl:text>#ifdef LIBXML_REGEXP_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'xmlIOFTPMatch')
- or (@name = 'xmlIOFTPOpen')
- or (@name = 'xmlIOFTPRead')
- or (@name = 'xmlIOFTPClose')">
- <xsl:text>#ifdef LIBXML_FTP_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'xmlTextReaderRelaxNGValidate')
- or (@name = 'xmlTextReaderRelaxNGSetSchema')">
- <xsl:text>#ifdef LIBXML_SCHEMAS_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'xmlXPathDebugDumpObject')
- or (@name = 'xmlXPathDebugDumpCompExpr')">
- <xsl:text>#ifdef LIBXML_DEBUG_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'xmlMallocLoc')
- or (@name = 'xmlMallocAtomicLoc')
- or (@name = 'xmlReallocLoc')
- or (@name = 'xmlMemStrdupLoc')">
- <xsl:text>#ifdef DEBUG_MEMORY_LOCATION&nl;</xsl:text>
- </xsl:if>
- <!-- Symbol -->
- <xsl:choose>
- <xsl:when test="(@name = 'xmlMalloc')
- or (@name = 'xmlMallocAtomic')
- or (@name = 'xmlRealloc')
- or (@name = 'xmlFree')
- or (@name = 'xmlMemStrdup')">
- <xsl:text>#ifdef LIBXML_THREAD_ALLOC_ENABLED&nl;</xsl:text>
- <xsl:text>__</xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text>&nl;</xsl:text>
- <xsl:text>#else&nl;</xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text> DATA&nl;</xsl:text>
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:when>
- <xsl:when test="(@name = 'docbDefaultSAXHandler')
- or (@name = 'htmlDefaultSAXHandler')
- or (@name = 'oldXMLWDcompatibility')
- or (@name = 'xmlBufferAllocScheme')
- or (@name = 'xmlDefaultBufferSize')
- or (@name = 'xmlDefaultSAXHandler')
- or (@name = 'xmlDefaultSAXLocator')
- or (@name = 'xmlDoValidityCheckingDefaultValue')
- or (@name = 'xmlGenericError')
- or (@name = 'xmlGenericErrorContext')
- or (@name = 'xmlGetWarningsDefaultValue')
- or (@name = 'xmlIndentTreeOutput')
- or (@name = 'xmlTreeIndentString')
- or (@name = 'xmlKeepBlanksDefaultValue')
- or (@name = 'xmlLineNumbersDefaultValue')
- or (@name = 'xmlLoadExtDtdDefaultValue')
- or (@name = 'xmlParserDebugEntities')
- or (@name = 'xmlParserVersion')
- or (@name = 'xmlPedanticParserDefaultValue')
- or (@name = 'xmlSaveNoEmptyTags')
- or (@name = 'xmlSubstituteEntitiesDefaultValue')
- or (@name = 'xmlRegisterNodeDefaultValue')
- or (@name = 'xmlDeregisterNodeDefaultValue')">
- <xsl:text>#ifdef LIBXML_THREAD_ENABLED&nl;</xsl:text>
- <xsl:if test="@name = 'docbDefaultSAXHandler'">
- <xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@name = 'htmlDefaultSAXHandler'">
- <xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:text>__</xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text>&nl;</xsl:text>
- <xsl:if test="@name = 'docbDefaultSAXHandler'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@name = 'htmlDefaultSAXHandler'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:text>#else&nl;</xsl:text>
- <xsl:if test="@name = 'docbDefaultSAXHandler'">
- <xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@name = 'htmlDefaultSAXHandler'">
- <xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text>
- </xsl:if>
- <xsl:value-of select="@name"/>
- <xsl:text> DATA&nl;</xsl:text>
- <xsl:if test="@name = 'docbDefaultSAXHandler'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@name = 'htmlDefaultSAXHandler'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@name"/>
- <xsl:if test="self::variable">
- <xsl:text> DATA</xsl:text>
- </xsl:if>
- <xsl:text>&nl;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!-- Basic tests (close) -->
- <xsl:if test="@file = 'c14n'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'catalog'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'debugXML'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'DOCBparser'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@file = 'HTMLparser')
- or (@file = 'HTMLtree')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'nanohttp'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'nanoftp'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@file = 'relaxng')
- or (@file = 'xmlschemas')
- or (@file = 'xmlschemastypes')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'xinclude'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'xlink'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'xmlautomata'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@file = 'xmlregexp')
- or (@file = 'xmlunicode')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@file = 'xpath')
- or (@file = 'xpathInternals')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@file = 'xpointer'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <!-- Extended tests (close) -->
- <xsl:if test="(@name = 'htmlDefaultSAXHandlerInit')
- or (@name = 'htmlInitAutoClose')
- or (@name = 'htmlCreateFileParserCtxt')
- or (@name = 'inithtmlDefaultSAXHandler')
- or (@name = 'xmlIsXHTML')
- or (@name = 'xmlIOHTTPOpenW')
- or (@name = 'xmlRegisterHTTPPostCallbacks')
- or (@name = 'xmlIOHTTPMatch')
- or (@name = 'xmlIOHTTPOpen')
- or (@name = 'xmlIOHTTPRead')
- or (@name = 'xmlIOHTTPClose')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'docbDefaultSAXHandlerInit')
- or (@name = 'initdocbDefaultSAXHandler')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="@name = 'xmlValidBuildContentModel'">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'xmlIOFTPMatch')
- or (@name = 'xmlIOFTPOpen')
- or (@name = 'xmlIOFTPRead')
- or (@name = 'xmlIOFTPClose')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'xmlTextReaderRelaxNGValidate')
- or (@name = 'xmlTextReaderRelaxNGSetSchema')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'xmlXPathDebugDumpObject')
- or (@name = 'xmlXPathDebugDumpCompExpr')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- <xsl:if test="(@name = 'xmlMallocLoc')
- or (@name = 'xmlMallocAtomicLoc')
- or (@name = 'xmlReallocLoc')
- or (@name = 'xmlMemStrdupLoc')">
- <xsl:text>#endif&nl;</xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
- </xsl:stylesheet>
|