Edit

kc3-lang/libxml2/win32/defgen.xsl

Branch :

  • Show log

    Commit

  • Author : William M. Brack
    Date : 2003-08-08 10:53:06
    Hash : 41e6bed5
    Message : Bug 119343 (with apologies to Igor) - Enhanced handling of docb and * win32/defgen.xsl, win32/libxml2.def.src: Bug 119343 (with apologies to Igor) - Enhanced handling of docb and nanohttp.

  • win32/defgen.xsl
  • <?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 '&#xd;&#xa;'> ]>
    <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>