2 <!DOCTYPE xsl:stylesheet [ <!ENTITY RE " "> ]>
3 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
4 <!--#############################################################################
5 | $Id: synop-oop.mod.xsl,v 1.1.1.1 2003/03/14 10:42:53 rcasellas Exp $
6 |- #############################################################################
10 + ############################################################################## -->
14 <xsl:template match="classsynopsis">
15 <!-- PARAM language : -->
16 <xsl:param name="language">
18 <xsl:when test="@language">
19 <xsl:value-of select="@language"/>
22 <xsl:value-of select="$default-classsynopsis-language"/>
28 <xsl:when test="$language='java'"> <xsl:apply-templates select="." mode="java"/> </xsl:when>
29 <xsl:when test="$language='perl'"> <xsl:apply-templates select="." mode="perl"/> </xsl:when>
30 <xsl:when test="$language='idl'"> <xsl:apply-templates select="." mode="idl"/> </xsl:when>
31 <xsl:when test="$language='cpp'"> <xsl:apply-templates select="." mode="cpp"/> </xsl:when>
33 <xsl:message>Unrecognized language on classsynopsis: <xsl:value-of select="$language"/> </xsl:message>
34 <xsl:apply-templates select=".">
35 <xsl:with-param name="language" select="$default-classsynopsis-language"/>
36 </xsl:apply-templates>
45 <!-- ===== Java ======================================================== -->
47 <xsl:template match="classsynopsis" mode="java">
48 <pre class="{name(.)}">
49 <xsl:apply-templates select="ooclass[1]" mode="java"/>
50 <xsl:if test="ooclass[position() > 1]">
51 <xsl:text> extends</xsl:text>
52 <xsl:apply-templates select="ooclass[position() > 1]" mode="java"/>
53 <xsl:if test="oointerface|ooexception">
54 <xsl:text>&RE; </xsl:text>
57 <xsl:if test="oointerface">
58 <xsl:text>implements</xsl:text>
59 <xsl:apply-templates select="oointerface" mode="java"/>
60 <xsl:if test="ooexception">
61 <xsl:text>&RE; </xsl:text>
64 <xsl:if test="ooexception">
65 <xsl:text>throws</xsl:text>
66 <xsl:apply-templates select="ooexception" mode="java"/>
68 <xsl:text> {&RE;&RE;</xsl:text>
69 <xsl:apply-templates select="constructorsynopsis
73 |classsynopsisinfo" mode="java"/>
74 <xsl:text>}</xsl:text>
78 <xsl:template match="classsynopsisinfo" mode="java">
79 <xsl:apply-templates mode="java"/>
82 <xsl:template match="ooclass|oointerface|ooexception" mode="java">
84 <xsl:when test="position() > 1">
85 <xsl:text>, </xsl:text>
88 <xsl:text> </xsl:text>
92 <xsl:apply-templates mode="java"/>
96 <xsl:template match="modifier" mode="java">
98 <xsl:apply-templates mode="java"/>
99 <xsl:text> </xsl:text>
103 <xsl:template match="classname" mode="java">
104 <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
105 <xsl:text>, </xsl:text>
108 <xsl:apply-templates mode="java"/>
112 <xsl:template match="interfacename" mode="java">
113 <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
114 <xsl:text>, </xsl:text>
117 <xsl:apply-templates mode="java"/>
121 <xsl:template match="exceptionname" mode="java">
122 <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
123 <xsl:text>, </xsl:text>
126 <xsl:apply-templates mode="java"/>
130 <xsl:template match="fieldsynopsis" mode="java">
132 <xsl:text> </xsl:text>
133 <xsl:apply-templates mode="java"/>
134 <xsl:text>;</xsl:text>
138 <xsl:template match="type" mode="java">
140 <xsl:apply-templates mode="java"/>
141 <xsl:text> </xsl:text>
145 <xsl:template match="varname" mode="java">
147 <xsl:apply-templates mode="java"/>
148 <xsl:text> </xsl:text>
152 <xsl:template match="initializer" mode="java">
154 <xsl:text>= </xsl:text>
155 <xsl:apply-templates mode="java"/>
159 <xsl:template match="void" mode="java">
161 <xsl:text>void </xsl:text>
165 <xsl:template match="methodname" mode="java">
167 <xsl:apply-templates mode="java"/>
173 <xsl:template match="methodparam" mode="java">
174 <!-- PARAM: indent := 0 -->
175 <xsl:param name="indent">0</xsl:param>
176 <xsl:if test="position() > 1">
177 <xsl:text>,&RE;</xsl:text>
178 <xsl:if test="$indent > 0">
179 <!-- RCAS FIXME: copy-string does not exist
180 <xsl:call-template name="copy-string">
181 <xsl:with-param name="string"> </xsl:with-param>
182 <xsl:with-param name="count" select="$indent + 1"/>
187 <xsl:apply-templates mode="java"/>
192 <xsl:template match="parameter" mode="java">
193 <xsl:apply-templates mode="java"/>
196 <xsl:template mode="java"
197 match="constructorsynopsis|destructorsynopsis|methodsynopsis">
198 <xsl:variable name="modifiers" select="modifier"/>
199 <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
200 <xsl:variable name="decl">
201 <xsl:text> </xsl:text>
202 <xsl:apply-templates select="$modifiers" mode="java"/>
205 <xsl:if test="name($notmod[1]) != 'methodname'">
206 <xsl:apply-templates select="$notmod[1]" mode="java"/>
209 <xsl:apply-templates select="methodname" mode="java"/>
213 <xsl:copy-of select="$decl"/>
214 <xsl:text>(</xsl:text>
215 <xsl:apply-templates select="methodparam" mode="java">
216 <xsl:with-param name="indent" select="string-length($decl)"/>
217 </xsl:apply-templates>
218 <xsl:text>)</xsl:text>
219 <xsl:if test="exceptionname">
220 <xsl:text>&RE; throws </xsl:text>
221 <xsl:apply-templates select="exceptionname" mode="java"/>
223 <xsl:text>;</xsl:text>
227 <!-- ===== C++ ========================================================= -->
229 <xsl:template match="classsynopsis" mode="cpp">
230 <pre class="{name(.)}">
231 <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
232 <xsl:if test="ooclass[position() > 1]">
233 <xsl:text>: </xsl:text>
234 <xsl:apply-templates select="ooclass[position() > 1]" mode="cpp"/>
235 <xsl:if test="oointerface|ooexception">
236 <xsl:text>&RE; </xsl:text>
239 <xsl:if test="oointerface">
240 <xsl:text> implements</xsl:text>
241 <xsl:apply-templates select="oointerface" mode="cpp"/>
242 <xsl:if test="ooexception">
243 <xsl:text>&RE; </xsl:text>
246 <xsl:if test="ooexception">
247 <xsl:text> throws</xsl:text>
248 <xsl:apply-templates select="ooexception" mode="cpp"/>
250 <xsl:text> {&RE;&RE;</xsl:text>
251 <xsl:apply-templates select="constructorsynopsis
255 |classsynopsisinfo" mode="cpp"/>
256 <xsl:text>}</xsl:text>
260 <xsl:template match="classsynopsisinfo" mode="cpp">
261 <xsl:apply-templates mode="cpp"/>
264 <xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
265 <xsl:if test="position() > 1">
266 <xsl:text>, </xsl:text>
269 <xsl:apply-templates mode="cpp"/>
273 <xsl:template match="modifier" mode="cpp">
275 <xsl:apply-templates mode="cpp"/>
276 <xsl:text> </xsl:text>
280 <xsl:template match="classname" mode="cpp">
281 <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
282 <xsl:text>, </xsl:text>
285 <xsl:apply-templates mode="cpp"/>
289 <xsl:template match="interfacename" mode="cpp">
290 <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
291 <xsl:text>, </xsl:text>
294 <xsl:apply-templates mode="cpp"/>
298 <xsl:template match="exceptionname" mode="cpp">
299 <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
300 <xsl:text>, </xsl:text>
303 <xsl:apply-templates mode="cpp"/>
307 <xsl:template match="fieldsynopsis" mode="cpp">
309 <xsl:text> </xsl:text>
310 <xsl:apply-templates mode="cpp"/>
311 <xsl:text>;</xsl:text>
315 <xsl:template match="type" mode="cpp">
317 <xsl:apply-templates mode="cpp"/>
318 <xsl:text> </xsl:text>
322 <xsl:template match="varname" mode="cpp">
324 <xsl:apply-templates mode="cpp"/>
325 <xsl:text> </xsl:text>
329 <xsl:template match="initializer" mode="cpp">
331 <xsl:text>= </xsl:text>
332 <xsl:apply-templates mode="cpp"/>
336 <xsl:template match="void" mode="cpp">
338 <xsl:text>void </xsl:text>
342 <xsl:template match="methodname" mode="cpp">
344 <xsl:apply-templates mode="cpp"/>
348 <xsl:template match="methodparam" mode="cpp">
349 <xsl:if test="position() > 1">
350 <xsl:text>, </xsl:text>
353 <xsl:apply-templates mode="cpp"/>
357 <xsl:template match="parameter" mode="cpp">
359 <xsl:apply-templates mode="cpp"/>
363 <xsl:template mode="cpp"
364 match="constructorsynopsis|destructorsynopsis|methodsynopsis">
365 <xsl:variable name="modifiers" select="modifier"/>
366 <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
367 <xsl:variable name="type">
370 <xsl:text> </xsl:text>
371 <xsl:apply-templates select="$modifiers" mode="cpp"/>
374 <xsl:if test="name($notmod[1]) != 'methodname'">
375 <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
378 <xsl:apply-templates select="methodname" mode="cpp"/>
379 <xsl:text>(</xsl:text>
380 <xsl:apply-templates select="methodparam" mode="cpp"/>
381 <xsl:text>)</xsl:text>
382 <xsl:if test="exceptionname">
383 <xsl:text>&RE; throws </xsl:text>
384 <xsl:apply-templates select="exceptionname" mode="cpp"/>
386 <xsl:text>;</xsl:text>
390 <!-- ===== IDL ========================================================= -->
392 <xsl:template match="classsynopsis" mode="idl">
393 <pre class="{name(.)}">
394 <xsl:text>interface </xsl:text>
395 <xsl:apply-templates select="ooclass[1]" mode="idl"/>
396 <xsl:if test="ooclass[position() > 1]">
397 <xsl:text>: </xsl:text>
398 <xsl:apply-templates select="ooclass[position() > 1]" mode="idl"/>
399 <xsl:if test="oointerface|ooexception">
400 <xsl:text>&RE; </xsl:text>
403 <xsl:if test="oointerface">
404 <xsl:text> implements</xsl:text>
405 <xsl:apply-templates select="oointerface" mode="idl"/>
406 <xsl:if test="ooexception">
407 <xsl:text>&RE; </xsl:text>
410 <xsl:if test="ooexception">
411 <xsl:text> throws</xsl:text>
412 <xsl:apply-templates select="ooexception" mode="idl"/>
414 <xsl:text> {&RE;&RE;</xsl:text>
415 <xsl:apply-templates select="constructorsynopsis
419 |classsynopsisinfo" mode="idl"/>
420 <xsl:text>}</xsl:text>
424 <xsl:template match="classsynopsisinfo" mode="idl">
425 <xsl:apply-templates mode="idl"/>
428 <xsl:template match="ooclass|oointerface|ooexception" mode="idl">
429 <xsl:if test="position() > 1">
430 <xsl:text>, </xsl:text>
433 <xsl:apply-templates mode="idl"/>
437 <xsl:template match="modifier" mode="idl">
439 <xsl:apply-templates mode="idl"/>
440 <xsl:text> </xsl:text>
444 <xsl:template match="classname" mode="idl">
445 <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
446 <xsl:text>, </xsl:text>
449 <xsl:apply-templates mode="idl"/>
453 <xsl:template match="interfacename" mode="idl">
454 <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
455 <xsl:text>, </xsl:text>
458 <xsl:apply-templates mode="idl"/>
462 <xsl:template match="exceptionname" mode="idl">
463 <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
464 <xsl:text>, </xsl:text>
467 <xsl:apply-templates mode="idl"/>
471 <xsl:template match="fieldsynopsis" mode="idl">
473 <xsl:text> </xsl:text>
474 <xsl:apply-templates mode="idl"/>
475 <xsl:text>;</xsl:text>
479 <xsl:template match="type" mode="idl">
481 <xsl:apply-templates mode="idl"/>
482 <xsl:text> </xsl:text>
486 <xsl:template match="varname" mode="idl">
488 <xsl:apply-templates mode="idl"/>
489 <xsl:text> </xsl:text>
493 <xsl:template match="initializer" mode="idl">
495 <xsl:text>= </xsl:text>
496 <xsl:apply-templates mode="idl"/>
500 <xsl:template match="void" mode="idl">
502 <xsl:text>void </xsl:text>
506 <xsl:template match="methodname" mode="idl">
508 <xsl:apply-templates mode="idl"/>
512 <xsl:template match="methodparam" mode="idl">
513 <xsl:if test="position() > 1">
514 <xsl:text>, </xsl:text>
517 <xsl:apply-templates mode="idl"/>
521 <xsl:template match="parameter" mode="idl">
523 <xsl:apply-templates mode="idl"/>
527 <xsl:template mode="idl"
528 match="constructorsynopsis|destructorsynopsis|methodsynopsis">
529 <xsl:variable name="modifiers" select="modifier"/>
530 <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
531 <xsl:variable name="type">
534 <xsl:text> </xsl:text>
535 <xsl:apply-templates select="$modifiers" mode="idl"/>
538 <xsl:if test="name($notmod[1]) != 'methodname'">
539 <xsl:apply-templates select="$notmod[1]" mode="idl"/>
542 <xsl:apply-templates select="methodname" mode="idl"/>
543 <xsl:text>(</xsl:text>
544 <xsl:apply-templates select="methodparam" mode="idl"/>
545 <xsl:text>)</xsl:text>
546 <xsl:if test="exceptionname">
547 <xsl:text>&RE; raises(</xsl:text>
548 <xsl:apply-templates select="exceptionname" mode="idl"/>
549 <xsl:text>)</xsl:text>
551 <xsl:text>;</xsl:text>
559 <!-- ===== Perl ======================================================== -->
561 <xsl:template match="classsynopsis" mode="perl">
562 <pre class="{name(.)}">
563 <xsl:text>package </xsl:text>
564 <xsl:apply-templates select="ooclass[1]" mode="perl"/>
565 <xsl:text>;&RE;</xsl:text>
567 <xsl:if test="ooclass[position() > 1]">
568 <xsl:text>@ISA = (</xsl:text>
569 <xsl:apply-templates select="ooclass[position() > 1]" mode="perl"/>
570 <xsl:text>);&RE;</xsl:text>
573 <xsl:apply-templates select="constructorsynopsis
577 |classsynopsisinfo" mode="perl"/>
581 <xsl:template match="classsynopsisinfo" mode="perl">
582 <xsl:apply-templates mode="perl"/>
585 <xsl:template match="ooclass|oointerface|ooexception" mode="perl">
586 <xsl:if test="position() > 1">
587 <xsl:text>, </xsl:text>
590 <xsl:apply-templates mode="perl"/>
594 <xsl:template match="modifier" mode="perl">
596 <xsl:apply-templates mode="perl"/>
597 <xsl:text> </xsl:text>
601 <xsl:template match="classname" mode="perl">
602 <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
603 <xsl:text>, </xsl:text>
606 <xsl:apply-templates mode="perl"/>
610 <xsl:template match="interfacename" mode="perl">
611 <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
612 <xsl:text>, </xsl:text>
615 <xsl:apply-templates mode="perl"/>
619 <xsl:template match="exceptionname" mode="perl">
620 <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
621 <xsl:text>, </xsl:text>
624 <xsl:apply-templates mode="perl"/>
628 <xsl:template match="fieldsynopsis" mode="perl">
630 <xsl:text> </xsl:text>
631 <xsl:apply-templates mode="perl"/>
632 <xsl:text>;</xsl:text>
636 <xsl:template match="type" mode="perl">
638 <xsl:apply-templates mode="perl"/>
639 <xsl:text> </xsl:text>
643 <xsl:template match="varname" mode="perl">
645 <xsl:apply-templates mode="perl"/>
646 <xsl:text> </xsl:text>
650 <xsl:template match="initializer" mode="perl">
652 <xsl:text>= </xsl:text>
653 <xsl:apply-templates mode="perl"/>
657 <xsl:template match="void" mode="perl">
659 <xsl:text>void </xsl:text>
665 <xsl:template match="methodname" mode="perl">
666 <xsl:apply-templates mode="perl"/>
669 <xsl:template match="methodparam" mode="perl">
670 <xsl:if test="position() > 1"> <xsl:text>, </xsl:text> </xsl:if>
671 <xsl:apply-templates mode="perl"/>
675 <xsl:template match="parameter" mode="perl">
676 <xsl:apply-templates mode="perl"/>
680 <xsl:template mode="perl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
681 <xsl:variable name="modifiers" select="modifier"/>
682 <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
683 <xsl:variable name="type"> </xsl:variable>
685 <xsl:text>sub </xsl:text>
687 <xsl:apply-templates select="methodname" mode="perl"/>
688 <xsl:text> { ... };</xsl:text>