1
<?xml version="1.0" encoding="UTF-8" ?>
6
<!-- Ugly hack - need to redeclare xmlns:xsl to workaround an xsltproc bug. -->
7
<!ENTITY space "<xsl:text xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> </xsl:text>">
10
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
11
<xsl:output method="text"/>
12
<xsl:strip-space elements="RiAPI"/>
13
<xsl:include href="api_utils.xsl"/>
17
<xsl:template match="RiAPI">
19
<xsl:apply-templates select="Procedures/Procedure"/>
20
<xsl:apply-templates select="Procedures/Procedure" mode="macro"/>
25
<xsl:template match="Procedure">
26
<xsl:value-of select="concat('void ', Name, 'Debug(')"/>
27
<xsl:apply-templates select="Arguments" mode="procedure_formals"/>
28
<xsl:text>)
</xsl:text>
29
<xsl:text>{
</xsl:text>
30
<xsl:text>	if(QGetRenderContext() == 0 || !QGetRenderContext()->poptCurrent()) return;
</xsl:text>
31
<xsl:text>	const TqInt* poptEcho = QGetRenderContext()->poptCurrent()->GetIntegerOption( "statistics", "echoapi" );
</xsl:text>
32
<xsl:text>	if(poptEcho != 0 && *poptEcho != 0 )
</xsl:text>
33
<xsl:text>	{
</xsl:text>
34
<xsl:text>		std::stringstream _message;
</xsl:text>
35
<xsl:value-of select="concat('		_message << "', Name, ' ";
')"/>
36
<xsl:apply-templates select="Arguments" mode="arg_output"/>
37
<xsl:text>		Aqsis::log() << _message.str().c_str() << std::endl;
</xsl:text>
38
<xsl:text>	}
</xsl:text>
39
<xsl:text>}
</xsl:text>
42
<xsl:template match="Procedure" mode="macro">
43
#define DEBUG_<xsl:value-of select="translate(Name, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
44
&space;<xsl:value-of select="Name"/>Debug(<xsl:apply-templates select="Arguments" mode="procedure_call"/>);
48
<!-- Argument copy within the constructor -->
49
<xsl:template match="Arguments" mode="arg_output">
50
<xsl:apply-templates select="Argument" mode="arg_output"/>
51
<xsl:if test="ParamList">
52
<xsl:text>		// Output the plist here.
</xsl:text>
57
int facevarying_size = 1;
58
int facevertex_size = 1;
60
<xsl:if test="../UniformSize">
61
<xsl:value-of select="../UniformSize"/>
63
<xsl:if test="../VaryingSize">
64
<xsl:value-of select="../VaryingSize"/>
66
<xsl:if test="../VertexSize">
67
<xsl:value-of select="../VertexSize"/>
69
<xsl:if test="../FaceVaryingSize">
70
<xsl:value-of select="../FaceVaryingSize"/>
72
<xsl:if test="../FaceVertexSize">
73
<xsl:value-of select="../FaceVertexSize"/>
75
<xsl:text> DebugPlist(count, tokens, values, SqInterpClassCounts(uniform_size, varying_size,
76
vertex_size, facevarying_size, facevertex_size), _message);
</xsl:text>
79
<xsl:template match="Argument" mode="arg_output">
81
<xsl:when test="contains( Type, 'Array')">
83
<xsl:when test="./Length">
84
<xsl:value-of select="./Length"/>
87
<xsl:text>	// \note: Need to specify the length method here!
</xsl:text>
88
<xsl:value-of select="concat('	int __', Name, '_length = 1;
')"/>
91
<xsl:value-of select="concat('		_message << ', Name, ';
')"/>
92
<xsl:value-of select="concat('		int __', Name, '_index;
')"/>
93
<xsl:value-of select="concat('		for(__', Name, '_index = 0; __', Name, '_index<__', Name, '_length; __', Name, '_index++)
')"/>
94
<xsl:text>		{
</xsl:text>
96
<xsl:when test="Type = 'RtTokenArray' or Type = 'RtStringArray'">
97
<xsl:value-of select="concat('			_message << ', Name, '[__', Name, '_index];
')"/>
99
<xsl:when test="Type = 'RtColorArray' or Type = 'RtPointArray'">
100
<xsl:value-of select="concat('			_message << ', Name, '[__', Name, '_index][0] << " " << ', Name, '[__', Name, '_index][1] << " " << ', Name, '[__', Name, '_index][2];
')"/>
103
<xsl:value-of select="concat('			_message << ', Name, '[__', Name, '_index];
')"/>
106
<xsl:text>	}
</xsl:text>
110
<xsl:when test="Type = 'RtToken' or Type = 'RtString'">
111
<xsl:value-of select="concat('		_message << "\"" << ', Name, ' << "\" ";
')"/>
113
<xsl:when test="Type = 'RtColor' or Type = 'RtPoint'">
114
<xsl:value-of select="concat('		_message << ', Name, '[0] << " " << ', Name, '[1] << " " << ', Name, '[2];
')"/>
116
<xsl:when test="Type = 'RtMatrix' or Type = 'RtBasis'">
117
<xsl:value-of select="string('		_message << "[";
')"/>
118
<xsl:value-of select="concat('		int __', Name, '_i, __', Name, '_j;
')"/>
119
<xsl:value-of select="concat('		for(__', Name, '_j = 0; __', Name, '_j<4; __', Name, '_j++)
')"/>
120
<xsl:value-of select="concat('			for(__', Name, '_i = 0; __', Name, '_i<4; __', Name, '_i++)
')"/>
121
<xsl:value-of select="concat('				_message << ', Name, '[__', Name, '_j][__', Name, '_i] << " ";
')"/>
122
<xsl:value-of select="string('		_message << "]" << " ";
')"/>
124
<xsl:when test="Type = 'RtBound'">
125
<xsl:value-of select="concat('		_message << ', Name, '[0] << " ";
')"/>
126
<xsl:value-of select="concat('		_message << ', Name, '[1] << " ";
')"/>
127
<xsl:value-of select="concat('		_message << ', Name, '[2] << " ";
')"/>
128
<xsl:value-of select="concat('		_message << ', Name, '[3] << " ";
')"/>
129
<xsl:value-of select="concat('		_message << ', Name, '[4] << " ";
')"/>
130
<xsl:value-of select="concat('		_message << ', Name, '[5] << " ";
')"/>
133
<xsl:if test="not(Name = '...') and not(Name = '')">
134
<xsl:value-of select="concat('		_message << ', Name, ' << " ";
')"/>