Home | History | Annotate | Download | only in win32
      1 <?xml version="1.0"?>
      2 <!-- 
      3 	win32/defgen.xsl
      4 	This stylesheet is used to transform doc/libxml2-api.xml into a pseudo-source,
      5 	which can then be preprocessed to get the .DEF file for the Microsoft's linker.
      6 	
      7 	Use any XSLT processor to produce a file called libxml2.def.src in the win32
      8 	subdirectory, for example, run xsltproc from the win32 subdirectory:
      9 	
     10 	  xsltproc -o libxml2.def.src defgen.xsl ../doc/libxml2-api.xml
     11 	  
     12 	Once that finishes, rest assured, the Makefile will know what to do with the
     13 	generated file. 
     14 
     15 	April 2003, Igor Zlatkovic <igor (a] zlatkovic.com>
     16 -->
     17 <!DOCTYPE xsl:stylesheet [ <!ENTITY nl '&#xd;&#xa;'> ]>
     18 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     19 	<xsl:strip-space elements="*"/>
     20 	<xsl:output method="text"/>
     21 	<xsl:template match="/">
     22 		<xsl:text>#define LIBXML2_COMPILING_MSCCDEF&nl;</xsl:text>
     23 		<xsl:text>#include "../include/libxml/xmlversion.h"&nl;</xsl:text>
     24 		<xsl:text>LIBRARY libxml2&nl;</xsl:text>
     25 		<xsl:text>EXPORTS&nl;</xsl:text>
     26 		<xsl:for-each select="/api/symbols/*[self::variable or self::function]">
     27 			<!-- Basic tests -->
     28 			<xsl:if test="@file = 'c14n'">
     29 				<xsl:text>#ifdef LIBXML_C14N_ENABLED&nl;</xsl:text>
     30 			</xsl:if>
     31 			<xsl:if test="@file = 'catalog'">
     32 				<xsl:text>#ifdef LIBXML_CATALOG_ENABLED&nl;</xsl:text>
     33 			</xsl:if>
     34 			<xsl:if test="@file = 'debugXML'">
     35 				<xsl:text>#ifdef LIBXML_DEBUG_ENABLED&nl;</xsl:text>
     36 			</xsl:if>
     37 			<xsl:if test="@file = 'DOCBparser'">
     38 				<xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text>
     39 			</xsl:if>
     40 			<xsl:if test="(@file = 'HTMLparser') 
     41 					or (@file = 'HTMLtree')">
     42 				<xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text>
     43 			</xsl:if>
     44 			<xsl:if test="@file = 'nanohttp'">
     45 				<xsl:text>#ifdef LIBXML_HTTP_ENABLED&nl;</xsl:text>
     46 			</xsl:if>
     47 			<xsl:if test="@file = 'nanoftp'">
     48 				<xsl:text>#ifdef LIBXML_FTP_ENABLED&nl;</xsl:text>
     49 			</xsl:if>
     50 			<xsl:if test="(@file = 'relaxng') 
     51 					or (@file = 'xmlschemas') 
     52 					or (@file = 'xmlschemastypes')">
     53 				<xsl:text>#ifdef LIBXML_SCHEMAS_ENABLED&nl;</xsl:text>
     54 			</xsl:if>
     55 			<xsl:if test="@file = 'xinclude'">
     56 				<xsl:text>#ifdef LIBXML_XINCLUDE_ENABLED&nl;</xsl:text>
     57 			</xsl:if>
     58 			<xsl:if test="@file = 'xlink'">
     59 				<xsl:text>#ifdef LIBXML_XLINK_ENABLED&nl;</xsl:text>
     60 			</xsl:if>
     61 			<xsl:if test="@file = 'xmlautomata'">
     62 				<xsl:text>#ifdef LIBXML_AUTOMATA_ENABLED&nl;</xsl:text>
     63 			</xsl:if>
     64 			<xsl:if test="(@file = 'xmlregexp') 
     65 					or (@file = 'xmlunicode')">
     66 				<xsl:text>#ifdef LIBXML_REGEXP_ENABLED&nl;</xsl:text>
     67 			</xsl:if>
     68 			<xsl:if test="(@file = 'xpath') 
     69 					or (@file = 'xpathInternals')">
     70 				<xsl:text>#ifdef LIBXML_XPATH_ENABLED&nl;</xsl:text>
     71 			</xsl:if>
     72 			<xsl:if test="@file = 'xpointer'">
     73 				<xsl:text>#ifdef LIBXML_XPTR_ENABLED&nl;</xsl:text>
     74 			</xsl:if>
     75 			<!-- Extended tests -->
     76 			<xsl:if test="(@name = 'htmlDefaultSAXHandlerInit') 
     77 					or (@name = 'htmlInitAutoClose') 
     78 					or (@name = 'htmlCreateFileParserCtxt') 
     79 					or (@name = 'inithtmlDefaultSAXHandler')
     80 					or (@name = 'xmlIsXHTML') 
     81 					or (@name = 'xmlIOHTTPOpenW') 
     82 					or (@name = 'xmlRegisterHTTPPostCallbacks') 
     83 					or (@name = 'xmlIOHTTPMatch')
     84 					or (@name = 'xmlIOHTTPOpen') 
     85 					or (@name = 'xmlIOHTTPRead') 
     86 					or (@name = 'xmlIOHTTPClose')">
     87 				<xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text>
     88 			</xsl:if>
     89 			<xsl:if test="(@name = 'docbDefaultSAXHandlerInit') 
     90 					or (@name = 'initdocbDefaultSAXHandler')">
     91 				<xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text>
     92 			</xsl:if>
     93 			<xsl:if test="@name = 'xmlValidBuildContentModel'">
     94 				<xsl:text>#ifdef LIBXML_REGEXP_ENABLED&nl;</xsl:text>
     95 			</xsl:if>
     96 			<xsl:if test="(@name = 'xmlIOFTPMatch') 
     97 					or (@name = 'xmlIOFTPOpen') 
     98 					or (@name = 'xmlIOFTPRead') 
     99 					or (@name = 'xmlIOFTPClose')">
    100 				<xsl:text>#ifdef LIBXML_FTP_ENABLED&nl;</xsl:text>
    101 			</xsl:if>
    102 			<xsl:if test="(@name = 'xmlTextReaderRelaxNGValidate') 
    103 					or (@name = 'xmlTextReaderRelaxNGSetSchema')">
    104 				<xsl:text>#ifdef LIBXML_SCHEMAS_ENABLED&nl;</xsl:text>
    105 			</xsl:if>
    106 			<xsl:if test="(@name = 'xmlXPathDebugDumpObject') 
    107 					or (@name = 'xmlXPathDebugDumpCompExpr')">
    108 				<xsl:text>#ifdef LIBXML_DEBUG_ENABLED&nl;</xsl:text>
    109 			</xsl:if>
    110 			<xsl:if test="(@name = 'xmlMallocLoc') 
    111 					or (@name = 'xmlMallocAtomicLoc') 
    112 					or (@name = 'xmlReallocLoc') 
    113 					or (@name = 'xmlMemStrdupLoc')">
    114 				<xsl:text>#ifdef DEBUG_MEMORY_LOCATION&nl;</xsl:text>
    115 			</xsl:if>
    116 			<!-- Symbol -->
    117 			<xsl:choose>
    118 				<xsl:when test="(@name = 'xmlMalloc') 
    119 						or (@name = 'xmlMallocAtomic') 
    120 						or (@name = 'xmlRealloc') 
    121 						or (@name = 'xmlFree') 
    122 						or (@name = 'xmlMemStrdup')">
    123 					<xsl:text>#ifdef LIBXML_THREAD_ALLOC_ENABLED&nl;</xsl:text>
    124 					<xsl:text>__</xsl:text>
    125 					<xsl:value-of select="@name"/>
    126 					<xsl:text>&nl;</xsl:text>
    127 					<xsl:text>#else&nl;</xsl:text>
    128 					<xsl:value-of select="@name"/>
    129 					<xsl:text> DATA&nl;</xsl:text>
    130 					<xsl:text>#endif&nl;</xsl:text>
    131 				</xsl:when>
    132 				<xsl:when test="(@name = 'docbDefaultSAXHandler') 
    133 						or (@name = 'htmlDefaultSAXHandler') 
    134 						or (@name = 'oldXMLWDcompatibility') 
    135 						or (@name = 'xmlBufferAllocScheme') 
    136 						or (@name = 'xmlDefaultBufferSize') 
    137 						or (@name = 'xmlDefaultSAXHandler') 
    138 						or (@name = 'xmlDefaultSAXLocator') 
    139 						or (@name = 'xmlDoValidityCheckingDefaultValue') 
    140 						or (@name = 'xmlGenericError') 
    141 						or (@name = 'xmlGenericErrorContext') 
    142 						or (@name = 'xmlGetWarningsDefaultValue') 
    143 						or (@name = 'xmlIndentTreeOutput') 
    144 						or (@name = 'xmlTreeIndentString') 
    145 						or (@name = 'xmlKeepBlanksDefaultValue') 
    146 						or (@name = 'xmlLineNumbersDefaultValue') 
    147 						or (@name = 'xmlLoadExtDtdDefaultValue') 
    148 						or (@name = 'xmlParserDebugEntities') 
    149 						or (@name = 'xmlParserVersion') 
    150 						or (@name = 'xmlPedanticParserDefaultValue') 
    151 						or (@name = 'xmlSaveNoEmptyTags') 
    152 						or (@name = 'xmlSubstituteEntitiesDefaultValue') 
    153 						or (@name = 'xmlRegisterNodeDefaultValue') 
    154 						or (@name = 'xmlDeregisterNodeDefaultValue')">
    155 					<xsl:text>#ifdef LIBXML_THREAD_ENABLED&nl;</xsl:text>
    156 					<xsl:if test="@name = 'docbDefaultSAXHandler'">
    157 						<xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text>
    158 					</xsl:if>
    159 					<xsl:if test="@name = 'htmlDefaultSAXHandler'">
    160 						<xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text>
    161 					</xsl:if>
    162 					<xsl:text>__</xsl:text>
    163 					<xsl:value-of select="@name"/>
    164 					<xsl:text>&nl;</xsl:text>
    165 					<xsl:if test="@name = 'docbDefaultSAXHandler'">
    166 						<xsl:text>#endif&nl;</xsl:text>
    167 					</xsl:if>
    168 					<xsl:if test="@name = 'htmlDefaultSAXHandler'">
    169 						<xsl:text>#endif&nl;</xsl:text>
    170 					</xsl:if>
    171 					<xsl:text>#else&nl;</xsl:text>
    172 					<xsl:if test="@name = 'docbDefaultSAXHandler'">
    173 						<xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text>
    174 					</xsl:if>
    175 					<xsl:if test="@name = 'htmlDefaultSAXHandler'">
    176 						<xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text>
    177 					</xsl:if>
    178 					<xsl:value-of select="@name"/>
    179 					<xsl:text> DATA&nl;</xsl:text>
    180 					<xsl:if test="@name = 'docbDefaultSAXHandler'">
    181 						<xsl:text>#endif&nl;</xsl:text>
    182 					</xsl:if>
    183 					<xsl:if test="@name = 'htmlDefaultSAXHandler'">
    184 						<xsl:text>#endif&nl;</xsl:text>
    185 					</xsl:if>
    186 					<xsl:text>#endif&nl;</xsl:text>
    187 				</xsl:when>
    188 				<xsl:otherwise>
    189 					<xsl:value-of select="@name"/>
    190 					<xsl:if test="self::variable">
    191 						<xsl:text> DATA</xsl:text>
    192 					</xsl:if>
    193 					<xsl:text>&nl;</xsl:text>
    194 				</xsl:otherwise>
    195 			</xsl:choose>
    196 			<!-- Basic tests (close) -->
    197 			<xsl:if test="@file = 'c14n'">
    198 				<xsl:text>#endif&nl;</xsl:text>
    199 			</xsl:if>
    200 			<xsl:if test="@file = 'catalog'">
    201 				<xsl:text>#endif&nl;</xsl:text>
    202 			</xsl:if>
    203 			<xsl:if test="@file = 'debugXML'">
    204 				<xsl:text>#endif&nl;</xsl:text>
    205 			</xsl:if>
    206 			<xsl:if test="@file = 'DOCBparser'">
    207 				<xsl:text>#endif&nl;</xsl:text>
    208 			</xsl:if>
    209 			<xsl:if test="(@file = 'HTMLparser') 
    210 					or (@file = 'HTMLtree')">
    211 				<xsl:text>#endif&nl;</xsl:text>
    212 			</xsl:if>
    213 			<xsl:if test="@file = 'nanohttp'">
    214 				<xsl:text>#endif&nl;</xsl:text>
    215 			</xsl:if>
    216 			<xsl:if test="@file = 'nanoftp'">
    217 				<xsl:text>#endif&nl;</xsl:text>
    218 			</xsl:if>
    219 			<xsl:if test="(@file = 'relaxng') 
    220 					or (@file = 'xmlschemas') 
    221 					or (@file = 'xmlschemastypes')">
    222 				<xsl:text>#endif&nl;</xsl:text>
    223 			</xsl:if>
    224 			<xsl:if test="@file = 'xinclude'">
    225 				<xsl:text>#endif&nl;</xsl:text>
    226 			</xsl:if>
    227 			<xsl:if test="@file = 'xlink'">
    228 				<xsl:text>#endif&nl;</xsl:text>
    229 			</xsl:if>
    230 			<xsl:if test="@file = 'xmlautomata'">
    231 				<xsl:text>#endif&nl;</xsl:text>
    232 			</xsl:if>
    233 			<xsl:if test="(@file = 'xmlregexp') 
    234 					or (@file = 'xmlunicode')">
    235 				<xsl:text>#endif&nl;</xsl:text>
    236 			</xsl:if>
    237 			<xsl:if test="(@file = 'xpath') 
    238 					or (@file = 'xpathInternals')">
    239 				<xsl:text>#endif&nl;</xsl:text>
    240 			</xsl:if>
    241 			<xsl:if test="@file = 'xpointer'">
    242 				<xsl:text>#endif&nl;</xsl:text>
    243 			</xsl:if>
    244 			<!-- Extended tests (close) -->
    245 			<xsl:if test="(@name = 'htmlDefaultSAXHandlerInit') 
    246 					or (@name = 'htmlInitAutoClose') 
    247 					or (@name = 'htmlCreateFileParserCtxt') 
    248 					or (@name = 'inithtmlDefaultSAXHandler')
    249 					or (@name = 'xmlIsXHTML') 
    250 					or (@name = 'xmlIOHTTPOpenW') 
    251 					or (@name = 'xmlRegisterHTTPPostCallbacks') 
    252 					or (@name = 'xmlIOHTTPMatch')
    253 					or (@name = 'xmlIOHTTPOpen') 
    254 					or (@name = 'xmlIOHTTPRead') 
    255 					or (@name = 'xmlIOHTTPClose')">
    256 				<xsl:text>#endif&nl;</xsl:text>
    257 			</xsl:if>
    258 			<xsl:if test="(@name = 'docbDefaultSAXHandlerInit') 
    259 					or (@name = 'initdocbDefaultSAXHandler')">
    260 				<xsl:text>#endif&nl;</xsl:text>
    261 			</xsl:if>
    262 			<xsl:if test="@name = 'xmlValidBuildContentModel'">
    263 				<xsl:text>#endif&nl;</xsl:text>
    264 			</xsl:if>
    265 			<xsl:if test="(@name = 'xmlIOFTPMatch') 
    266 					or (@name = 'xmlIOFTPOpen') 
    267 					or (@name = 'xmlIOFTPRead') 
    268 					or (@name = 'xmlIOFTPClose')">
    269 				<xsl:text>#endif&nl;</xsl:text>
    270 			</xsl:if>
    271 			<xsl:if test="(@name = 'xmlTextReaderRelaxNGValidate') 
    272 					or (@name = 'xmlTextReaderRelaxNGSetSchema')">
    273 				<xsl:text>#endif&nl;</xsl:text>
    274 			</xsl:if>
    275 			<xsl:if test="(@name = 'xmlXPathDebugDumpObject') 
    276 					or (@name = 'xmlXPathDebugDumpCompExpr')">
    277 				<xsl:text>#endif&nl;</xsl:text>
    278 			</xsl:if>
    279 			<xsl:if test="(@name = 'xmlMallocLoc') 
    280 					or (@name = 'xmlMallocAtomicLoc') 
    281 					or (@name = 'xmlReallocLoc') 
    282 					or (@name = 'xmlMemStrdupLoc')">
    283 				<xsl:text>#endif&nl;</xsl:text>
    284 			</xsl:if>
    285 		</xsl:for-each>
    286 	</xsl:template>
    287 </xsl:stylesheet>
    288 
    289