Blame win32/defgen.xsl

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