blob: a598ff19e5d48d3b9a0309aa608a817c5faeb97a [file] [log] [blame]
Igor Zlatkovic32249d02003-04-28 00:15:59 +00001<?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@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>
William M. Brack41e6bed2003-08-08 10:53:06 +000037 <xsl:if test="@file = 'DOCBparser'">
Igor Zlatkovic32249d02003-04-28 00:15:59 +000038 <xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text>
39 </xsl:if>
40 <xsl:if test="(@file = 'HTMLparser')
William M. Brack41e6bed2003-08-08 10:53:06 +000041 or (@file = 'HTMLtree')">
Igor Zlatkovic32249d02003-04-28 00:15:59 +000042 <xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text>
43 </xsl:if>
William M. Brack41e6bed2003-08-08 10:53:06 +000044 <xsl:if test="@file = 'nanohttp'">
45 <xsl:text>#ifdef LIBXML_HTTP_ENABLED&nl;</xsl:text>
46 </xsl:if>
Igor Zlatkovic32249d02003-04-28 00:15:59 +000047 <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')
Igor Zlatkovic451c8a92003-04-28 12:55:43 +000052 or (@file = 'xmlschemastypes')">
Igor Zlatkovic32249d02003-04-28 00:15:59 +000053 <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>
Igor Zlatkovic451c8a92003-04-28 12:55:43 +000064 <xsl:if test="(@file = 'xmlregexp')
65 or (@file = 'xmlunicode')">
Igor Zlatkovic32249d02003-04-28 00:15:59 +000066 <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>
William M. Brack41e6bed2003-08-08 10:53:06 +0000206 <xsl:if test="@file = 'DOCBparser'">
Igor Zlatkovic32249d02003-04-28 00:15:59 +0000207 <xsl:text>#endif&nl;</xsl:text>
208 </xsl:if>
209 <xsl:if test="(@file = 'HTMLparser')
William M. Brack41e6bed2003-08-08 10:53:06 +0000210 or (@file = 'HTMLtree')">
211 <xsl:text>#endif&nl;</xsl:text>
212 </xsl:if>
213 <xsl:if test="@file = 'nanohttp'">
Igor Zlatkovic32249d02003-04-28 00:15:59 +0000214 <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')
Igor Zlatkovic451c8a92003-04-28 12:55:43 +0000221 or (@file = 'xmlschemastypes')">
Igor Zlatkovic32249d02003-04-28 00:15:59 +0000222 <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>
Igor Zlatkovic451c8a92003-04-28 12:55:43 +0000233 <xsl:if test="(@file = 'xmlregexp')
234 or (@file = 'xmlunicode')">
Igor Zlatkovic32249d02003-04-28 00:15:59 +0000235 <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>
Igor Zlatkovic32249d02003-04-28 00:15:59 +0000286 </xsl:template>
287</xsl:stylesheet>
288