Next update of VFS modules development guide
[Samba.git] / docs / xslt / db2latex-xsl / xsl / synop-oop.mod.xsl
blob0ae6e8e8bc78af43b43b5243268cc6b3c0593601
1 <?xml version='1.0'?>
2 <!DOCTYPE xsl:stylesheet [ <!ENTITY RE "&#10;"> ]>
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 |- #############################################################################
7 | $Author: rcasellas $
8 |
9 | PURPOSE:
10 + ############################################################################## -->
14 <xsl:template match="classsynopsis">
15 <!-- PARAM language : -->
16 <xsl:param name="language">
17 <xsl:choose>
18 <xsl:when test="@language">
19 <xsl:value-of select="@language"/>
20 </xsl:when>
21 <xsl:otherwise>
22 <xsl:value-of select="$default-classsynopsis-language"/>
23 </xsl:otherwise>
24 </xsl:choose>
25 </xsl:param>
27 <xsl:choose>
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>
32 <xsl:otherwise>
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>
37 </xsl:otherwise>
38 </xsl:choose>
39 </xsl:template>
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() &gt; 1]">
51 <xsl:text> extends</xsl:text>
52 <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="java"/>
53 <xsl:if test="oointerface|ooexception">
54 <xsl:text>&RE; </xsl:text>
55 </xsl:if>
56 </xsl:if>
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>
62 </xsl:if>
63 </xsl:if>
64 <xsl:if test="ooexception">
65 <xsl:text>throws</xsl:text>
66 <xsl:apply-templates select="ooexception" mode="java"/>
67 </xsl:if>
68 <xsl:text> {&RE;&RE;</xsl:text>
69 <xsl:apply-templates select="constructorsynopsis
70 |destructorsynopsis
71 |fieldsynopsis
72 |methodsynopsis
73 |classsynopsisinfo" mode="java"/>
74 <xsl:text>}</xsl:text>
75 </pre>
76 </xsl:template>
78 <xsl:template match="classsynopsisinfo" mode="java">
79 <xsl:apply-templates mode="java"/>
80 </xsl:template>
82 <xsl:template match="ooclass|oointerface|ooexception" mode="java">
83 <xsl:choose>
84 <xsl:when test="position() &gt; 1">
85 <xsl:text>, </xsl:text>
86 </xsl:when>
87 <xsl:otherwise>
88 <xsl:text> </xsl:text>
89 </xsl:otherwise>
90 </xsl:choose>
92 <xsl:apply-templates mode="java"/>
94 </xsl:template>
96 <xsl:template match="modifier" mode="java">
98 <xsl:apply-templates mode="java"/>
99 <xsl:text> </xsl:text>
101 </xsl:template>
103 <xsl:template match="classname" mode="java">
104 <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
105 <xsl:text>, </xsl:text>
106 </xsl:if>
108 <xsl:apply-templates mode="java"/>
110 </xsl:template>
112 <xsl:template match="interfacename" mode="java">
113 <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
114 <xsl:text>, </xsl:text>
115 </xsl:if>
117 <xsl:apply-templates mode="java"/>
119 </xsl:template>
121 <xsl:template match="exceptionname" mode="java">
122 <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
123 <xsl:text>, </xsl:text>
124 </xsl:if>
126 <xsl:apply-templates mode="java"/>
128 </xsl:template>
130 <xsl:template match="fieldsynopsis" mode="java">
132 <xsl:text> </xsl:text>
133 <xsl:apply-templates mode="java"/>
134 <xsl:text>;</xsl:text>
136 </xsl:template>
138 <xsl:template match="type" mode="java">
140 <xsl:apply-templates mode="java"/>
141 <xsl:text> </xsl:text>
143 </xsl:template>
145 <xsl:template match="varname" mode="java">
147 <xsl:apply-templates mode="java"/>
148 <xsl:text> </xsl:text>
150 </xsl:template>
152 <xsl:template match="initializer" mode="java">
154 <xsl:text>= </xsl:text>
155 <xsl:apply-templates mode="java"/>
157 </xsl:template>
159 <xsl:template match="void" mode="java">
161 <xsl:text>void </xsl:text>
163 </xsl:template>
165 <xsl:template match="methodname" mode="java">
167 <xsl:apply-templates mode="java"/>
168 </xsl:template>
173 <xsl:template match="methodparam" mode="java">
174 <!-- PARAM: indent := 0 -->
175 <xsl:param name="indent">0</xsl:param>
176 <xsl:if test="position() &gt; 1">
177 <xsl:text>,&RE;</xsl:text>
178 <xsl:if test="$indent &gt; 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"/>
183 </xsl:call-template>
185 </xsl:if>
186 </xsl:if>
187 <xsl:apply-templates mode="java"/>
188 </xsl:template>
192 <xsl:template match="parameter" mode="java">
193 <xsl:apply-templates mode="java"/>
194 </xsl:template>
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"/>
204 <!-- type -->
205 <xsl:if test="name($notmod[1]) != 'methodname'">
206 <xsl:apply-templates select="$notmod[1]" mode="java"/>
207 </xsl:if>
209 <xsl:apply-templates select="methodname" mode="java"/>
210 </xsl:variable>
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"/>
222 </xsl:if>
223 <xsl:text>;</xsl:text>
225 </xsl:template>
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() &gt; 1]">
233 <xsl:text>: </xsl:text>
234 <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="cpp"/>
235 <xsl:if test="oointerface|ooexception">
236 <xsl:text>&RE; </xsl:text>
237 </xsl:if>
238 </xsl:if>
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>
244 </xsl:if>
245 </xsl:if>
246 <xsl:if test="ooexception">
247 <xsl:text> throws</xsl:text>
248 <xsl:apply-templates select="ooexception" mode="cpp"/>
249 </xsl:if>
250 <xsl:text> {&RE;&RE;</xsl:text>
251 <xsl:apply-templates select="constructorsynopsis
252 |destructorsynopsis
253 |fieldsynopsis
254 |methodsynopsis
255 |classsynopsisinfo" mode="cpp"/>
256 <xsl:text>}</xsl:text>
257 </pre>
258 </xsl:template>
260 <xsl:template match="classsynopsisinfo" mode="cpp">
261 <xsl:apply-templates mode="cpp"/>
262 </xsl:template>
264 <xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
265 <xsl:if test="position() &gt; 1">
266 <xsl:text>, </xsl:text>
267 </xsl:if>
269 <xsl:apply-templates mode="cpp"/>
271 </xsl:template>
273 <xsl:template match="modifier" mode="cpp">
275 <xsl:apply-templates mode="cpp"/>
276 <xsl:text> </xsl:text>
278 </xsl:template>
280 <xsl:template match="classname" mode="cpp">
281 <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
282 <xsl:text>, </xsl:text>
283 </xsl:if>
285 <xsl:apply-templates mode="cpp"/>
287 </xsl:template>
289 <xsl:template match="interfacename" mode="cpp">
290 <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
291 <xsl:text>, </xsl:text>
292 </xsl:if>
294 <xsl:apply-templates mode="cpp"/>
296 </xsl:template>
298 <xsl:template match="exceptionname" mode="cpp">
299 <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
300 <xsl:text>, </xsl:text>
301 </xsl:if>
303 <xsl:apply-templates mode="cpp"/>
305 </xsl:template>
307 <xsl:template match="fieldsynopsis" mode="cpp">
309 <xsl:text> </xsl:text>
310 <xsl:apply-templates mode="cpp"/>
311 <xsl:text>;</xsl:text>
313 </xsl:template>
315 <xsl:template match="type" mode="cpp">
317 <xsl:apply-templates mode="cpp"/>
318 <xsl:text> </xsl:text>
320 </xsl:template>
322 <xsl:template match="varname" mode="cpp">
324 <xsl:apply-templates mode="cpp"/>
325 <xsl:text> </xsl:text>
327 </xsl:template>
329 <xsl:template match="initializer" mode="cpp">
331 <xsl:text>= </xsl:text>
332 <xsl:apply-templates mode="cpp"/>
334 </xsl:template>
336 <xsl:template match="void" mode="cpp">
338 <xsl:text>void </xsl:text>
340 </xsl:template>
342 <xsl:template match="methodname" mode="cpp">
344 <xsl:apply-templates mode="cpp"/>
346 </xsl:template>
348 <xsl:template match="methodparam" mode="cpp">
349 <xsl:if test="position() &gt; 1">
350 <xsl:text>, </xsl:text>
351 </xsl:if>
353 <xsl:apply-templates mode="cpp"/>
355 </xsl:template>
357 <xsl:template match="parameter" mode="cpp">
359 <xsl:apply-templates mode="cpp"/>
361 </xsl:template>
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">
368 </xsl:variable>
370 <xsl:text> </xsl:text>
371 <xsl:apply-templates select="$modifiers" mode="cpp"/>
373 <!-- type -->
374 <xsl:if test="name($notmod[1]) != 'methodname'">
375 <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
376 </xsl:if>
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"/>
385 </xsl:if>
386 <xsl:text>;</xsl:text>
388 </xsl:template>
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() &gt; 1]">
397 <xsl:text>: </xsl:text>
398 <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="idl"/>
399 <xsl:if test="oointerface|ooexception">
400 <xsl:text>&RE; </xsl:text>
401 </xsl:if>
402 </xsl:if>
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>
408 </xsl:if>
409 </xsl:if>
410 <xsl:if test="ooexception">
411 <xsl:text> throws</xsl:text>
412 <xsl:apply-templates select="ooexception" mode="idl"/>
413 </xsl:if>
414 <xsl:text> {&RE;&RE;</xsl:text>
415 <xsl:apply-templates select="constructorsynopsis
416 |destructorsynopsis
417 |fieldsynopsis
418 |methodsynopsis
419 |classsynopsisinfo" mode="idl"/>
420 <xsl:text>}</xsl:text>
421 </pre>
422 </xsl:template>
424 <xsl:template match="classsynopsisinfo" mode="idl">
425 <xsl:apply-templates mode="idl"/>
426 </xsl:template>
428 <xsl:template match="ooclass|oointerface|ooexception" mode="idl">
429 <xsl:if test="position() &gt; 1">
430 <xsl:text>, </xsl:text>
431 </xsl:if>
433 <xsl:apply-templates mode="idl"/>
435 </xsl:template>
437 <xsl:template match="modifier" mode="idl">
439 <xsl:apply-templates mode="idl"/>
440 <xsl:text> </xsl:text>
442 </xsl:template>
444 <xsl:template match="classname" mode="idl">
445 <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
446 <xsl:text>, </xsl:text>
447 </xsl:if>
449 <xsl:apply-templates mode="idl"/>
451 </xsl:template>
453 <xsl:template match="interfacename" mode="idl">
454 <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
455 <xsl:text>, </xsl:text>
456 </xsl:if>
458 <xsl:apply-templates mode="idl"/>
460 </xsl:template>
462 <xsl:template match="exceptionname" mode="idl">
463 <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
464 <xsl:text>, </xsl:text>
465 </xsl:if>
467 <xsl:apply-templates mode="idl"/>
469 </xsl:template>
471 <xsl:template match="fieldsynopsis" mode="idl">
473 <xsl:text> </xsl:text>
474 <xsl:apply-templates mode="idl"/>
475 <xsl:text>;</xsl:text>
477 </xsl:template>
479 <xsl:template match="type" mode="idl">
481 <xsl:apply-templates mode="idl"/>
482 <xsl:text> </xsl:text>
484 </xsl:template>
486 <xsl:template match="varname" mode="idl">
488 <xsl:apply-templates mode="idl"/>
489 <xsl:text> </xsl:text>
491 </xsl:template>
493 <xsl:template match="initializer" mode="idl">
495 <xsl:text>= </xsl:text>
496 <xsl:apply-templates mode="idl"/>
498 </xsl:template>
500 <xsl:template match="void" mode="idl">
502 <xsl:text>void </xsl:text>
504 </xsl:template>
506 <xsl:template match="methodname" mode="idl">
508 <xsl:apply-templates mode="idl"/>
510 </xsl:template>
512 <xsl:template match="methodparam" mode="idl">
513 <xsl:if test="position() &gt; 1">
514 <xsl:text>, </xsl:text>
515 </xsl:if>
517 <xsl:apply-templates mode="idl"/>
519 </xsl:template>
521 <xsl:template match="parameter" mode="idl">
523 <xsl:apply-templates mode="idl"/>
525 </xsl:template>
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">
532 </xsl:variable>
534 <xsl:text> </xsl:text>
535 <xsl:apply-templates select="$modifiers" mode="idl"/>
537 <!-- type -->
538 <xsl:if test="name($notmod[1]) != 'methodname'">
539 <xsl:apply-templates select="$notmod[1]" mode="idl"/>
540 </xsl:if>
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>
550 </xsl:if>
551 <xsl:text>;</xsl:text>
553 </xsl:template>
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() &gt; 1]">
568 <xsl:text>@ISA = (</xsl:text>
569 <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="perl"/>
570 <xsl:text>);&RE;</xsl:text>
571 </xsl:if>
573 <xsl:apply-templates select="constructorsynopsis
574 |destructorsynopsis
575 |fieldsynopsis
576 |methodsynopsis
577 |classsynopsisinfo" mode="perl"/>
578 </pre>
579 </xsl:template>
581 <xsl:template match="classsynopsisinfo" mode="perl">
582 <xsl:apply-templates mode="perl"/>
583 </xsl:template>
585 <xsl:template match="ooclass|oointerface|ooexception" mode="perl">
586 <xsl:if test="position() &gt; 1">
587 <xsl:text>, </xsl:text>
588 </xsl:if>
590 <xsl:apply-templates mode="perl"/>
592 </xsl:template>
594 <xsl:template match="modifier" mode="perl">
596 <xsl:apply-templates mode="perl"/>
597 <xsl:text> </xsl:text>
599 </xsl:template>
601 <xsl:template match="classname" mode="perl">
602 <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
603 <xsl:text>, </xsl:text>
604 </xsl:if>
606 <xsl:apply-templates mode="perl"/>
608 </xsl:template>
610 <xsl:template match="interfacename" mode="perl">
611 <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
612 <xsl:text>, </xsl:text>
613 </xsl:if>
615 <xsl:apply-templates mode="perl"/>
617 </xsl:template>
619 <xsl:template match="exceptionname" mode="perl">
620 <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
621 <xsl:text>, </xsl:text>
622 </xsl:if>
624 <xsl:apply-templates mode="perl"/>
626 </xsl:template>
628 <xsl:template match="fieldsynopsis" mode="perl">
630 <xsl:text> </xsl:text>
631 <xsl:apply-templates mode="perl"/>
632 <xsl:text>;</xsl:text>
634 </xsl:template>
636 <xsl:template match="type" mode="perl">
638 <xsl:apply-templates mode="perl"/>
639 <xsl:text> </xsl:text>
641 </xsl:template>
643 <xsl:template match="varname" mode="perl">
645 <xsl:apply-templates mode="perl"/>
646 <xsl:text> </xsl:text>
648 </xsl:template>
650 <xsl:template match="initializer" mode="perl">
652 <xsl:text>= </xsl:text>
653 <xsl:apply-templates mode="perl"/>
655 </xsl:template>
657 <xsl:template match="void" mode="perl">
659 <xsl:text>void </xsl:text>
661 </xsl:template>
665 <xsl:template match="methodname" mode="perl">
666 <xsl:apply-templates mode="perl"/>
667 </xsl:template>
669 <xsl:template match="methodparam" mode="perl">
670 <xsl:if test="position() &gt; 1"> <xsl:text>, </xsl:text> </xsl:if>
671 <xsl:apply-templates mode="perl"/>
672 </xsl:template>
675 <xsl:template match="parameter" mode="perl">
676 <xsl:apply-templates mode="perl"/>
677 </xsl:template>
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>
689 </xsl:template>
691 </xsl:stylesheet>