~ubuntu-branches/ubuntu/warty/aqsis/warty

« back to all changes in this revision

Viewing changes to render/apicache.xsl

  • Committer: Bazaar Package Importer
  • Author(s): LaMont Jones
  • Date: 2004-08-24 07:25:04 UTC
  • Revision ID: james.westby@ubuntu.com-20040824072504-zf993vnevvisdsvb
Tags: upstream-0.9.1
ImportĀ upstreamĀ versionĀ 0.9.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8" ?>
 
2
 
 
3
 
 
4
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
5
 
 
6
 
 
7
        <xsl:output method="text"/>
 
8
        <xsl:strip-space elements="RiAPI"/>
 
9
 
 
10
 
 
11
        <!--    API     -->
 
12
        <xsl:template match="RiAPI">
 
13
                <!--    Procedures      -->
 
14
                <xsl:apply-templates select="Procedures/Procedure"/>
 
15
                <xsl:apply-templates select="Procedures/Procedure" mode="macro"/>
 
16
        </xsl:template>
 
17
 
 
18
 
 
19
        <!--    Procedure       -->
 
20
        <xsl:template match="Procedure">
 
21
                <xsl:if test="not(./NoCache)">
 
22
                        <xsl:value-of select="concat('class ', @name, 'Cache : public RiCacheBase&#xa;')"/>
 
23
                        <xsl:text>{&#xa;</xsl:text>
 
24
                        <xsl:text>public:&#xa;</xsl:text>
 
25
                        <xsl:call-template name="Constructor"/>
 
26
                        <xsl:call-template name="Destructor"/>
 
27
                        <xsl:value-of select="concat('&#x9;virtual void ReCall()&#xa;&#x9;{&#xa;&#x9;&#x9;', @name)"/>
 
28
                        <xsl:if test="Arguments/Argument[last()]/@type = 'PARAMETERLIST'">
 
29
                                <xsl:text>V</xsl:text>
 
30
                        </xsl:if>
 
31
                        <xsl:text>(</xsl:text>
 
32
                        <xsl:apply-templates select="Arguments/Argument" mode="recall_args"/>
 
33
                        <xsl:text>);&#xa;</xsl:text>
 
34
                        <xsl:text>&#x9;}&#xa;</xsl:text>
 
35
                        <xsl:text>&#xa;</xsl:text>
 
36
                        <xsl:text>private:&#xa;</xsl:text>
 
37
                        <xsl:apply-templates name="Argument" mode="member_vars" select="Arguments/Argument"/>
 
38
                        <xsl:text>};&#xa;&#xa;</xsl:text>
 
39
                </xsl:if>
 
40
        </xsl:template>
 
41
 
 
42
        <xsl:template match="Procedure" mode="macro">
 
43
                <xsl:if test="not(./NoCache)">
 
44
                        <xsl:value-of select="concat('#define Cache_', @name, '\&#xa;')"/>
 
45
                        <xsl:value-of select="string('&#x9;if( QGetRenderContext()->pCurrentObject()) \&#xa;')"/>
 
46
                        <xsl:text>      { \
 
47
                        QGetRenderContext()->pCurrentObject()->AddCacheCommand( \
 
48
                                        </xsl:text>
 
49
                        <xsl:value-of select="concat('new ', @name, 'Cache(')"/>
 
50
                        <xsl:apply-templates select="Arguments/Argument" mode="macro_call"/>
 
51
                        <xsl:value-of select="string(') ); \&#xa;')"/>
 
52
                        <xsl:text>              return</xsl:text>
 
53
                        <xsl:if test="@return != 'RtVoid'">
 
54
                                <xsl:text>(0)</xsl:text>
 
55
                        </xsl:if>
 
56
                        <xsl:text>;     \
 
57
        }
 
58
        </xsl:text>
 
59
                </xsl:if>
 
60
        </xsl:template>
 
61
 
 
62
        <xsl:template name="Constructor">
 
63
                <xsl:value-of select="concat('&#x9;', @name, 'Cache(')"/>
 
64
                <xsl:apply-templates select="Arguments/Argument" mode="constructor_sig"/>
 
65
                <xsl:text>) : RiCacheBase()&#xa;&#x9;{&#xa;</xsl:text>
 
66
                <xsl:apply-templates select="Arguments/Argument" mode="constructor_copy"/>
 
67
                <xsl:text>&#x9;}&#xa;</xsl:text>
 
68
        </xsl:template>
 
69
 
 
70
        <xsl:template name="Destructor">
 
71
                <xsl:value-of select="concat('&#x9;virtual ~', @name, 'Cache()&#xa;&#x9;{&#xa;')"/>
 
72
                <xsl:apply-templates select="Arguments/Argument" mode="destructor"/>
 
73
                <xsl:text>&#x9;}&#xa;</xsl:text>
 
74
        </xsl:template>
 
75
 
 
76
        <!--    Argument to the cache constructor       -->
 
77
        <xsl:template match="Argument" mode="constructor_sig">
 
78
                <xsl:choose>
 
79
                        <xsl:when test="@type = 'PARAMETERLIST'">
 
80
                                <xsl:text>RtInt count, RtToken tokens[], RtPointer values[]</xsl:text>
 
81
                        </xsl:when>
 
82
                        <xsl:when test="contains( @type, 'Array')">
 
83
                                <xsl:value-of select="concat(substring-before(@type, 'Array'), ' ', @name, '[]')"/>
 
84
                        </xsl:when>
 
85
                        <xsl:otherwise>
 
86
                                <xsl:value-of select="concat(@type, ' ', @name)"/>
 
87
                        </xsl:otherwise>
 
88
                </xsl:choose>
 
89
                <xsl:if test="last() != position()">
 
90
                   <xsl:text>, </xsl:text>
 
91
                </xsl:if>
 
92
        </xsl:template>
 
93
 
 
94
        <!--    Argument copy within the constructor    -->
 
95
        <xsl:template match="Argument" mode="constructor_copy">
 
96
                <xsl:choose>
 
97
                        <xsl:when test="@type = 'PARAMETERLIST'">
 
98
                                <xsl:text>&#x9;&#x9;// Copy the plist here.&#xa;</xsl:text>
 
99
                                <xsl:text>              int constant_size = 1;
 
100
                int uniform_size = 1;
 
101
                int varying_size = 1;
 
102
                int vertex_size = 1;
 
103
                int facevarying_size = 1;
 
104
</xsl:text>
 
105
                                <xsl:if test="../../ConstantSize">
 
106
                                        <xsl:value-of select="../../ConstantSize"/>
 
107
                                </xsl:if>
 
108
                                <xsl:if test="../../UniformSize">
 
109
                                        <xsl:value-of select="../../UniformSize"/>
 
110
                                </xsl:if>
 
111
                                <xsl:if test="../../VaryingSize">
 
112
                                        <xsl:value-of select="../../VaryingSize"/>
 
113
                                </xsl:if>
 
114
                                <xsl:if test="../../VertexSize">
 
115
                                        <xsl:value-of select="../../VertexSize"/>
 
116
                                </xsl:if>
 
117
                                <xsl:if test="../../FaceVaryingSize">
 
118
                                        <xsl:value-of select="../../FaceVaryingSize"/>
 
119
                                </xsl:if>
 
120
                                <xsl:text>              CachePlist(count, tokens, values, constant_size, uniform_size, varying_size, vertex_size, facevarying_size);&#xa;</xsl:text>
 
121
                        </xsl:when>
 
122
                        <xsl:when test="contains( @type, 'Array')">
 
123
                                <xsl:choose>
 
124
                                        <xsl:when test="./Length">
 
125
                                                <xsl:value-of select="./Length"/>
 
126
                                        </xsl:when>
 
127
                                        <xsl:otherwise>
 
128
                                                <xsl:text>&#x9;&#x9;// \note: Need to specify the length method here!&#xa;</xsl:text>
 
129
                                                <xsl:value-of select="concat('&#x9;&#x9;int __', @name, '_length = 1;&#xa;')"/>
 
130
                                        </xsl:otherwise>
 
131
                                </xsl:choose>
 
132
                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, ' = new ', substring-before(@type, 'Array'), '[__', @name, '_length];&#xa;')"/>
 
133
                                <xsl:value-of select="concat('&#x9;&#x9;int __', @name, '_index;&#xa;')"/>
 
134
                                <xsl:value-of select="concat('&#x9;&#x9;for(__', @name, '_index = 0; __', @name, '_index&lt;__', @name, '_length; __', @name, '_index++)&#xa;')"/>
 
135
                                <xsl:text>&#x9;&#x9;{&#xa;</xsl:text>
 
136
                                <xsl:choose>
 
137
                                        <xsl:when test="@type = 'RtTokenArray' or @type = 'RtStringArray'">
 
138
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;int __', @name, '_slength = strlen(', @name, '[__', @name, '_index]);&#xa;')"/>
 
139
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;m_', @name, '[__', @name, '_index] = new char[ __', @name, '_slength + 1 ];&#xa;')"/> 
 
140
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;strcpy(m_', @name, '[__', @name, '_index], ', @name, '[__', @name, '_index]);&#xa;')"/>
 
141
                                        </xsl:when>
 
142
                                        <xsl:when test="@type = 'RtColorArray' or @type = 'RtPointArray'">
 
143
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;m_', @name, '[__', @name, '_index][0] = ', @name, '[__', @name, '_index][0];&#xa;')"/>
 
144
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;m_', @name, '[__', @name, '_index][1] = ', @name, '[__', @name, '_index][1];&#xa;')"/>
 
145
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;m_', @name, '[__', @name, '_index][2] = ', @name, '[__', @name, '_index][2];&#xa;')"/>
 
146
                                        </xsl:when>
 
147
                                        <xsl:otherwise>
 
148
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;m_', @name, '[__', @name, '_index] = ', @name, '[__', @name, '_index];&#xa;')"/>
 
149
                                        </xsl:otherwise>
 
150
                                </xsl:choose>
 
151
                                <xsl:text>&#x9;&#x9;}&#xa;</xsl:text>
 
152
                        </xsl:when>
 
153
                        <xsl:otherwise>
 
154
                                <xsl:choose>
 
155
                                        <xsl:when test="@type = 'RtToken' or @type = 'RtString'">
 
156
                                                <xsl:value-of select="concat('&#x9;&#x9;int __', @name, '_length = strlen(', @name, ');&#xa;')"/>
 
157
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, ' = new char[ __', @name, '_length + 1 ];&#xa;')"/> 
 
158
                                                <xsl:value-of select="concat('&#x9;&#x9;strcpy(m_', @name, ', ', @name, ');&#xa;')"/>
 
159
                                        </xsl:when>
 
160
                                        <xsl:when test="@type = 'RtColor' or @type = 'RtPoint'">
 
161
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, '[0] = ', @name, '[0];&#xa;')"/>
 
162
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, '[1] = ', @name, '[1];&#xa;')"/>
 
163
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, '[2] = ', @name, '[2];&#xa;')"/>
 
164
                                        </xsl:when>
 
165
                                        <xsl:when test="@type = 'RtMatrix' or @type = 'RtBasis'">
 
166
                                                <xsl:value-of select="concat('&#x9;&#x9;int __', @name, '_i, __', @name, '_j;&#xa;')"/>
 
167
                                                <xsl:value-of select="concat('&#x9;&#x9;for(__', @name, '_j = 0; __', @name, '_j&lt;4; __', @name, '_j++)&#xa;')"/>
 
168
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;for(__', @name, '_i = 0; __', @name, '_i&lt;4; __', @name, '_i++)&#xa;')"/>
 
169
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;&#x9;m_', @name, '[__', @name, '_j][__', @name, '_i] = ', @name, '[__', @name, '_j][__', @name, '_i];&#xa;')"/>
 
170
                                        </xsl:when>
 
171
                                        <xsl:when test="@type = 'RtBound'">
 
172
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, '[0] = ', @name, '[0];&#xa;')"/>
 
173
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, '[1] = ', @name, '[1];&#xa;')"/>
 
174
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, '[2] = ', @name, '[2];&#xa;')"/>
 
175
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, '[3] = ', @name, '[3];&#xa;')"/>
 
176
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, '[4] = ', @name, '[4];&#xa;')"/>
 
177
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, '[5] = ', @name, '[5];&#xa;')"/>
 
178
                                        </xsl:when>
 
179
                                        <xsl:otherwise>
 
180
                                                <xsl:value-of select="concat('&#x9;&#x9;m_', @name, ' = ', @name, ';&#xa;')"/>
 
181
                                        </xsl:otherwise>
 
182
                                </xsl:choose>
 
183
                        </xsl:otherwise>
 
184
                </xsl:choose>
 
185
        </xsl:template>
 
186
 
 
187
        <!--    Argument storage members        -->
 
188
        <xsl:template match="Argument" mode="member_vars">
 
189
                <xsl:text>&#x9;</xsl:text>
 
190
                <xsl:choose>
 
191
                        <xsl:when test="@type = 'PARAMETERLIST'">
 
192
                                <xsl:text>// plist information is stored in the base class.</xsl:text>
 
193
                        </xsl:when>
 
194
                        <xsl:when test="contains( @type, 'Array')">
 
195
                                <xsl:value-of select="concat(substring-before(@type, 'Array'), '* m_', @name, ';')"/>
 
196
                        </xsl:when>
 
197
                        <xsl:otherwise>
 
198
                                <xsl:value-of select="concat(@type, ' m_', @name, ';')"/>
 
199
                        </xsl:otherwise>
 
200
                </xsl:choose>
 
201
                <xsl:text>&#xa;</xsl:text>
 
202
        </xsl:template>
 
203
 
 
204
        <!--    Arguments to recall method      -->
 
205
        <xsl:template match="Argument" mode="recall_args">
 
206
                <xsl:choose>
 
207
                        <xsl:when test="@type = 'PARAMETERLIST'">
 
208
                                <xsl:text>m_count, m_tokens, m_values</xsl:text>
 
209
                        </xsl:when>
 
210
                        <xsl:otherwise>
 
211
                                <xsl:value-of select="concat('m_', @name)"/>
 
212
                        </xsl:otherwise>
 
213
                </xsl:choose>
 
214
                <xsl:if test="last() != position()">
 
215
                   <xsl:text>, </xsl:text>
 
216
                </xsl:if>
 
217
        </xsl:template>
 
218
 
 
219
        <!--    Argument cleanup in the destructor      -->
 
220
        <xsl:template match="Argument" mode="destructor">
 
221
                <xsl:choose>
 
222
                        <xsl:when test="@type = 'PARAMETERLIST'">
 
223
                                <xsl:text>&#x9;&#x9;// plist gets destroyed by the base class.&#xa;</xsl:text>
 
224
                        </xsl:when>
 
225
                        <xsl:when test="contains( @type, 'Array')">
 
226
                                <xsl:choose>
 
227
                                        <xsl:when test="@type = 'RtTokenArray' or @type = 'RtStringArray'">
 
228
                                                <xsl:value-of select="concat('&#x9;&#x9;int __', @name, '_length = 1;&#xa;')"/>
 
229
                                                <xsl:value-of select="concat('&#x9;&#x9;int __', @name, '_index;&#xa;')"/>
 
230
                                                <xsl:value-of select="concat('&#x9;&#x9;for(__', @name, '_index = 0; __', @name, '_index&lt;__', @name, '_length; __', @name, '_index++)&#xa;')"/>
 
231
                                                <xsl:text>&#x9;&#x9;{&#xa;</xsl:text>
 
232
                                                <xsl:value-of select="concat('&#x9;&#x9;&#x9;delete[](m_', @name, '[__', @name, '_index]);&#xa;')"/>
 
233
                                                <xsl:text>&#x9;&#x9;}&#xa;</xsl:text>
 
234
                                        </xsl:when>
 
235
                                </xsl:choose>
 
236
                                <xsl:value-of select="concat('&#x9;&#x9;delete[](m_', @name, ');&#xa;')"/>
 
237
                        </xsl:when>
 
238
                        <xsl:otherwise>
 
239
                                <xsl:choose>
 
240
                                        <xsl:when test="@type = 'RtToken' or @type = 'RtString'">
 
241
                                                <xsl:value-of select="concat('&#x9;&#x9;delete[](m_', @name, ');&#xa;')"/>
 
242
                                        </xsl:when>
 
243
                                </xsl:choose>
 
244
                        </xsl:otherwise>
 
245
                </xsl:choose>
 
246
        </xsl:template>
 
247
 
 
248
 
 
249
                        <!--    Arguments to macro construct method     -->
 
250
        <xsl:template match="Argument" mode="macro_call">
 
251
                <xsl:choose>
 
252
                        <xsl:when test="@type = 'PARAMETERLIST'">
 
253
                                <xsl:text>count, tokens, values</xsl:text>
 
254
                        </xsl:when>
 
255
                        <xsl:otherwise>
 
256
                                <xsl:value-of select="@name"/>
 
257
                        </xsl:otherwise>
 
258
                </xsl:choose>
 
259
                <xsl:if test="last() != position()">
 
260
                   <xsl:text>, </xsl:text>
 
261
                </xsl:if>
 
262
        </xsl:template>
 
263
 
 
264
</xsl:stylesheet>