1 <?xml version=
"1.0" encoding=
"utf-8"?>
2 <xsl:stylesheet version=
"1.0"
3 xmlns:
xsl=
"http://www.w3.org/1999/XSL/Transform">
4 <xsl:output method=
"text" />
5 <xsl:strip-space elements=
"*"/>
6 <xsl:template match=
"/lib">
7 <xsl:text>#include
<Qt
>
</xsl:text>
8 <xsl:apply-templates select=
"function|type"/>
11 <xsl:template match=
"type">
12 <xsl:if test=
"struct">
13 <xsl:text>class
</xsl:text>
14 <xsl:value-of select=
"@name"/>
15 <xsl:if test=
"struct/*">
16 <xsl:if test=
"*/base">
17 <xsl:text> :
</xsl:text>
18 <xsl:for-each select=
"*/base">
19 <xsl:if test='@virtual'
>
20 <xsl:text>virtual
</xsl:text>
22 <xsl:value-of select=
"@access"/>
23 <xsl:text> </xsl:text>
24 <xsl:value-of select=
"@class"/>
25 <xsl:if test=
"position() < last()">
26 <xsl:text>,
</xsl:text>
30 <xsl:text> {

</xsl:text>
31 <xsl:for-each select=
"struct/method|struct/function">
32 <xsl:if test=
"position() = 1 or not(@access = preceding-sibling::*[1]/@access)">
33 <xsl:value-of select=
"@access"/>
34 <xsl:text>:

</xsl:text>
36 <xsl:text>	</xsl:text>
37 <xsl:if test=
"virtual">
38 <xsl:text>virtual
</xsl:text>
40 <xsl:if test=
"name() = 'function'">
41 <xsl:text>static
</xsl:text>
44 <xsl:variable name=
"args">
45 <xsl:for-each select=
"param">
46 <xsl:call-template name=
"declare-var">
47 <xsl:with-param name=
"type" select=
"*"/>
48 <xsl:with-param name=
"var" select=
"@name"/>
50 <xsl:if test=
"position() < last()"><xsl:text>,
</xsl:text></xsl:if>
54 <xsl:variable name=
"method">
55 <xsl:call-template name=
"substring-after-last">
56 <xsl:with-param name=
"text" select=
"@name"/>
57 <xsl:with-param name=
"chars">::
</xsl:with-param>
59 <xsl:value-of select=
"concat('(', $args, ')')"/>
62 <xsl:call-template name=
"declare-var">
63 <xsl:with-param name=
"type" select=
"return/*"/>
64 <xsl:with-param name=
"var" select=
"$method"/>
67 <xsl:if test=
"this//@qualifier">
68 <xsl:text> </xsl:text>
69 <xsl:value-of select=
"this//@qualifier"/>
71 <!--<xsl:value-of select="@name"/>-->
72 <xsl:text>;

</xsl:text>
74 <xsl:text>}
</xsl:text>
76 <xsl:text>;


</xsl:text>
80 <xsl:template match=
"function">
81 <xsl:variable name=
"args">
82 <xsl:for-each select=
"param">
83 <xsl:call-template name=
"declare-var">
84 <xsl:with-param name=
"type" select=
"*"/>
85 <xsl:with-param name=
"var" select=
"@name"/>
87 <xsl:if test=
"position() < last()"><xsl:text>,
</xsl:text></xsl:if>
90 <xsl:variable name=
"f">
91 <xsl:call-template name=
"declare-var">
92 <xsl:with-param name=
"var">
93 <xsl:value-of select=
"@name"/>
94 <xsl:value-of select=
"concat('(', $args, ')')"/>
96 <xsl:with-param name=
"type" select=
"return"/>
99 <xsl:value-of select=
"$f"/>
100 <xsl:text>;

</xsl:text>
103 <xsl:template name=
"declare-var">
104 <xsl:param name=
"var"/>
105 <xsl:param name=
"type"/>
106 <xsl:variable name=
"varname">
108 <xsl:value-of select=
"concat(' ', $var)"/>
111 <xsl:variable name=
"v">
112 <xsl:apply-templates select=
"$type" mode=
"typedef">
113 <xsl:with-param name=
"var"><xsl:text>#
</xsl:text></xsl:with-param>
114 </xsl:apply-templates>
116 <xsl:value-of select='concat(substring-before($v,
"#"), $varname, substring-after($v,
"#"))'
/>
120 <xsl:template match=
"pointer|reference" mode=
"typedef">
121 <xsl:param name=
"var"/>
122 <xsl:apply-templates select=
"type|function|pointer|reference" mode=
"typedef">
123 <xsl:with-param name=
"var">
124 <xsl:value-of select=
"substring-before($var, '#')"/>
126 <xsl:when test=
"name() = 'pointer'"><xsl:text>*
</xsl:text></xsl:when>
127 <xsl:otherwise><xsl:text>&</xsl:text></xsl:otherwise>
129 <xsl:if test=
"@qualifier">
130 <xsl:text> </xsl:text>
131 <xsl:value-of select=
"@qualifier"/>
133 <xsl:text>#
</xsl:text>
134 <xsl:value-of select=
"substring-after($var, '#')"/>
136 </xsl:apply-templates>
139 <!-- ugly cut and paste... refactor -->
140 <xsl:template match=
"function" mode=
"typedef">
141 <xsl:param name=
"var"/>
142 <xsl:variable name=
"args">
143 <xsl:for-each select=
"param">
144 <xsl:call-template name=
"declare-var">
145 <xsl:with-param name=
"type" select=
"*"/>
146 <xsl:with-param name=
"var" select=
"@name"/>
148 <xsl:if test=
"position() < last()"><xsl:text>,
</xsl:text></xsl:if>
151 <xsl:variable name=
"f">
152 <xsl:call-template name=
"declare-var">
153 <xsl:with-param name=
"var">
154 <xsl:value-of select=
"concat('(', $var, ')')"/>
155 <xsl:value-of select=
"concat('(', $args, ')')"/>
157 <xsl:with-param name=
"type" select=
"return"/>
160 <xsl:value-of select=
"$f"/>
163 <xsl:template match=
"type" mode=
"typedef">
164 <xsl:param name=
"var"/>
165 <xsl:if test=
"@qualifier">
166 <xsl:value-of select=
"@qualifier"/>
167 <xsl:text> </xsl:text>
169 <xsl:value-of select=
"@name"/>
170 <xsl:value-of select=
"$var"/>
174 <xsl:template name=
"substring-after-last">
176 <xsl:param name=
"text"/>
177 <xsl:param name=
"chars"/>
181 <xsl:when test=
"contains($text, $chars)">
182 <xsl:variable name=
"last" select=
"substring-after($text, $chars)"/>
185 <xsl:when test=
"contains($last, $chars)">
187 <xsl:call-template name=
"substring-after-last">
188 <xsl:with-param name=
"text" select=
"$last"/>
189 <xsl:with-param name=
"chars" select=
"$chars"/>
193 <xsl:value-of select=
"$last"/>
200 <xsl:value-of select=
"$text"/>