trying to get HEAD building again. If you want the code
[ira/wip.git] / docs / docbook / xslt / db2latex / synop-oop.mod.xsl
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     |- #############################################################################
6     |                                                                                                           
7     |   PURPOSE:
8     + ############################################################################## -->
9
10
11
12     <xsl:template match="classsynopsis">
13         <!-- PARAM language : -->
14         <xsl:param name="language">
15             <xsl:choose>
16                 <xsl:when test="@language">
17                     <xsl:value-of select="@language"/>
18                 </xsl:when>
19                 <xsl:otherwise>
20                     <xsl:value-of select="$default-classsynopsis-language"/>
21                 </xsl:otherwise>
22             </xsl:choose>
23         </xsl:param>
24
25         <xsl:choose>
26             <xsl:when test="$language='java'"> <xsl:apply-templates select="." mode="java"/> </xsl:when>
27             <xsl:when test="$language='perl'"> <xsl:apply-templates select="." mode="perl"/> </xsl:when>
28             <xsl:when test="$language='idl'">  <xsl:apply-templates select="." mode="idl"/>  </xsl:when>
29             <xsl:when test="$language='cpp'">  <xsl:apply-templates select="." mode="cpp"/>  </xsl:when>
30             <xsl:otherwise>
31                 <xsl:message>Unrecognized language on classsynopsis: <xsl:value-of select="$language"/> </xsl:message>
32                 <xsl:apply-templates select=".">
33                     <xsl:with-param name="language"  select="$default-classsynopsis-language"/>
34                 </xsl:apply-templates>
35             </xsl:otherwise>
36         </xsl:choose>
37     </xsl:template>
38
39
40
41
42
43     <!-- ===== Java ======================================================== -->
44
45     <xsl:template match="classsynopsis" mode="java">
46         <pre class="{name(.)}">
47             <xsl:apply-templates select="ooclass[1]" mode="java"/>
48             <xsl:if test="ooclass[position() &gt; 1]">
49                 <xsl:text> extends</xsl:text>
50                 <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="java"/>
51                 <xsl:if test="oointerface|ooexception">
52                     <xsl:text>&RE;    </xsl:text>
53                 </xsl:if>
54             </xsl:if>
55             <xsl:if test="oointerface">
56                 <xsl:text>implements</xsl:text>
57                 <xsl:apply-templates select="oointerface" mode="java"/>
58                 <xsl:if test="ooexception">
59                     <xsl:text>&RE;    </xsl:text>
60                 </xsl:if>
61             </xsl:if>
62             <xsl:if test="ooexception">
63                 <xsl:text>throws</xsl:text>
64                 <xsl:apply-templates select="ooexception" mode="java"/>
65             </xsl:if>
66             <xsl:text> {&RE;&RE;</xsl:text>
67             <xsl:apply-templates select="constructorsynopsis
68                 |destructorsynopsis
69                 |fieldsynopsis
70                 |methodsynopsis
71                 |classsynopsisinfo" mode="java"/>
72             <xsl:text>}</xsl:text>
73         </pre>
74     </xsl:template>
75
76     <xsl:template match="classsynopsisinfo" mode="java">
77         <xsl:apply-templates mode="java"/>
78     </xsl:template>
79
80     <xsl:template match="ooclass|oointerface|ooexception" mode="java">
81         <xsl:choose>
82             <xsl:when test="position() &gt; 1">
83                 <xsl:text>, </xsl:text>
84             </xsl:when>
85             <xsl:otherwise>
86                 <xsl:text> </xsl:text>
87             </xsl:otherwise>
88         </xsl:choose>
89
90         <xsl:apply-templates mode="java"/>
91
92     </xsl:template>
93
94     <xsl:template match="modifier" mode="java">
95
96         <xsl:apply-templates mode="java"/>
97         <xsl:text> </xsl:text>
98
99     </xsl:template>
100
101     <xsl:template match="classname" mode="java">
102         <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
103             <xsl:text>, </xsl:text>
104         </xsl:if>
105
106         <xsl:apply-templates mode="java"/>
107
108     </xsl:template>
109
110     <xsl:template match="interfacename" mode="java">
111         <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
112             <xsl:text>, </xsl:text>
113         </xsl:if>
114
115         <xsl:apply-templates mode="java"/>
116
117     </xsl:template>
118
119     <xsl:template match="exceptionname" mode="java">
120         <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
121             <xsl:text>, </xsl:text>
122         </xsl:if>
123
124         <xsl:apply-templates mode="java"/>
125
126     </xsl:template>
127
128     <xsl:template match="fieldsynopsis" mode="java">
129
130         <xsl:text>  </xsl:text>
131         <xsl:apply-templates mode="java"/>
132         <xsl:text>;</xsl:text>
133
134     </xsl:template>
135
136     <xsl:template match="type" mode="java">
137
138         <xsl:apply-templates mode="java"/>
139         <xsl:text> </xsl:text>
140
141     </xsl:template>
142
143     <xsl:template match="varname" mode="java">
144
145         <xsl:apply-templates mode="java"/>
146         <xsl:text> </xsl:text>
147
148     </xsl:template>
149
150     <xsl:template match="initializer" mode="java">
151
152         <xsl:text>= </xsl:text>
153         <xsl:apply-templates mode="java"/>
154
155     </xsl:template>
156
157     <xsl:template match="void" mode="java">
158
159         <xsl:text>void </xsl:text>
160
161     </xsl:template>
162
163     <xsl:template match="methodname" mode="java">
164
165         <xsl:apply-templates mode="java"/>
166     </xsl:template>
167
168
169
170
171     <xsl:template match="methodparam" mode="java">
172         <!-- PARAM: indent := 0 -->
173         <xsl:param name="indent">0</xsl:param>
174         <xsl:if test="position() &gt; 1">
175             <xsl:text>,&RE;</xsl:text>
176             <xsl:if test="$indent &gt; 0">
177                 <!-- RCAS FIXME: copy-string does not exist
178                 <xsl:call-template name="copy-string">
179                     <xsl:with-param name="string"> </xsl:with-param>
180                     <xsl:with-param name="count" select="$indent + 1"/>
181                 </xsl:call-template>
182                 -->
183             </xsl:if>
184         </xsl:if>
185         <xsl:apply-templates mode="java"/>
186     </xsl:template>
187
188
189
190     <xsl:template match="parameter" mode="java">
191         <xsl:apply-templates mode="java"/>
192     </xsl:template>
193
194     <xsl:template mode="java"
195         match="constructorsynopsis|destructorsynopsis|methodsynopsis">
196         <xsl:variable name="modifiers" select="modifier"/>
197         <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
198         <xsl:variable name="decl">
199             <xsl:text>  </xsl:text>
200             <xsl:apply-templates select="$modifiers" mode="java"/>
201
202             <!-- type -->
203             <xsl:if test="name($notmod[1]) != 'methodname'">
204                 <xsl:apply-templates select="$notmod[1]" mode="java"/>
205             </xsl:if>
206
207             <xsl:apply-templates select="methodname" mode="java"/>
208         </xsl:variable>
209
210
211         <xsl:copy-of select="$decl"/>
212         <xsl:text>(</xsl:text>
213         <xsl:apply-templates select="methodparam" mode="java">
214             <xsl:with-param name="indent" select="string-length($decl)"/>
215         </xsl:apply-templates>
216         <xsl:text>)</xsl:text>
217         <xsl:if test="exceptionname">
218             <xsl:text>&RE;    throws </xsl:text>
219             <xsl:apply-templates select="exceptionname" mode="java"/>
220         </xsl:if>
221         <xsl:text>;</xsl:text>
222
223     </xsl:template>
224
225     <!-- ===== C++ ========================================================= -->
226
227     <xsl:template match="classsynopsis" mode="cpp">
228         <pre class="{name(.)}">
229             <xsl:apply-templates select="ooclass[1]" mode="cpp"/>
230             <xsl:if test="ooclass[position() &gt; 1]">
231                 <xsl:text>: </xsl:text>
232                 <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="cpp"/>
233                 <xsl:if test="oointerface|ooexception">
234                     <xsl:text>&RE;    </xsl:text>
235                 </xsl:if>
236             </xsl:if>
237             <xsl:if test="oointerface">
238                 <xsl:text> implements</xsl:text>
239                 <xsl:apply-templates select="oointerface" mode="cpp"/>
240                 <xsl:if test="ooexception">
241                     <xsl:text>&RE;    </xsl:text>
242                 </xsl:if>
243             </xsl:if>
244             <xsl:if test="ooexception">
245                 <xsl:text> throws</xsl:text>
246                 <xsl:apply-templates select="ooexception" mode="cpp"/>
247             </xsl:if>
248             <xsl:text> {&RE;&RE;</xsl:text>
249             <xsl:apply-templates select="constructorsynopsis
250                 |destructorsynopsis
251                 |fieldsynopsis
252                 |methodsynopsis
253                 |classsynopsisinfo" mode="cpp"/>
254             <xsl:text>}</xsl:text>
255         </pre>
256     </xsl:template>
257
258     <xsl:template match="classsynopsisinfo" mode="cpp">
259         <xsl:apply-templates mode="cpp"/>
260     </xsl:template>
261
262     <xsl:template match="ooclass|oointerface|ooexception" mode="cpp">
263         <xsl:if test="position() &gt; 1">
264             <xsl:text>, </xsl:text>
265         </xsl:if>
266
267         <xsl:apply-templates mode="cpp"/>
268
269     </xsl:template>
270
271     <xsl:template match="modifier" mode="cpp">
272
273         <xsl:apply-templates mode="cpp"/>
274         <xsl:text> </xsl:text>
275
276     </xsl:template>
277
278     <xsl:template match="classname" mode="cpp">
279         <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
280             <xsl:text>, </xsl:text>
281         </xsl:if>
282
283         <xsl:apply-templates mode="cpp"/>
284
285     </xsl:template>
286
287     <xsl:template match="interfacename" mode="cpp">
288         <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
289             <xsl:text>, </xsl:text>
290         </xsl:if>
291
292         <xsl:apply-templates mode="cpp"/>
293
294     </xsl:template>
295
296     <xsl:template match="exceptionname" mode="cpp">
297         <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
298             <xsl:text>, </xsl:text>
299         </xsl:if>
300
301         <xsl:apply-templates mode="cpp"/>
302
303     </xsl:template>
304
305     <xsl:template match="fieldsynopsis" mode="cpp">
306
307         <xsl:text>  </xsl:text>
308         <xsl:apply-templates mode="cpp"/>
309         <xsl:text>;</xsl:text>
310
311     </xsl:template>
312
313     <xsl:template match="type" mode="cpp">
314
315         <xsl:apply-templates mode="cpp"/>
316         <xsl:text> </xsl:text>
317
318     </xsl:template>
319
320     <xsl:template match="varname" mode="cpp">
321
322         <xsl:apply-templates mode="cpp"/>
323         <xsl:text> </xsl:text>
324
325     </xsl:template>
326
327     <xsl:template match="initializer" mode="cpp">
328
329         <xsl:text>= </xsl:text>
330         <xsl:apply-templates mode="cpp"/>
331
332     </xsl:template>
333
334     <xsl:template match="void" mode="cpp">
335
336         <xsl:text>void </xsl:text>
337
338     </xsl:template>
339
340     <xsl:template match="methodname" mode="cpp">
341
342         <xsl:apply-templates mode="cpp"/>
343
344     </xsl:template>
345
346     <xsl:template match="methodparam" mode="cpp">
347         <xsl:if test="position() &gt; 1">
348             <xsl:text>, </xsl:text>
349         </xsl:if>
350
351         <xsl:apply-templates mode="cpp"/>
352
353     </xsl:template>
354
355     <xsl:template match="parameter" mode="cpp">
356
357         <xsl:apply-templates mode="cpp"/>
358
359     </xsl:template>
360
361     <xsl:template mode="cpp"
362         match="constructorsynopsis|destructorsynopsis|methodsynopsis">
363         <xsl:variable name="modifiers" select="modifier"/>
364         <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
365         <xsl:variable name="type">
366         </xsl:variable>
367
368         <xsl:text>  </xsl:text>
369         <xsl:apply-templates select="$modifiers" mode="cpp"/>
370
371         <!-- type -->
372         <xsl:if test="name($notmod[1]) != 'methodname'">
373             <xsl:apply-templates select="$notmod[1]" mode="cpp"/>
374         </xsl:if>
375
376         <xsl:apply-templates select="methodname" mode="cpp"/>
377         <xsl:text>(</xsl:text>
378         <xsl:apply-templates select="methodparam" mode="cpp"/>
379         <xsl:text>)</xsl:text>
380         <xsl:if test="exceptionname">
381             <xsl:text>&RE;    throws </xsl:text>
382             <xsl:apply-templates select="exceptionname" mode="cpp"/>
383         </xsl:if>
384         <xsl:text>;</xsl:text>
385
386     </xsl:template>
387
388     <!-- ===== IDL ========================================================= -->
389
390     <xsl:template match="classsynopsis" mode="idl">
391         <pre class="{name(.)}">
392             <xsl:text>interface </xsl:text>
393             <xsl:apply-templates select="ooclass[1]" mode="idl"/>
394             <xsl:if test="ooclass[position() &gt; 1]">
395                 <xsl:text>: </xsl:text>
396                 <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="idl"/>
397                 <xsl:if test="oointerface|ooexception">
398                     <xsl:text>&RE;    </xsl:text>
399                 </xsl:if>
400             </xsl:if>
401             <xsl:if test="oointerface">
402                 <xsl:text> implements</xsl:text>
403                 <xsl:apply-templates select="oointerface" mode="idl"/>
404                 <xsl:if test="ooexception">
405                     <xsl:text>&RE;    </xsl:text>
406                 </xsl:if>
407             </xsl:if>
408             <xsl:if test="ooexception">
409                 <xsl:text> throws</xsl:text>
410                 <xsl:apply-templates select="ooexception" mode="idl"/>
411             </xsl:if>
412             <xsl:text> {&RE;&RE;</xsl:text>
413             <xsl:apply-templates select="constructorsynopsis
414                 |destructorsynopsis
415                 |fieldsynopsis
416                 |methodsynopsis
417                 |classsynopsisinfo" mode="idl"/>
418             <xsl:text>}</xsl:text>
419         </pre>
420     </xsl:template>
421
422     <xsl:template match="classsynopsisinfo" mode="idl">
423         <xsl:apply-templates mode="idl"/>
424     </xsl:template>
425
426     <xsl:template match="ooclass|oointerface|ooexception" mode="idl">
427         <xsl:if test="position() &gt; 1">
428             <xsl:text>, </xsl:text>
429         </xsl:if>
430
431         <xsl:apply-templates mode="idl"/>
432
433     </xsl:template>
434
435     <xsl:template match="modifier" mode="idl">
436
437         <xsl:apply-templates mode="idl"/>
438         <xsl:text> </xsl:text>
439
440     </xsl:template>
441
442     <xsl:template match="classname" mode="idl">
443         <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
444             <xsl:text>, </xsl:text>
445         </xsl:if>
446
447         <xsl:apply-templates mode="idl"/>
448
449     </xsl:template>
450
451     <xsl:template match="interfacename" mode="idl">
452         <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
453             <xsl:text>, </xsl:text>
454         </xsl:if>
455
456         <xsl:apply-templates mode="idl"/>
457
458     </xsl:template>
459
460     <xsl:template match="exceptionname" mode="idl">
461         <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
462             <xsl:text>, </xsl:text>
463         </xsl:if>
464
465         <xsl:apply-templates mode="idl"/>
466
467     </xsl:template>
468
469     <xsl:template match="fieldsynopsis" mode="idl">
470
471         <xsl:text>  </xsl:text>
472         <xsl:apply-templates mode="idl"/>
473         <xsl:text>;</xsl:text>
474
475     </xsl:template>
476
477     <xsl:template match="type" mode="idl">
478
479         <xsl:apply-templates mode="idl"/>
480         <xsl:text> </xsl:text>
481
482     </xsl:template>
483
484     <xsl:template match="varname" mode="idl">
485
486         <xsl:apply-templates mode="idl"/>
487         <xsl:text> </xsl:text>
488
489     </xsl:template>
490
491     <xsl:template match="initializer" mode="idl">
492
493         <xsl:text>= </xsl:text>
494         <xsl:apply-templates mode="idl"/>
495
496     </xsl:template>
497
498     <xsl:template match="void" mode="idl">
499
500         <xsl:text>void </xsl:text>
501
502     </xsl:template>
503
504     <xsl:template match="methodname" mode="idl">
505
506         <xsl:apply-templates mode="idl"/>
507
508     </xsl:template>
509
510     <xsl:template match="methodparam" mode="idl">
511         <xsl:if test="position() &gt; 1">
512             <xsl:text>, </xsl:text>
513         </xsl:if>
514
515         <xsl:apply-templates mode="idl"/>
516
517     </xsl:template>
518
519     <xsl:template match="parameter" mode="idl">
520
521         <xsl:apply-templates mode="idl"/>
522
523     </xsl:template>
524
525     <xsl:template mode="idl"
526         match="constructorsynopsis|destructorsynopsis|methodsynopsis">
527         <xsl:variable name="modifiers" select="modifier"/>
528         <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
529         <xsl:variable name="type">
530         </xsl:variable>
531
532         <xsl:text>  </xsl:text>
533         <xsl:apply-templates select="$modifiers" mode="idl"/>
534
535         <!-- type -->
536         <xsl:if test="name($notmod[1]) != 'methodname'">
537             <xsl:apply-templates select="$notmod[1]" mode="idl"/>
538         </xsl:if>
539
540         <xsl:apply-templates select="methodname" mode="idl"/>
541         <xsl:text>(</xsl:text>
542         <xsl:apply-templates select="methodparam" mode="idl"/>
543         <xsl:text>)</xsl:text>
544         <xsl:if test="exceptionname">
545             <xsl:text>&RE;    raises(</xsl:text>
546             <xsl:apply-templates select="exceptionname" mode="idl"/>
547             <xsl:text>)</xsl:text>
548         </xsl:if>
549         <xsl:text>;</xsl:text>
550
551     </xsl:template>
552
553
554
555
556
557     <!-- ===== Perl ======================================================== -->
558
559     <xsl:template match="classsynopsis" mode="perl">
560         <pre class="{name(.)}">
561             <xsl:text>package </xsl:text>
562             <xsl:apply-templates select="ooclass[1]" mode="perl"/>
563             <xsl:text>;&RE;</xsl:text>
564
565             <xsl:if test="ooclass[position() &gt; 1]">
566                 <xsl:text>@ISA = (</xsl:text>
567                 <xsl:apply-templates select="ooclass[position() &gt; 1]" mode="perl"/>
568                 <xsl:text>);&RE;</xsl:text>
569             </xsl:if>
570
571             <xsl:apply-templates select="constructorsynopsis
572                 |destructorsynopsis
573                 |fieldsynopsis
574                 |methodsynopsis
575                 |classsynopsisinfo" mode="perl"/>
576         </pre>
577     </xsl:template>
578
579     <xsl:template match="classsynopsisinfo" mode="perl">
580         <xsl:apply-templates mode="perl"/>
581     </xsl:template>
582
583     <xsl:template match="ooclass|oointerface|ooexception" mode="perl">
584         <xsl:if test="position() &gt; 1">
585             <xsl:text>, </xsl:text>
586         </xsl:if>
587
588         <xsl:apply-templates mode="perl"/>
589
590     </xsl:template>
591
592     <xsl:template match="modifier" mode="perl">
593
594         <xsl:apply-templates mode="perl"/>
595         <xsl:text> </xsl:text>
596
597     </xsl:template>
598
599     <xsl:template match="classname" mode="perl">
600         <xsl:if test="name(preceding-sibling::*[1]) = 'classname'">
601             <xsl:text>, </xsl:text>
602         </xsl:if>
603
604         <xsl:apply-templates mode="perl"/>
605
606     </xsl:template>
607
608     <xsl:template match="interfacename" mode="perl">
609         <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'">
610             <xsl:text>, </xsl:text>
611         </xsl:if>
612
613         <xsl:apply-templates mode="perl"/>
614
615     </xsl:template>
616
617     <xsl:template match="exceptionname" mode="perl">
618         <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'">
619             <xsl:text>, </xsl:text>
620         </xsl:if>
621
622         <xsl:apply-templates mode="perl"/>
623
624     </xsl:template>
625
626     <xsl:template match="fieldsynopsis" mode="perl">
627
628         <xsl:text>  </xsl:text>
629         <xsl:apply-templates mode="perl"/>
630         <xsl:text>;</xsl:text>
631
632     </xsl:template>
633
634     <xsl:template match="type" mode="perl">
635
636         <xsl:apply-templates mode="perl"/>
637         <xsl:text> </xsl:text>
638
639     </xsl:template>
640
641     <xsl:template match="varname" mode="perl">
642
643         <xsl:apply-templates mode="perl"/>
644         <xsl:text> </xsl:text>
645
646     </xsl:template>
647
648     <xsl:template match="initializer" mode="perl">
649
650         <xsl:text>= </xsl:text>
651         <xsl:apply-templates mode="perl"/>
652
653     </xsl:template>
654
655     <xsl:template match="void" mode="perl">
656
657         <xsl:text>void </xsl:text>
658
659     </xsl:template>
660
661
662
663     <xsl:template match="methodname" mode="perl">
664         <xsl:apply-templates mode="perl"/>
665     </xsl:template>
666
667     <xsl:template match="methodparam" mode="perl">
668         <xsl:if test="position() &gt; 1"> <xsl:text>, </xsl:text> </xsl:if>
669         <xsl:apply-templates mode="perl"/>
670     </xsl:template>
671
672
673     <xsl:template match="parameter" mode="perl">
674         <xsl:apply-templates mode="perl"/>
675     </xsl:template>
676
677
678     <xsl:template mode="perl" match="constructorsynopsis|destructorsynopsis|methodsynopsis">
679         <xsl:variable name="modifiers" select="modifier"/>
680         <xsl:variable name="notmod" select="*[name(.) != 'modifier']"/>
681         <xsl:variable name="type"> </xsl:variable>
682
683         <xsl:text>sub </xsl:text>
684
685         <xsl:apply-templates select="methodname" mode="perl"/>
686         <xsl:text> { ... };</xsl:text>
687     </xsl:template>
688
689 </xsl:stylesheet>