Imported Upstream version 1.64.0
[platform/upstream/boost.git] / libs / asio / doc / reference.xsl
1 <?xml version="1.0" encoding="utf-8"?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3
4 <!--
5   Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
7   Distributed under the Boost Software License, Version 1.0. (See accompanying
8   file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 -->
10
11 <xsl:output method="text"/>
12 <xsl:strip-space elements="*"/>
13 <xsl:preserve-space elements="para"/>
14
15
16 <xsl:variable name="newline">
17 <xsl:text>
18 </xsl:text>
19 </xsl:variable>
20
21
22 <!--
23   Loop over all top-level documentation elements (i.e. classes, functions,
24   variables and typedefs at namespace scope). The elements are sorted by name.
25   Anything in a "detail" namespace or with "_handler" in the name is skipped.
26 -->
27 <xsl:template match="/doxygen">
28 <xsl:text>[/
29  / Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
30  /
31  / Distributed under the Boost Software License, Version 1.0. (See accompanying
32  / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
33  /]
34
35 [section:reference Reference]
36
37 [xinclude quickref.xml]
38
39 [include requirements/asynchronous_operations.qbk]
40 [include requirements/AcceptHandler.qbk]
41 [include requirements/AsyncRandomAccessReadDevice.qbk]
42 [include requirements/AsyncRandomAccessWriteDevice.qbk]
43 [include requirements/AsyncReadStream.qbk]
44 [include requirements/AsyncWriteStream.qbk]
45 [include requirements/BufferedHandshakeHandler.qbk]
46 [include requirements/CompletionHandler.qbk]
47 [include requirements/ComposedConnectHandler.qbk]
48 [include requirements/ConnectHandler.qbk]
49 [include requirements/ConstBufferSequence.qbk]
50 [include requirements/ConvertibleToConstBuffer.qbk]
51 [include requirements/ConvertibleToMutableBuffer.qbk]
52 [include requirements/DatagramSocketService.qbk]
53 [include requirements/DescriptorService.qbk]
54 [include requirements/Endpoint.qbk]
55 [include requirements/GettableSerialPortOption.qbk]
56 [include requirements/GettableSocketOption.qbk]
57 [include requirements/Handler.qbk]
58 [include requirements/HandleService.qbk]
59 [include requirements/HandshakeHandler.qbk]
60 [include requirements/InternetProtocol.qbk]
61 [include requirements/IoControlCommand.qbk]
62 [include requirements/IoObjectService.qbk]
63 [include requirements/MutableBufferSequence.qbk]
64 [include requirements/ObjectHandleService.qbk]
65 [include requirements/Protocol.qbk]
66 [include requirements/RandomAccessHandleService.qbk]
67 [include requirements/RawSocketService.qbk]
68 [include requirements/ReadHandler.qbk]
69 [include requirements/ResolveHandler.qbk]
70 [include requirements/ResolverService.qbk]
71 [include requirements/SeqPacketSocketService.qbk]
72 [include requirements/SerialPortService.qbk]
73 [include requirements/Service.qbk]
74 [include requirements/SettableSerialPortOption.qbk]
75 [include requirements/SettableSocketOption.qbk]
76 [include requirements/ShutdownHandler.qbk]
77 [include requirements/SignalHandler.qbk]
78 [include requirements/SignalSetService.qbk]
79 [include requirements/SocketAcceptorService.qbk]
80 [include requirements/SocketService.qbk]
81 [include requirements/StreamDescriptorService.qbk]
82 [include requirements/StreamHandleService.qbk]
83 [include requirements/StreamSocketService.qbk]
84 [include requirements/SyncRandomAccessReadDevice.qbk]
85 [include requirements/SyncRandomAccessWriteDevice.qbk]
86 [include requirements/SyncReadStream.qbk]
87 [include requirements/SyncWriteStream.qbk]
88 [include requirements/TimeTraits.qbk]
89 [include requirements/TimerService.qbk]
90 [include requirements/WaitableTimerService.qbk]
91 [include requirements/WaitHandler.qbk]
92 [include requirements/WaitTraits.qbk]
93 [include requirements/WriteHandler.qbk]
94
95 </xsl:text>
96
97   <xsl:for-each select="
98       compounddef[@kind = 'class' or @kind = 'struct'] |
99       compounddef[@kind = 'namespace']/sectiondef[1]/memberdef">
100     <xsl:sort select="concat((. | ancestor::*)/compoundname, '::', name, ':x')"/>
101     <xsl:sort select="name"/>
102     <xsl:choose>
103       <xsl:when test="@kind='class' or @kind='struct'">
104         <xsl:if test="
105             contains(compoundname, 'asio::') and
106             not(contains(compoundname, '::detail')) and
107             not(contains(compoundname, '::service::key')) and
108             not(contains(compoundname, '_handler'))">
109           <xsl:call-template name="class"/>
110         </xsl:if>
111       </xsl:when>
112       <xsl:otherwise>
113         <xsl:if test="
114             not(contains(ancestor::*/compoundname, '::detail')) and
115             not(contains(ancestor::*/compoundname, '::service::key')) and
116             not(contains(ancestor::*/compoundname, '_helper')) and
117             not(contains(name, '_helper')) and
118             not(contains(name, 'io_service_impl'))">
119           <xsl:call-template name="namespace-memberdef"/>
120         </xsl:if>
121       </xsl:otherwise>
122     </xsl:choose>
123   </xsl:for-each>
124
125   <xsl:value-of select="$newline"/>
126   <xsl:text>[endsect]</xsl:text>
127
128 </xsl:template>
129
130
131 <!--========== Utilities ==========-->
132
133 <xsl:template name="strip-asio-ns">
134   <xsl:param name="name"/>
135   <xsl:choose>
136     <xsl:when test="contains($name, 'boost::system::is_error_code_enum')">
137       <xsl:value-of select="$name"/>
138     </xsl:when>
139     <xsl:when test="contains($name, 'asio::')">
140       <xsl:value-of select="substring-after($name, 'asio::')"/>
141     </xsl:when>
142     <xsl:otherwise>
143       <xsl:value-of select="$name"/>
144     </xsl:otherwise>
145   </xsl:choose>
146 </xsl:template>
147
148
149 <xsl:template name="strip-ns">
150   <xsl:param name="name"/>
151   <xsl:choose>
152     <xsl:when test="contains($name, 'boost::system::is_error_code_enum')">
153       <xsl:value-of select="$name"/>
154     </xsl:when>
155     <xsl:when test="contains($name, '::') and contains($name, '&lt;')">
156       <xsl:choose>
157         <xsl:when test="string-length(substring-before($name, '::')) &lt; string-length(substring-before($name, '&lt;'))">
158           <xsl:call-template name="strip-ns">
159             <xsl:with-param name="name" select="substring-after($name, '::')"/>
160           </xsl:call-template>
161         </xsl:when>
162         <xsl:otherwise>
163           <xsl:value-of select="$name"/>
164         </xsl:otherwise>
165       </xsl:choose>
166     </xsl:when>
167     <xsl:when test="contains($name, '::')">
168       <xsl:call-template name="strip-ns">
169         <xsl:with-param name="name" select="substring-after($name, '::')"/>
170       </xsl:call-template>
171     </xsl:when>
172     <xsl:otherwise>
173       <xsl:value-of select="$name"/>
174     </xsl:otherwise>
175   </xsl:choose>
176 </xsl:template>
177
178
179 <xsl:template name="cleanup-type">
180   <xsl:param name="name"/>
181   <xsl:variable name="type">
182     <xsl:choose>
183       <xsl:when test="contains($name, 'BOOST_ASIO_DECL ')">
184         <xsl:value-of select="substring-after($name, 'BOOST_ASIO_DECL ')"/>
185       </xsl:when>
186       <xsl:when test="contains($name, 'BOOST_ASIO_DECL')">
187         <xsl:value-of select="substring-after($name, 'BOOST_ASIO_DECL')"/>
188       </xsl:when>
189       <xsl:when test="$name = 'virtual'"></xsl:when>
190       <xsl:otherwise>
191         <xsl:value-of select="$name"/>
192       </xsl:otherwise>
193     </xsl:choose>
194   </xsl:variable>
195   <xsl:choose>
196     <xsl:when test="$type='void_or_deduced'">
197       <xsl:text>``[link boost_asio.reference.asynchronous_operations.return_type_of_an_initiating_function ['void-or-deduced]]``</xsl:text>
198     </xsl:when>   
199     <xsl:otherwise>
200       <xsl:value-of select="$type"/>
201     </xsl:otherwise>   
202   </xsl:choose>
203 </xsl:template>
204
205
206 <xsl:template name="make-id">
207   <xsl:param name="name"/>
208   <xsl:choose>
209     <xsl:when test="contains($name, 'boost::system::')">
210       <xsl:call-template name="make-id">
211         <xsl:with-param name="name"
212          select="substring-after($name, 'boost::system::')"/>
213       </xsl:call-template>
214     </xsl:when>
215     <xsl:when test="contains($name, 'boost::asio::error::')">
216       <xsl:call-template name="make-id">
217         <xsl:with-param name="name"
218          select="concat(substring-before($name, 'boost::asio::error::'), substring-after($name, 'boost::asio::error::'))"/>
219       </xsl:call-template>
220     </xsl:when>
221     <xsl:when test="contains($name, '::')">
222       <xsl:call-template name="make-id">
223         <xsl:with-param name="name"
224          select="concat(substring-before($name, '::'), '__', substring-after($name, '::'))"/>
225       </xsl:call-template>
226     </xsl:when>
227     <xsl:when test="contains($name, '=')">
228       <xsl:call-template name="make-id">
229         <xsl:with-param name="name"
230          select="concat(substring-before($name, '='), '_eq_', substring-after($name, '='))"/>
231       </xsl:call-template>
232     </xsl:when>
233     <xsl:when test="contains($name, '!')">
234       <xsl:call-template name="make-id">
235         <xsl:with-param name="name"
236          select="concat(substring-before($name, '!'), '_not_', substring-after($name, '!'))"/>
237       </xsl:call-template>
238     </xsl:when>
239     <xsl:when test="contains($name, '-&gt;')">
240       <xsl:call-template name="make-id">
241         <xsl:with-param name="name"
242          select="concat(substring-before($name, '-&gt;'), '_arrow_', substring-after($name, '-&gt;'))"/>
243       </xsl:call-template>
244     </xsl:when>
245     <xsl:when test="contains($name, '&lt;')">
246       <xsl:call-template name="make-id">
247         <xsl:with-param name="name"
248          select="concat(substring-before($name, '&lt;'), '_lt_', substring-after($name, '&lt;'))"/>
249       </xsl:call-template>
250     </xsl:when>
251     <xsl:when test="contains($name, '&gt;')">
252       <xsl:call-template name="make-id">
253         <xsl:with-param name="name"
254          select="concat(substring-before($name, '&gt;'), '_gt_', substring-after($name, '&gt;'))"/>
255       </xsl:call-template>
256     </xsl:when>
257     <xsl:when test="contains($name, '[')">
258       <xsl:call-template name="make-id">
259         <xsl:with-param name="name"
260          select="concat(substring-before($name, '['), '_lb_', substring-after($name, '['))"/>
261       </xsl:call-template>
262     </xsl:when>
263     <xsl:when test="contains($name, ']')">
264       <xsl:call-template name="make-id">
265         <xsl:with-param name="name"
266          select="concat(substring-before($name, ']'), '_rb_', substring-after($name, ']'))"/>
267       </xsl:call-template>
268     </xsl:when>
269     <xsl:when test="contains($name, '(')">
270       <xsl:call-template name="make-id">
271         <xsl:with-param name="name"
272          select="concat(substring-before($name, '('), '_lp_', substring-after($name, '('))"/>
273       </xsl:call-template>
274     </xsl:when>
275     <xsl:when test="contains($name, ')')">
276       <xsl:call-template name="make-id">
277         <xsl:with-param name="name"
278          select="concat(substring-before($name, ')'), '_rp_', substring-after($name, ')'))"/>
279       </xsl:call-template>
280     </xsl:when>
281     <xsl:when test="contains($name, '+')">
282       <xsl:call-template name="make-id">
283         <xsl:with-param name="name"
284          select="concat(substring-before($name, '+'), '_plus_', substring-after($name, '+'))"/>
285       </xsl:call-template>
286     </xsl:when>
287     <xsl:when test="contains($name, '-')">
288       <xsl:call-template name="make-id">
289         <xsl:with-param name="name"
290          select="concat(substring-before($name, '-'), '_minus_', substring-after($name, '-'))"/>
291       </xsl:call-template>
292     </xsl:when>
293     <xsl:when test="contains($name, '*')">
294       <xsl:call-template name="make-id">
295         <xsl:with-param name="name"
296          select="concat(substring-before($name, '*'), '_star_', substring-after($name, '*'))"/>
297       </xsl:call-template>
298     </xsl:when>
299     <xsl:when test="contains($name, '~')">
300       <xsl:call-template name="make-id">
301         <xsl:with-param name="name"
302          select="concat(substring-before($name, '~'), '_', substring-after($name, '~'))"/>
303       </xsl:call-template>
304     </xsl:when>
305     <xsl:when test="contains($name, ' ')">
306       <xsl:call-template name="make-id">
307         <xsl:with-param name="name"
308          select="concat(substring-before($name, ' '), '_', substring-after($name, ' '))"/>
309       </xsl:call-template>
310     </xsl:when>
311     <xsl:when test="contains($name, 'boost__posix_time__ptime')">
312       <xsl:call-template name="make-id">
313         <xsl:with-param name="name"
314          select="concat(substring-before($name, 'boost__posix_time__ptime'), 'ptime', substring-after($name, 'boost__posix_time__ptime'))"/>
315       </xsl:call-template>
316     </xsl:when>
317     <xsl:otherwise>
318       <xsl:value-of select="$name"/>
319     </xsl:otherwise>
320   </xsl:choose>
321 </xsl:template>
322
323
324 <!--========== Markup ==========-->
325
326 <xsl:template match="para" mode="markup">
327 <xsl:text>
328 </xsl:text><xsl:apply-templates mode="markup"/><xsl:text>
329 </xsl:text>
330 </xsl:template>
331
332
333 <xsl:template match="para" mode="markup-nested">
334 <xsl:apply-templates mode="markup-nested"/>
335 </xsl:template>
336
337
338 <xsl:template match="title" mode="markup">
339   <xsl:variable name="title">
340     <xsl:value-of select="."/>
341   </xsl:variable>
342   <xsl:if test="string-length($title) > 0">
343 [heading <xsl:value-of select="."/>]
344   </xsl:if>
345 </xsl:template>
346
347
348 <xsl:template match="programlisting" mode="markup">
349   <xsl:value-of select="$newline"/>
350   <xsl:value-of select="$newline"/>
351   <xsl:apply-templates mode="codeline"/>
352   <xsl:value-of select="$newline"/>
353   <xsl:value-of select="$newline"/>
354 </xsl:template>
355
356
357 <xsl:template match="programlisting" mode="markup-nested">
358   <xsl:value-of select="$newline"/>
359   <xsl:text>``</xsl:text>
360   <xsl:value-of select="$newline"/>
361   <xsl:apply-templates mode="codeline"/>
362   <xsl:if test="substring(., string-length(.)) = $newline">
363     <xsl:value-of select="$newline"/>
364   </xsl:if>
365   <xsl:text>``</xsl:text>
366   <xsl:value-of select="$newline"/>
367 </xsl:template>
368
369
370 <xsl:template match="codeline" mode="codeline">
371   <xsl:if test="string-length(.) &gt; 0">
372     <xsl:text>  </xsl:text>
373   </xsl:if>
374   <xsl:apply-templates mode="codeline"/>
375   <xsl:value-of select="$newline"/>
376 </xsl:template>
377
378
379 <xsl:template match="sp" mode="markup">
380 <xsl:text> </xsl:text>
381 </xsl:template>
382
383
384 <xsl:template match="sp" mode="markup-nested">
385 <xsl:text> </xsl:text>
386 </xsl:template>
387
388
389 <xsl:template match="sp" mode="codeline">
390   <xsl:text> </xsl:text>
391 </xsl:template>
392
393
394 <xsl:template match="linebreak" mode="markup">
395 <xsl:text>
396
397 </xsl:text>
398 </xsl:template>
399
400
401 <xsl:template match="linebreak" mode="markup-nested">
402 <xsl:text>
403
404 </xsl:text>
405 </xsl:template>
406
407
408 <xsl:template match="computeroutput" mode="markup">
409 <xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text>
410 </xsl:template>
411
412
413 <xsl:template match="computeroutput" mode="markup-nested">
414 <xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text>
415 </xsl:template>
416
417
418 <xsl:template match="listitem" mode="markup">
419 * <xsl:call-template name="strip-leading-whitespace">
420   <xsl:with-param name="text">
421     <xsl:apply-templates mode="markup"/>
422   </xsl:with-param>
423 </xsl:call-template>
424 </xsl:template>
425
426
427 <xsl:template match="bold" mode="markup">[*<xsl:apply-templates mode="markup"/>]</xsl:template>
428
429
430 <xsl:template match="emphasis" mode="markup">['<xsl:apply-templates mode="markup"/>]</xsl:template>
431
432
433 <xsl:template match="parameterlist" mode="markup">
434   <xsl:choose>
435     <xsl:when test="@kind='param'">
436 [heading Parameters]
437     </xsl:when>
438     <xsl:when test="@kind='exception'">
439 [heading Exceptions]
440     </xsl:when>
441   </xsl:choose>
442
443 [variablelist
444   <xsl:apply-templates mode="markup"/>
445 ]
446 </xsl:template>
447
448
449 <xsl:template match="parameteritem" mode="markup">
450 [[<xsl:value-of select="parameternamelist"/>][<xsl:apply-templates select="parameterdescription" mode="markup-nested"/>]]
451 </xsl:template>
452
453
454 <xsl:template match="simplesect" mode="markup">
455   <xsl:choose>
456     <xsl:when test="@kind='return'">
457 [heading Return Value]
458       <xsl:apply-templates mode="markup"/>
459     </xsl:when>
460     <xsl:when test="@kind='see'">
461     </xsl:when>
462     <xsl:when test="@kind='note'">
463 [heading Remarks]
464       <xsl:apply-templates mode="markup"/>
465     </xsl:when>
466     <xsl:when test="@kind='par'">
467       <xsl:if test="not(starts-with(title, 'Concepts:'))">
468         <xsl:apply-templates mode="markup"/>
469       </xsl:if>
470     </xsl:when>
471     <xsl:otherwise>
472       <xsl:apply-templates mode="markup"/>
473     </xsl:otherwise>
474   </xsl:choose>
475 </xsl:template>
476
477
478 <xsl:template match="text()" mode="markup">
479   <xsl:variable name="text" select="."/>
480   <xsl:variable name="starts-with-whitespace" select="
481       starts-with($text, ' ') or starts-with($text, $newline)"/>
482   <xsl:variable name="preceding-node-name">
483     <xsl:for-each select="preceding-sibling::*">
484       <xsl:if test="position() = last()">
485         <xsl:value-of select="local-name()"/>
486       </xsl:if>
487     </xsl:for-each>
488   </xsl:variable>
489   <xsl:variable name="after-newline" select="
490       $preceding-node-name = 'programlisting' or
491       $preceding-node-name = 'linebreak'"/>
492   <xsl:choose>
493     <xsl:when test="$starts-with-whitespace and $after-newline">
494       <xsl:call-template name="escape-text">
495         <xsl:with-param name="text">
496           <xsl:call-template name="strip-leading-whitespace">
497             <xsl:with-param name="text" select="$text"/>
498           </xsl:call-template>
499         </xsl:with-param>
500       </xsl:call-template>
501     </xsl:when>
502     <xsl:otherwise>
503       <xsl:call-template name="escape-text">
504         <xsl:with-param name="text" select="$text"/>
505       </xsl:call-template>
506     </xsl:otherwise>
507   </xsl:choose>
508 </xsl:template>
509
510
511 <xsl:template match="text()" mode="markup-nested">
512   <xsl:variable name="text" select="."/>
513   <xsl:variable name="starts-with-whitespace" select="
514       starts-with($text, ' ') or starts-with($text, $newline)"/>
515   <xsl:variable name="preceding-node-name">
516     <xsl:for-each select="preceding-sibling::*">
517       <xsl:if test="position() = last()">
518         <xsl:value-of select="local-name()"/>
519       </xsl:if>
520     </xsl:for-each>
521   </xsl:variable>
522   <xsl:variable name="after-newline" select="
523       $preceding-node-name = 'programlisting' or
524       $preceding-node-name = 'linebreak'"/>
525   <xsl:choose>
526     <xsl:when test="$starts-with-whitespace and $after-newline">
527       <xsl:call-template name="escape-text">
528         <xsl:with-param name="text">
529           <xsl:call-template name="strip-leading-whitespace">
530             <xsl:with-param name="text" select="$text"/>
531           </xsl:call-template>
532         </xsl:with-param>
533       </xsl:call-template>
534     </xsl:when>
535     <xsl:otherwise>
536       <xsl:call-template name="escape-text">
537         <xsl:with-param name="text" select="$text"/>
538       </xsl:call-template>
539     </xsl:otherwise>
540   </xsl:choose>
541 </xsl:template>
542
543
544 <xsl:template name="strip-leading-whitespace">
545   <xsl:param name="text"/>
546   <xsl:choose>
547     <xsl:when test="starts-with($text, ' ')">
548       <xsl:call-template name="strip-leading-whitespace">
549         <xsl:with-param name="text" select="substring($text, 2)"/>
550       </xsl:call-template>
551     </xsl:when>
552     <xsl:when test="starts-with($text, $newline)">
553       <xsl:call-template name="strip-leading-whitespace">
554         <xsl:with-param name="text" select="substring($text, 2)"/>
555       </xsl:call-template>
556     </xsl:when>
557     <xsl:otherwise>
558       <xsl:value-of select="$text"/>
559     </xsl:otherwise>
560   </xsl:choose>
561 </xsl:template>
562
563
564 <xsl:template name="escape-text">
565   <xsl:param name="text"/>
566   <xsl:choose>
567     <xsl:when test="contains($text, '_')">
568       <xsl:value-of select="substring-before($text, '_')"/>
569       <xsl:text>\_</xsl:text>
570       <xsl:call-template name="escape-text">
571         <xsl:with-param name="text" select="substring-after($text, '_')"/>
572       </xsl:call-template>
573     </xsl:when>
574     <xsl:otherwise>
575       <xsl:value-of select="$text"/>
576     </xsl:otherwise>
577   </xsl:choose>
578 </xsl:template>
579
580
581 <xsl:template name="escape-name">
582   <xsl:param name="text"/>
583   <xsl:choose>
584     <xsl:when test="contains($text, '[')">
585       <xsl:value-of select="substring-before($text, '[')"/>
586       <xsl:text>\[</xsl:text>
587       <xsl:call-template name="escape-name">
588         <xsl:with-param name="text" select="substring-after($text, '[')"/>
589       </xsl:call-template>
590     </xsl:when>
591     <xsl:when test="contains($text, ']')">
592       <xsl:value-of select="substring-before($text, ']')"/>
593       <xsl:text>\]</xsl:text>
594       <xsl:call-template name="escape-name">
595         <xsl:with-param name="text" select="substring-after($text, ']')"/>
596       </xsl:call-template>
597     </xsl:when>
598     <xsl:otherwise>
599       <xsl:value-of select="$text"/>
600     </xsl:otherwise>
601   </xsl:choose>
602 </xsl:template>
603
604
605 <xsl:template match="ref[@kindref='compound']" mode="markup">
606   <xsl:variable name="name">
607     <xsl:value-of select="."/>
608   </xsl:variable>
609   <xsl:choose>
610     <xsl:when test="contains(@refid, 'asio') or contains($name, 'asio::')">
611       <xsl:variable name="dox-ref-id" select="@refid"/>
612       <xsl:variable name="ref-name">
613         <xsl:call-template name="strip-asio-ns">
614           <xsl:with-param name="name"
615             select="(/doxygen//compounddef[@id=$dox-ref-id])[1]/compoundname"/>
616         </xsl:call-template>
617       </xsl:variable>
618       <xsl:variable name="ref-id">
619         <xsl:call-template name="make-id">
620           <xsl:with-param name="name" select="$ref-name"/>
621         </xsl:call-template>
622       </xsl:variable>
623       <xsl:text>[link boost_asio.reference.</xsl:text>
624       <xsl:value-of select="$ref-id"/>
625       <xsl:text> `</xsl:text>
626       <xsl:value-of name="text" select="$ref-name"/>
627       <xsl:text>`]</xsl:text>
628     </xsl:when>
629     <xsl:otherwise>
630       <xsl:text>`</xsl:text>
631       <xsl:value-of select="."/>
632       <xsl:text>`</xsl:text>
633     </xsl:otherwise>
634   </xsl:choose>
635 </xsl:template>
636
637
638 <xsl:template match="ref[@kindref='compound']" mode="markup-nested">
639   <xsl:variable name="name">
640     <xsl:value-of select="."/>
641   </xsl:variable>
642   <xsl:choose>
643     <xsl:when test="contains(@refid, 'asio') or contains($name, 'asio::')">
644       <xsl:variable name="dox-ref-id" select="@refid"/>
645       <xsl:variable name="ref-name">
646         <xsl:call-template name="strip-asio-ns">
647           <xsl:with-param name="name"
648             select="(/doxygen//compounddef[@id=$dox-ref-id])[1]/compoundname"/>
649         </xsl:call-template>
650       </xsl:variable>
651       <xsl:variable name="ref-id">
652         <xsl:call-template name="make-id">
653           <xsl:with-param name="name" select="$ref-name"/>
654         </xsl:call-template>
655       </xsl:variable>
656       <xsl:text>[link boost_asio.reference.</xsl:text>
657       <xsl:value-of select="$ref-id"/>
658       <xsl:text> `</xsl:text>
659       <xsl:value-of name="text" select="$ref-name"/>
660       <xsl:text>`]</xsl:text>
661     </xsl:when>
662     <xsl:otherwise>
663       <xsl:text>`</xsl:text>
664       <xsl:value-of select="."/>
665       <xsl:text>`</xsl:text>
666     </xsl:otherwise>
667   </xsl:choose>
668 </xsl:template>
669
670
671 <xsl:template match="ref[@kindref='member']" mode="markup">
672   <xsl:variable name="dox-ref-id" select="@refid"/>
673   <xsl:variable name="memberdefs" select="/doxygen//compounddef/sectiondef/memberdef[@id=$dox-ref-id]"/>
674   <xsl:choose>
675     <xsl:when test="contains(@refid, 'namespaceboost_1_1asio') and count($memberdefs) &gt; 0">
676       <xsl:variable name="dox-compound-name" select="($memberdefs)[1]/../../compoundname"/>
677       <xsl:variable name="dox-name" select="($memberdefs)[1]/name"/>
678       <xsl:variable name="ref-name">
679         <xsl:call-template name="strip-asio-ns">
680           <xsl:with-param name="name" select="concat($dox-compound-name,'::',$dox-name)"/>
681         </xsl:call-template>
682       </xsl:variable>
683       <xsl:variable name="ref-id">
684         <xsl:call-template name="make-id">
685           <xsl:with-param name="name" select="$ref-name"/>
686         </xsl:call-template>
687       </xsl:variable>
688       <xsl:text>[link boost_asio.reference.</xsl:text>
689       <xsl:value-of select="$ref-id"/>
690       <xsl:text> `</xsl:text>
691       <xsl:value-of name="text" select="$ref-name"/>
692       <xsl:text>`]</xsl:text>
693     </xsl:when>
694     <xsl:otherwise>
695       <xsl:text>`</xsl:text>
696       <xsl:value-of select="."/>
697       <xsl:text>`</xsl:text>
698     </xsl:otherwise>
699   </xsl:choose>
700 </xsl:template>
701
702
703 <xsl:template match="ref[@kindref='member']" mode="markup-nested">
704   <xsl:variable name="dox-ref-id" select="@refid"/>
705   <xsl:variable name="memberdefs" select="/doxygen//compounddef/sectiondef/memberdef[@id=$dox-ref-id]"/>
706   <xsl:choose>
707     <xsl:when test="contains(@refid, 'namespaceboost_1_1asio') and count($memberdefs) &gt; 0">
708       <xsl:variable name="dox-compound-name" select="($memberdefs)[1]/../../compoundname"/>
709       <xsl:variable name="dox-name" select="($memberdefs)[1]/name"/>
710       <xsl:variable name="ref-name">
711         <xsl:call-template name="strip-asio-ns">
712           <xsl:with-param name="name" select="concat($dox-compound-name,'::',$dox-name)"/>
713         </xsl:call-template>
714       </xsl:variable>
715       <xsl:variable name="ref-id">
716         <xsl:call-template name="make-id">
717           <xsl:with-param name="name" select="$ref-name"/>
718         </xsl:call-template>
719       </xsl:variable>
720       <xsl:text>[link boost_asio.reference.</xsl:text>
721       <xsl:value-of select="$ref-id"/>
722       <xsl:text> `</xsl:text>
723       <xsl:value-of name="text" select="$ref-name"/>
724       <xsl:text>`]</xsl:text>
725     </xsl:when>
726     <xsl:otherwise>
727       <xsl:text>`</xsl:text>
728       <xsl:value-of select="."/>
729       <xsl:text>`</xsl:text>
730     </xsl:otherwise>
731   </xsl:choose>
732 </xsl:template>
733
734
735 <xsl:template name="header-requirements">
736   <xsl:param name="file"/>
737   <xsl:value-of select="$newline"/>
738   <xsl:text>[heading Requirements]</xsl:text>
739   <xsl:value-of select="$newline"/>
740   <xsl:value-of select="$newline"/>
741   <xsl:text>['Header: ]</xsl:text>
742   <xsl:text>[^boost/asio/</xsl:text>
743   <xsl:value-of select="substring-after($file, 'boost/asio/')"/>
744   <xsl:text>]</xsl:text>
745   <xsl:value-of select="$newline"/>
746   <xsl:value-of select="$newline"/>
747   <xsl:text>['Convenience header: ]</xsl:text>
748   <xsl:choose>
749     <xsl:when test="contains($file, 'boost/asio/ssl')">
750       <xsl:text>[^boost/asio/ssl.hpp]</xsl:text>
751     </xsl:when>
752     <xsl:when test="contains($file, 'boost/asio/high_resolution_timer')">
753       <xsl:text>None</xsl:text>
754     </xsl:when>
755     <xsl:when test="contains($file, 'boost/asio/spawn')">
756       <xsl:text>None</xsl:text>
757     </xsl:when>
758     <xsl:when test="contains($file, 'boost/asio/steady_timer')">
759       <xsl:text>None</xsl:text>
760     </xsl:when>
761     <xsl:when test="contains($file, 'boost/asio/system_timer')">
762       <xsl:text>None</xsl:text>
763     </xsl:when>
764     <xsl:when test="contains($file, 'boost/asio/use_future')">
765       <xsl:text>None</xsl:text>
766     </xsl:when>
767     <xsl:otherwise>
768       <xsl:text>[^boost/asio.hpp]</xsl:text>
769     </xsl:otherwise>
770   </xsl:choose>
771   <xsl:value-of select="$newline"/>
772 </xsl:template>
773
774
775 <!--========== Class ==========-->
776
777 <xsl:template name="class">
778   <xsl:variable name="class-name">
779     <xsl:call-template name="strip-asio-ns">
780       <xsl:with-param name="name" select="compoundname"/>
781     </xsl:call-template>
782   </xsl:variable>
783   <xsl:variable name="unqualified-class-name">
784     <xsl:call-template name="strip-ns">
785       <xsl:with-param name="name" select="compoundname"/>
786     </xsl:call-template>
787   </xsl:variable>
788   <xsl:variable name="class-id">
789     <xsl:call-template name="make-id">
790       <xsl:with-param name="name" select="$class-name"/>
791     </xsl:call-template>
792   </xsl:variable>
793   <xsl:variable name="class-file" select="location/@file"/>
794 [section:<xsl:value-of select="$class-id"/><xsl:text> </xsl:text><xsl:value-of select="$class-name"/>]
795
796 <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
797
798 </xsl:text>
799
800 <xsl:apply-templates select="templateparamlist"
801  mode="class-detail"/><xsl:text>  </xsl:text><xsl:value-of select="@kind"/><xsl:text> </xsl:text><xsl:value-of
802  select="$unqualified-class-name"/><xsl:if test="count(basecompoundref[not(contains(.,'::detail'))]) > 0"> :</xsl:if><xsl:text>
803 </xsl:text><xsl:for-each select="basecompoundref[not(contains(.,'::detail'))]">
804 <xsl:text>    </xsl:text><xsl:if test="@prot='public'">public </xsl:if><xsl:call-template
805  name="strip-asio-ns"><xsl:with-param name="name" select="."/></xsl:call-template><xsl:if
806  test="not(position() = last())">,</xsl:if><xsl:text>
807 </xsl:text></xsl:for-each><xsl:text>
808 </xsl:text>
809
810 <xsl:call-template name="class-tables">
811   <xsl:with-param name="class-name" select="$class-name"/>
812   <xsl:with-param name="class-id" select="$class-id"/>
813 </xsl:call-template>
814
815 <xsl:apply-templates select="detaileddescription" mode="markup"/>
816
817 <xsl:call-template name="header-requirements">
818   <xsl:with-param name="file" select="$class-file"/>
819 </xsl:call-template>
820
821 <xsl:call-template name="class-members">
822   <xsl:with-param name="class-name" select="$class-name"/>
823   <xsl:with-param name="class-id" select="$class-id"/>
824   <xsl:with-param name="class-file" select="$class-file"/>
825 </xsl:call-template>
826
827 [endsect]
828 </xsl:template>
829
830
831 <xsl:template name="class-tables">
832 <xsl:param name="class-name"/>
833 <xsl:param name="class-id"/>
834 <xsl:if test="
835     count(
836       sectiondef[@kind='public-type'] |
837       innerclass[@prot='public' and not(contains(., '_handler'))]) &gt; 0">
838 [heading Types]
839 [table
840   [[Name][Description]]
841 <xsl:for-each select="
842     sectiondef[@kind='public-type']/memberdef |
843     innerclass[@prot='public' and not(contains(., '_handler'))]" mode="class-table">
844   <xsl:sort select="concat(name, (.)[not(name)])"/>
845   [
846 <xsl:choose>
847   <xsl:when test="count(name) &gt; 0">
848     [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
849       <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]]
850     [<xsl:call-template name="escape-name"><xsl:with-param name="text" select="briefdescription"/></xsl:call-template>]
851   </xsl:when>
852   <xsl:otherwise>
853     <xsl:variable name="type-name">
854       <xsl:call-template name="strip-asio-ns">
855         <xsl:with-param name="name" select="."/>
856       </xsl:call-template>
857     </xsl:variable>
858     <xsl:variable name="unqualified-type-name">
859       <xsl:call-template name="strip-ns">
860         <xsl:with-param name="name" select="."/>
861       </xsl:call-template>
862     </xsl:variable>
863     <xsl:variable name="type-id">
864       <xsl:call-template name="make-id">
865         <xsl:with-param name="name" select="$type-name"/>
866       </xsl:call-template>
867     </xsl:variable>
868     <xsl:variable name="type-ref-id" select="@refid"/>
869     [[link boost_asio.reference.<xsl:value-of select="$type-id"/>
870       <xsl:text> </xsl:text>[*<xsl:value-of select="$unqualified-type-name"/>]]]
871     [<xsl:value-of select="(/doxygen//compounddef[@id=$type-ref-id])[1]/briefdescription"/>]
872   </xsl:otherwise>
873 </xsl:choose>
874   ]
875 </xsl:for-each>
876 ]
877 </xsl:if>
878
879 <xsl:if test="count(sectiondef[@kind='public-func' or @kind='public-static-func']) > 0">
880 [heading Member Functions]
881 [table
882   [[Name][Description]]
883 <xsl:for-each select="sectiondef[@kind='public-func' or @kind='public-static-func']/memberdef" mode="class-table">
884   <xsl:sort select="name"/>
885   <xsl:variable name="name">
886     <xsl:value-of select="name"/>
887   </xsl:variable>
888   <xsl:variable name="escaped-name">
889     <xsl:call-template name="escape-name">
890       <xsl:with-param name="text" select="$name"/>
891     </xsl:call-template>
892   </xsl:variable>
893   <xsl:variable name="id">
894     <xsl:call-template name="make-id">
895       <xsl:with-param name="name" select="$name"/>
896     </xsl:call-template>
897   </xsl:variable>
898   <xsl:variable name="doxygen-id">
899     <xsl:value-of select="@id"/>
900   </xsl:variable>
901   <xsl:variable name="overload-count">
902     <xsl:value-of select="count(../memberdef[name = $name])"/>
903   </xsl:variable>
904   <xsl:variable name="overload-position">
905     <xsl:for-each select="../memberdef[name = $name]">
906       <xsl:if test="@id = $doxygen-id">
907         <xsl:value-of select="position()"/>
908       </xsl:if>
909     </xsl:for-each>
910   </xsl:variable>
911   <xsl:if test="$overload-position = 1">
912   [
913     [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
914       <xsl:text> </xsl:text>[*<xsl:value-of select="$escaped-name"/><xsl:text>]]]
915     [</xsl:text><xsl:value-of select="briefdescription"/>
916   </xsl:if>
917   <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
918     <xsl:value-of select="$newline"/>
919     <xsl:value-of select="$newline"/>
920     <xsl:text>     </xsl:text>
921     <xsl:value-of select="briefdescription"/>
922   </xsl:if>
923   <xsl:if test="$overload-position = $overload-count">
924   <xsl:text>]
925   ]
926   </xsl:text>
927   </xsl:if>
928 </xsl:for-each>
929 ]
930 </xsl:if>
931
932 <xsl:if test="count(sectiondef[@kind='protected-func' or @kind='protected-static-func']) > 0">
933 [heading Protected Member Functions]
934 [table
935   [[Name][Description]]
936 <xsl:for-each select="sectiondef[@kind='protected-func' or @kind='protected-static-func']/memberdef" mode="class-table">
937   <xsl:sort select="name"/>
938   <xsl:variable name="name">
939     <xsl:value-of select="name"/>
940   </xsl:variable>
941   <xsl:variable name="id">
942     <xsl:call-template name="make-id">
943       <xsl:with-param name="name" select="$name"/>
944     </xsl:call-template>
945   </xsl:variable>
946   <xsl:variable name="doxygen-id">
947     <xsl:value-of select="@id"/>
948   </xsl:variable>
949   <xsl:variable name="overload-count">
950     <xsl:value-of select="count(../memberdef[name = $name])"/>
951   </xsl:variable>
952   <xsl:variable name="overload-position">
953     <xsl:for-each select="../memberdef[name = $name]">
954       <xsl:if test="@id = $doxygen-id">
955         <xsl:value-of select="position()"/>
956       </xsl:if>
957     </xsl:for-each>
958   </xsl:variable>
959   <xsl:if test="$overload-position = 1">
960   [
961     [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
962       <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
963     [</xsl:text><xsl:value-of select="briefdescription"/>
964   </xsl:if>
965   <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
966     <xsl:value-of select="$newline"/>
967     <xsl:value-of select="$newline"/>
968     <xsl:text>     </xsl:text>
969     <xsl:value-of select="briefdescription"/>
970   </xsl:if>
971   <xsl:if test="$overload-position = $overload-count">
972   <xsl:text>]
973   ]
974   </xsl:text>
975   </xsl:if>
976 </xsl:for-each>
977 ]
978 </xsl:if>
979
980 <xsl:if test="$class-name = 'io_service::service'">
981 <xsl:if test="count(sectiondef[@kind='private-func']) > 0">
982 [heading Private Member Functions]
983 [table
984   [[Name][Description]]
985 <xsl:for-each select="sectiondef[@kind='private-func']/memberdef" mode="class-table">
986   <xsl:sort select="name"/>
987   <xsl:variable name="name">
988     <xsl:value-of select="name"/>
989   </xsl:variable>
990   <xsl:variable name="id">
991     <xsl:call-template name="make-id">
992       <xsl:with-param name="name" select="$name"/>
993     </xsl:call-template>
994   </xsl:variable>
995   <xsl:variable name="doxygen-id">
996     <xsl:value-of select="@id"/>
997   </xsl:variable>
998   <xsl:variable name="overload-count">
999     <xsl:value-of select="count(../memberdef[name = $name])"/>
1000   </xsl:variable>
1001   <xsl:variable name="overload-position">
1002     <xsl:for-each select="../memberdef[name = $name]">
1003       <xsl:if test="@id = $doxygen-id">
1004         <xsl:value-of select="position()"/>
1005       </xsl:if>
1006     </xsl:for-each>
1007   </xsl:variable>
1008   <xsl:if test="$overload-position = 1">
1009   [
1010     [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
1011       <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
1012     [</xsl:text><xsl:value-of select="briefdescription"/>
1013   </xsl:if>
1014   <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
1015     <xsl:value-of select="$newline"/>
1016     <xsl:value-of select="$newline"/>
1017     <xsl:text>     </xsl:text>
1018     <xsl:value-of select="briefdescription"/>
1019   </xsl:if>
1020   <xsl:if test="$overload-position = $overload-count">
1021   <xsl:text>]
1022   ]
1023   </xsl:text>
1024   </xsl:if>
1025 </xsl:for-each>
1026 ]
1027 </xsl:if>
1028 </xsl:if>
1029
1030 <xsl:if test="count(sectiondef[@kind='public-attrib' or @kind='public-static-attrib']) > 0">
1031 [heading Data Members]
1032 [table
1033   [[Name][Description]]
1034 <xsl:for-each select="sectiondef[@kind='public-attrib' or @kind='public-static-attrib']/memberdef" mode="class-table">
1035   <xsl:sort select="name"/>
1036   [
1037     [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
1038       <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]]
1039     [<xsl:value-of select="briefdescription"/>]
1040   ]
1041 </xsl:for-each>
1042 ]
1043 </xsl:if>
1044
1045 <xsl:if test="count(sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']) > 0">
1046 [heading Protected Data Members]
1047 [table
1048   [[Name][Description]]
1049 <xsl:for-each select="sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']/memberdef" mode="class-table">
1050   <xsl:sort select="name"/>
1051   [
1052     [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
1053       <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]]
1054     [<xsl:value-of select="briefdescription"/>]
1055   ]
1056 </xsl:for-each>
1057 ]
1058 </xsl:if>
1059
1060 <xsl:if test="count(sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]) &gt; 0">
1061 [heading Friends]
1062 [table
1063   [[Name][Description]]
1064 <xsl:for-each select="sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-table">
1065   <xsl:sort select="name"/>
1066   <xsl:variable name="name">
1067     <xsl:value-of select="name"/>
1068   </xsl:variable>
1069   <xsl:variable name="id">
1070     <xsl:call-template name="make-id">
1071       <xsl:with-param name="name" select="$name"/>
1072     </xsl:call-template>
1073   </xsl:variable>
1074   <xsl:variable name="doxygen-id">
1075     <xsl:value-of select="@id"/>
1076   </xsl:variable>
1077   <xsl:variable name="overload-count">
1078     <xsl:value-of select="count(../memberdef[name = $name])"/>
1079   </xsl:variable>
1080   <xsl:variable name="overload-position">
1081     <xsl:for-each select="../memberdef[name = $name]">
1082       <xsl:if test="@id = $doxygen-id">
1083         <xsl:value-of select="position()"/>
1084       </xsl:if>
1085     </xsl:for-each>
1086   </xsl:variable>
1087   <xsl:if test="$overload-position = 1">
1088   [
1089     [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
1090       <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
1091     [</xsl:text><xsl:value-of select="briefdescription"/>
1092   </xsl:if>
1093   <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
1094     <xsl:value-of select="$newline"/>
1095     <xsl:value-of select="$newline"/>
1096     <xsl:text>     </xsl:text>
1097     <xsl:value-of select="briefdescription"/>
1098   </xsl:if>
1099   <xsl:if test="$overload-position = $overload-count">
1100   <xsl:text>]
1101   ]
1102   </xsl:text>
1103   </xsl:if>
1104 </xsl:for-each>
1105 ]
1106 </xsl:if>
1107
1108 <xsl:if test="count(sectiondef[@kind='related']/memberdef) &gt; 0">
1109 [heading Related Functions]
1110 [table
1111   [[Name][Description]]
1112 <xsl:for-each select="sectiondef[@kind='related']/memberdef" mode="class-table">
1113   <xsl:sort select="name"/>
1114   <xsl:variable name="name">
1115     <xsl:value-of select="name"/>
1116   </xsl:variable>
1117   <xsl:variable name="id">
1118     <xsl:call-template name="make-id">
1119       <xsl:with-param name="name" select="$name"/>
1120     </xsl:call-template>
1121   </xsl:variable>
1122   <xsl:variable name="doxygen-id">
1123     <xsl:value-of select="@id"/>
1124   </xsl:variable>
1125   <xsl:variable name="overload-count">
1126     <xsl:value-of select="count(../memberdef[name = $name])"/>
1127   </xsl:variable>
1128   <xsl:variable name="overload-position">
1129     <xsl:for-each select="../memberdef[name = $name]">
1130       <xsl:if test="@id = $doxygen-id">
1131         <xsl:value-of select="position()"/>
1132       </xsl:if>
1133     </xsl:for-each>
1134   </xsl:variable>
1135   <xsl:if test="$overload-position = 1">
1136   [
1137     [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
1138       <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
1139     [</xsl:text><xsl:value-of select="briefdescription"/>
1140   </xsl:if>
1141   <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
1142     <xsl:value-of select="$newline"/>
1143     <xsl:value-of select="$newline"/>
1144     <xsl:text>     </xsl:text>
1145     <xsl:value-of select="briefdescription"/>
1146   </xsl:if>
1147   <xsl:if test="$overload-position = $overload-count">
1148   <xsl:text>]
1149   ]
1150   </xsl:text>
1151   </xsl:if>
1152 </xsl:for-each>
1153 ]
1154 </xsl:if>
1155
1156 </xsl:template>
1157
1158
1159 <xsl:template name="class-members">
1160 <xsl:param name="class-name"/>
1161 <xsl:param name="class-id"/>
1162 <xsl:param name="class-file"/>
1163 <xsl:apply-templates select="sectiondef[@kind='public-type' or @kind='public-func' or @kind='public-static-func' or @kind='public-attrib' or @kind='public-static-attrib' or @kind='protected-func' or @kind='protected-static-func' or @kind='protected-attrib' or @kind='protected-static-attrib' or @kind='friend' or @kind='related']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-detail">
1164   <xsl:sort select="name"/>
1165   <xsl:with-param name="class-name" select="$class-name"/>
1166   <xsl:with-param name="class-id" select="$class-id"/>
1167   <xsl:with-param name="class-file" select="$class-file"/>
1168 </xsl:apply-templates>
1169 <xsl:if test="$class-name = 'io_service::service'">
1170   <xsl:apply-templates select="sectiondef[@kind='private-func']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-detail">
1171     <xsl:sort select="name"/>
1172     <xsl:with-param name="class-name" select="$class-name"/>
1173     <xsl:with-param name="class-id" select="$class-id"/>
1174     <xsl:with-param name="class-file" select="$class-file"/>
1175   </xsl:apply-templates>
1176 </xsl:if>
1177 </xsl:template>
1178
1179
1180 <!-- Class detail -->
1181
1182 <xsl:template match="memberdef" mode="class-detail">
1183   <xsl:param name="class-name"/>
1184   <xsl:param name="class-id"/>
1185   <xsl:param name="class-file"/>
1186   <xsl:variable name="name">
1187     <xsl:value-of select="name"/>
1188   </xsl:variable>
1189   <xsl:variable name="escaped-name">
1190     <xsl:call-template name="escape-name">
1191       <xsl:with-param name="text" select="$name"/>
1192     </xsl:call-template>
1193   </xsl:variable>
1194   <xsl:variable name="id">
1195     <xsl:call-template name="make-id">
1196       <xsl:with-param name="name" select="$name"/>
1197     </xsl:call-template>
1198   </xsl:variable>
1199   <xsl:variable name="doxygen-id">
1200     <xsl:value-of select="@id"/>
1201   </xsl:variable>
1202   <xsl:variable name="overload-count">
1203     <xsl:value-of select="count(../memberdef[name = $name])"/>
1204   </xsl:variable>
1205   <xsl:variable name="overload-position">
1206     <xsl:for-each select="../memberdef[name = $name]">
1207       <xsl:if test="@id = $doxygen-id">
1208         <xsl:value-of select="position()"/>
1209       </xsl:if>
1210     </xsl:for-each>
1211   </xsl:variable>
1212
1213 <xsl:if test="$overload-count &gt; 1 and $overload-position = 1">
1214 [section:<xsl:value-of select="$id"/><xsl:text> </xsl:text>
1215 <xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/>]
1216
1217 <xsl:text>[indexterm2 </xsl:text>
1218 <xsl:value-of select="$escaped-name"/>
1219 <xsl:text>..</xsl:text>
1220 <xsl:value-of select="$class-name"/>
1221 <xsl:text>] </xsl:text>
1222
1223 <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
1224 </xsl:text>
1225
1226 <xsl:for-each select="../memberdef[name = $name]">
1227 <xsl:if test="position() &gt; 1 and not(briefdescription = preceding-sibling::*/briefdescription)">
1228   <xsl:value-of select="$newline"/>
1229   <xsl:apply-templates select="briefdescription" mode="markup"/>
1230   <xsl:value-of select="$newline"/>
1231 </xsl:if>
1232 <xsl:text>
1233 </xsl:text><xsl:apply-templates select="templateparamlist" mode="class-detail"/>
1234 <xsl:text>  </xsl:text>
1235  <xsl:if test="@explicit='yes'">explicit </xsl:if>
1236  <xsl:if test="@static='yes'">static </xsl:if>
1237  <xsl:if test="@virt='virtual'">virtual </xsl:if>
1238  <xsl:variable name="stripped-type">
1239   <xsl:call-template name="cleanup-type">
1240     <xsl:with-param name="name" select="type"/>
1241   </xsl:call-template>
1242  </xsl:variable>
1243  <xsl:if test="string-length($stripped-type) &gt; 0">
1244  <xsl:value-of select="$stripped-type"/><xsl:text> </xsl:text>
1245 </xsl:if>``[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of
1246  select="$id"/>.overload<xsl:value-of select="position()"/><xsl:text> </xsl:text><xsl:value-of
1247  select="name"/>]``(<xsl:apply-templates select="param"
1248  mode="class-detail"/>)<xsl:if test="@const='yes'"> const</xsl:if>;
1249 <xsl:text>  ``  [''''&amp;raquo;'''</xsl:text>
1250 <xsl:text> [link boost_asio.reference.</xsl:text>
1251 <xsl:value-of select="$class-id"/>.<xsl:value-of
1252  select="$id"/>.overload<xsl:value-of select="position()"/>
1253 <xsl:text> more...]]``
1254 </xsl:text>
1255 </xsl:for-each>
1256 </xsl:if>
1257
1258 [section:<xsl:if test="$overload-count = 1"><xsl:value-of select="$id"/></xsl:if>
1259 <xsl:if test="$overload-count &gt; 1">overload<xsl:value-of select="$overload-position"/></xsl:if>
1260 <xsl:text> </xsl:text><xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/>
1261 <xsl:if test="$overload-count &gt; 1"> (<xsl:value-of
1262  select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>]
1263
1264 <xsl:if test="not(starts-with($doxygen-id, ../../@id))">
1265 <xsl:variable name="inherited-from" select="/doxygen/compounddef[starts-with($doxygen-id, @id)]/compoundname"/>
1266 <xsl:if test="not(contains($inherited-from, '::detail'))">
1267 ['Inherited from <xsl:call-template name="strip-asio-ns">
1268 <xsl:with-param name="name" select="$inherited-from"/>
1269 </xsl:call-template>.]<xsl:text>
1270
1271 </xsl:text></xsl:if></xsl:if>
1272
1273 <xsl:if test="$overload-count = 1">
1274   <xsl:text>[indexterm2 </xsl:text>
1275   <xsl:value-of select="$escaped-name"/>
1276   <xsl:text>..</xsl:text>
1277   <xsl:value-of select="$class-name"/>
1278   <xsl:text>] </xsl:text>
1279 </xsl:if>
1280
1281 <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
1282 </xsl:text>
1283
1284   <xsl:choose>
1285     <xsl:when test="@kind='typedef'">
1286       <xsl:call-template name="typedef" mode="class-detail">
1287         <xsl:with-param name="class-name" select="$class-name"/>
1288       </xsl:call-template>
1289     </xsl:when>
1290     <xsl:when test="@kind='variable'">
1291       <xsl:call-template name="variable" mode="class-detail"/>
1292     </xsl:when>
1293     <xsl:when test="@kind='enum'">
1294       <xsl:call-template name="enum" mode="class-detail">
1295         <xsl:with-param name="enum-name" select="$class-name"/>
1296       </xsl:call-template>
1297     </xsl:when>
1298     <xsl:when test="@kind='function'">
1299       <xsl:call-template name="function" mode="class-detail"/>
1300     </xsl:when>
1301     <xsl:when test="@kind='friend'">
1302       <xsl:call-template name="function" mode="class-detail"/>
1303     </xsl:when>
1304   </xsl:choose>
1305
1306 <xsl:text>
1307 </xsl:text><xsl:apply-templates select="detaileddescription" mode="markup"/>
1308
1309 <xsl:if test="@kind='typedef' or @kind='friend'">
1310   <xsl:call-template name="header-requirements">
1311     <xsl:with-param name="file" select="$class-file"/>
1312   </xsl:call-template>
1313 </xsl:if>
1314
1315 [endsect]
1316
1317 <xsl:if test="$overload-count &gt; 1 and $overload-position = $overload-count">
1318 [endsect]
1319 </xsl:if>
1320 </xsl:template>
1321
1322
1323 <xsl:template name="typedef">
1324 <xsl:param name="class-name"/>
1325 <xsl:text>
1326   </xsl:text>typedef <xsl:value-of select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/>;<xsl:text>
1327
1328 </xsl:text>
1329 <xsl:if test="count(type/ref) &gt; 0 and not(contains(type, '*'))">
1330   <xsl:variable name="class-refid">
1331     <xsl:for-each select="type/ref[1]">
1332       <xsl:value-of select="@refid"/>
1333     </xsl:for-each>
1334   </xsl:variable>
1335   <xsl:variable name="name" select="name"/>
1336   <xsl:for-each select="/doxygen/compounddef[@id=$class-refid]">
1337     <xsl:call-template name="class-tables">
1338       <xsl:with-param name="class-name">
1339         <xsl:value-of select="concat($class-name, '::', $name)"/>
1340       </xsl:with-param>
1341       <xsl:with-param name="class-id">
1342         <xsl:call-template name="make-id">
1343           <xsl:with-param name="name">
1344             <xsl:call-template name="strip-asio-ns">
1345               <xsl:with-param name="name" select="compoundname"/>
1346             </xsl:call-template>
1347           </xsl:with-param>
1348         </xsl:call-template>
1349       </xsl:with-param>
1350     </xsl:call-template>
1351     <xsl:apply-templates select="detaileddescription" mode="markup"/>
1352   </xsl:for-each>
1353 </xsl:if>
1354 </xsl:template>
1355
1356
1357 <xsl:template name="variable">
1358 <xsl:text>
1359   </xsl:text><xsl:if test="@static='yes'">static </xsl:if><xsl:value-of
1360  select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/>
1361  <xsl:if test="count(initializer) = 1"><xsl:text> =</xsl:text>
1362  <xsl:value-of select="initializer"/></xsl:if>;
1363 </xsl:template>
1364
1365
1366 <xsl:template name="enum">
1367 <xsl:param name="enum-name"/>
1368   enum <xsl:value-of select="name"/><xsl:text>
1369 </xsl:text><xsl:if test="count(enumvalue) &gt; 0">
1370 <xsl:value-of select="$newline"/>
1371 <xsl:for-each select="enumvalue">
1372   <xsl:text>[indexterm2 </xsl:text>
1373   <xsl:value-of select="name"/>
1374   <xsl:text>..</xsl:text>
1375   <xsl:value-of select="$enum-name"/>
1376   <xsl:text>]</xsl:text>
1377   <xsl:value-of select="$newline"/>
1378 </xsl:for-each>
1379 [heading Values]
1380 [variablelist
1381 <xsl:for-each select="enumvalue">
1382   [
1383     [<xsl:value-of select="name"/>]
1384     [<xsl:value-of select="briefdescription"/>]
1385   ]
1386 </xsl:for-each>
1387 ]
1388 </xsl:if>
1389 </xsl:template>
1390
1391
1392 <xsl:template name="function">
1393 <xsl:text>
1394 </xsl:text>
1395 <xsl:variable name="doxygen-id">
1396   <xsl:value-of select="@id"/>
1397 </xsl:variable>
1398 <xsl:choose>
1399   <xsl:when test="count(/doxygen//memberdef[@id=$doxygen-id]/templateparamlist) = 1">
1400     <xsl:apply-templates select="/doxygen//memberdef[@id=$doxygen-id]/templateparamlist" mode="class-detail"/>
1401   </xsl:when>
1402   <xsl:otherwise>
1403     <xsl:apply-templates select="templateparamlist" mode="class-detail"/>
1404   </xsl:otherwise>
1405 </xsl:choose>
1406 <xsl:variable name="stripped-type">
1407  <xsl:call-template name="cleanup-type">
1408    <xsl:with-param name="name" select="type"/>
1409  </xsl:call-template>
1410 </xsl:variable>
1411 <xsl:text>  </xsl:text><xsl:if test="@static='yes'">static </xsl:if><xsl:if 
1412  test="@virt='virtual'">virtual </xsl:if><xsl:if
1413  test="string-length($stripped-type) &gt; 0"><xsl:value-of select="$stripped-type"/><xsl:text> </xsl:text></xsl:if>
1414 <xsl:value-of select="name"/>(<xsl:apply-templates select="param"
1415  mode="class-detail"/>)<xsl:if test="@const='yes'"> const</xsl:if>;
1416 </xsl:template>
1417
1418
1419 <xsl:template match="templateparamlist" mode="class-detail">
1420 <xsl:text>  </xsl:text>template&lt;<xsl:apply-templates select="param" mode="class-detail-template"/>&gt;
1421 </xsl:template>
1422
1423
1424 <xsl:template match="param" mode="class-detail-template">
1425 <xsl:text>
1426       </xsl:text><xsl:value-of select="type"/><xsl:text> </xsl:text>
1427       <xsl:choose>
1428         <xsl:when test="declname = 'Allocator'">
1429           <xsl:value-of select="declname"/>
1430         </xsl:when>
1431         <xsl:when test="declname = 'Arg'">
1432           <xsl:value-of select="declname"/>
1433         </xsl:when>
1434         <xsl:when test="declname = 'BufferSequence'">
1435           <xsl:value-of select="declname"/>
1436         </xsl:when>
1437         <xsl:when test="declname = 'ByteType'">
1438           <xsl:value-of select="declname"/>
1439         </xsl:when>
1440         <xsl:when test="declname = 'Clock'">
1441           <xsl:value-of select="declname"/>
1442         </xsl:when>
1443         <xsl:when test="declname = 'CompletionCondition'">
1444           <xsl:value-of select="declname"/>
1445         </xsl:when>
1446         <xsl:when test="declname = 'ConnectCondition'">
1447           <xsl:value-of select="declname"/>
1448         </xsl:when>
1449         <xsl:when test="declname = 'Context_Service'">
1450           <xsl:value-of select="declname"/>
1451         </xsl:when>
1452         <xsl:when test="declname = 'DatagramSocketService1'">
1453           <xsl:value-of select="concat('``[link boost_asio.reference.DatagramSocketService ', declname, ']``')"/>
1454         </xsl:when>
1455         <xsl:when test="declname = 'EndpointIterator'">
1456           <xsl:value-of select="declname"/>
1457         </xsl:when>
1458         <xsl:when test="declname = 'Elem'">
1459           <xsl:value-of select="declname"/>
1460         </xsl:when>
1461         <xsl:when test="declname = 'ErrorEnum'">
1462           <xsl:value-of select="declname"/>
1463         </xsl:when>
1464         <xsl:when test="declname = 'Function'">
1465           <xsl:value-of select="declname"/>
1466         </xsl:when>
1467         <xsl:when test="declname = 'Iterator'">
1468           <xsl:value-of select="declname"/>
1469         </xsl:when>
1470         <xsl:when test="declname = 'MatchCondition'">
1471           <xsl:value-of select="declname"/>
1472         </xsl:when>
1473         <xsl:when test="declname = 'N'">
1474           <xsl:value-of select="declname"/>
1475         </xsl:when>
1476         <xsl:when test="declname = 'OtherAllocator'">
1477           <xsl:value-of select="declname"/>
1478         </xsl:when>
1479         <xsl:when test="declname = 'PasswordCallback'">
1480           <xsl:value-of select="declname"/>
1481         </xsl:when>
1482         <xsl:when test="declname = 'PodType'">
1483           <xsl:value-of select="declname"/>
1484         </xsl:when>
1485         <xsl:when test="declname = 'PointerToPodType'">
1486           <xsl:value-of select="declname"/>
1487         </xsl:when>
1488         <xsl:when test="declname = 'Protocol1'">
1489           <xsl:value-of select="concat('``[link boost_asio.reference.Protocol ', declname, ']``')"/>
1490         </xsl:when>
1491         <xsl:when test="declname = 'RawSocketService1'">
1492           <xsl:value-of select="concat('``[link boost_asio.reference.RawSocketService ', declname, ']``')"/>
1493         </xsl:when>
1494         <xsl:when test="declname = 'SeqPacketSocketService1'">
1495           <xsl:value-of select="concat('``[link boost_asio.reference.SeqPacketSocketService ', declname, ']``')"/>
1496         </xsl:when>
1497         <xsl:when test="declname = 'Signature'">
1498           <xsl:value-of select="declname"/>
1499         </xsl:when>
1500         <xsl:when test="declname = 'SocketAcceptorService1' or declname = 'SocketAcceptorService2'">
1501           <xsl:value-of select="concat('``[link boost_asio.reference.SocketAcceptorService ', declname, ']``')"/>
1502         </xsl:when>
1503         <xsl:when test="declname = 'SocketService1' or declname = 'SocketService2'">
1504           <xsl:value-of select="concat('``[link boost_asio.reference.SocketService ', declname, ']``')"/>
1505         </xsl:when>
1506         <xsl:when test="declname = 'Stream'">
1507           <xsl:value-of select="declname"/>
1508         </xsl:when>
1509         <xsl:when test="declname = 'StreamSocketService1'">
1510           <xsl:value-of select="concat('``[link boost_asio.reference.StreamSocketService ', declname, ']``')"/>
1511         </xsl:when>
1512         <xsl:when test="declname = 'T'">
1513           <xsl:value-of select="declname"/>
1514         </xsl:when>
1515         <xsl:when test="declname = 'T1'">
1516           <xsl:value-of select="declname"/>
1517         </xsl:when>
1518         <xsl:when test="declname = 'TN'">
1519           <xsl:value-of select="declname"/>
1520         </xsl:when>
1521         <xsl:when test="declname = 'Time'">
1522           <xsl:value-of select="declname"/>
1523         </xsl:when>
1524         <xsl:when test="declname = 'TimeType'">
1525           <xsl:value-of select="declname"/>
1526         </xsl:when>
1527         <xsl:when test="declname = 'Traits'">
1528           <xsl:value-of select="declname"/>
1529         </xsl:when>
1530         <xsl:when test="declname = 'VerifyCallback'">
1531           <xsl:value-of select="declname"/>
1532         </xsl:when>
1533         <xsl:when test="count(declname) = 0">
1534         </xsl:when>
1535         <xsl:otherwise>
1536           <xsl:value-of select="concat('``[link boost_asio.reference.', declname, ' ', declname, ']``')"/>
1537         </xsl:otherwise>
1538       </xsl:choose>
1539       <xsl:if test="count(defval) > 0"> = <xsl:value-of
1540         select="defval"/></xsl:if><xsl:if test="not(position() = last())">,</xsl:if>
1541 </xsl:template>
1542
1543
1544 <xsl:template match="param" mode="class-detail">
1545 <xsl:text>
1546       </xsl:text>
1547   <xsl:choose>
1548     <xsl:when test="string-length(array) &gt; 0">
1549       <xsl:value-of select="substring-before(type, '&amp;')"/>
1550       <xsl:text>(&amp;</xsl:text>
1551       <xsl:value-of select="declname"/>
1552       <xsl:text>)</xsl:text>
1553       <xsl:value-of select="array"/>
1554     </xsl:when>
1555     <xsl:otherwise>
1556       <xsl:value-of select="type"/>
1557       <xsl:text> </xsl:text>
1558       <xsl:value-of select="declname"/>
1559     </xsl:otherwise>
1560   </xsl:choose>
1561   <xsl:if test="count(defval) > 0"> = <xsl:value-of select="defval"/></xsl:if>
1562   <xsl:if test="not(position() = last())">,</xsl:if>
1563 </xsl:template>
1564
1565
1566 <xsl:template match="*" mode="class-detail"/>
1567
1568
1569 <!--========== Namespace ==========-->
1570
1571 <xsl:template name="namespace-memberdef">
1572   <xsl:variable name="name">
1573     <xsl:call-template name="strip-asio-ns">
1574       <xsl:with-param name="name" select="concat(../../compoundname, '::', name)"/>
1575     </xsl:call-template>
1576   </xsl:variable>
1577   <xsl:variable name="unqualified-name">
1578     <xsl:call-template name="strip-ns">
1579       <xsl:with-param name="name" select="$name"/>
1580     </xsl:call-template>
1581   </xsl:variable>
1582   <xsl:variable name="id">
1583     <xsl:call-template name="make-id">
1584       <xsl:with-param name="name" select="$name"/>
1585     </xsl:call-template>
1586   </xsl:variable>
1587   <xsl:variable name="doxygen-id">
1588     <xsl:value-of select="@id"/>
1589   </xsl:variable>
1590   <xsl:variable name="overload-count">
1591     <xsl:value-of select="count(../memberdef[name = $unqualified-name])"/>
1592   </xsl:variable>
1593   <xsl:variable name="overload-position">
1594     <xsl:for-each select="../memberdef[name = $unqualified-name]">
1595       <xsl:if test="@id = $doxygen-id">
1596         <xsl:value-of select="position()"/>
1597       </xsl:if>
1598     </xsl:for-each>
1599   </xsl:variable>
1600
1601 <xsl:if test="$overload-count &gt; 1 and $overload-position = 1">
1602 [section:<xsl:value-of select="$id"/><xsl:text> </xsl:text><xsl:value-of select="$name"/>]
1603
1604 <xsl:text>[indexterm1 </xsl:text>
1605 <xsl:value-of select="$name"/>
1606 <xsl:text>] </xsl:text>
1607
1608 <xsl:choose>
1609   <xsl:when test="count(/doxygen/compounddef[@kind='group' and compoundname=$name]) &gt; 0">
1610     <xsl:for-each select="/doxygen/compounddef[@kind='group' and compoundname=$name]">
1611       <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
1612       </xsl:text>
1613     </xsl:for-each>
1614   </xsl:when>
1615   <xsl:otherwise>
1616     <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
1617     </xsl:text>
1618   </xsl:otherwise>
1619 </xsl:choose>
1620
1621 <xsl:for-each select="../memberdef[name = $unqualified-name]">
1622 <xsl:variable name="stripped-type">
1623  <xsl:call-template name="cleanup-type">
1624    <xsl:with-param name="name" select="type"/>
1625  </xsl:call-template>
1626 </xsl:variable>
1627 <xsl:text>
1628 </xsl:text><xsl:apply-templates select="templateparamlist" mode="class-detail"/>
1629 <xsl:text>  </xsl:text><xsl:if test="string-length($stripped-type) &gt; 0"><xsl:value-of
1630  select="$stripped-type"/><xsl:text> </xsl:text></xsl:if>``[link boost_asio.reference.<xsl:value-of
1631  select="$id"/>.overload<xsl:value-of select="position()"/><xsl:text> </xsl:text>
1632 <xsl:value-of select="name"/>]``(<xsl:apply-templates select="param" mode="class-detail"/>);
1633 <xsl:text>  ``  [''''&amp;raquo;'''</xsl:text>
1634 <xsl:text> [link boost_asio.reference.</xsl:text>
1635 <xsl:value-of select="$id"/>.overload<xsl:value-of select="position()"/>
1636 <xsl:text> more...]]``
1637 </xsl:text>
1638 </xsl:for-each>
1639
1640 <xsl:for-each select="/doxygen/compounddef[@kind='group' and compoundname=$name]">
1641   <xsl:apply-templates select="detaileddescription" mode="markup"/>
1642 </xsl:for-each>
1643
1644 <xsl:call-template name="header-requirements">
1645   <xsl:with-param name="file" select="location/@file"/>
1646 </xsl:call-template>
1647
1648 </xsl:if>
1649
1650 [section:<xsl:if test="$overload-count = 1"><xsl:value-of select="$id"/></xsl:if>
1651 <xsl:if test="$overload-count &gt; 1">overload<xsl:value-of select="$overload-position"/>
1652 </xsl:if><xsl:text> </xsl:text><xsl:value-of select="$name"/>
1653 <xsl:if test="$overload-count &gt; 1"> (<xsl:value-of
1654  select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>]
1655
1656 <xsl:if test="$overload-count = 1">
1657   <xsl:text>[indexterm1 </xsl:text>
1658   <xsl:value-of select="$name"/>
1659   <xsl:text>] </xsl:text>
1660 </xsl:if>
1661
1662 <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
1663 </xsl:text>
1664
1665   <xsl:choose>
1666     <xsl:when test="@kind='typedef'">
1667       <xsl:call-template name="typedef">
1668         <xsl:with-param name="class-name" select="$name"/>
1669       </xsl:call-template>
1670     </xsl:when>
1671     <xsl:when test="@kind='variable'">
1672       <xsl:call-template name="variable"/>
1673     </xsl:when>
1674     <xsl:when test="@kind='enum'">
1675       <xsl:call-template name="enum">
1676         <xsl:with-param name="enum-name" select="$name"/>
1677       </xsl:call-template>
1678     </xsl:when>
1679     <xsl:when test="@kind='function'">
1680       <xsl:call-template name="function"/>
1681     </xsl:when>
1682   </xsl:choose>
1683
1684 <xsl:text>
1685 </xsl:text><xsl:apply-templates select="detaileddescription" mode="markup"/>
1686
1687 <xsl:if test="$overload-count = 1">
1688   <xsl:call-template name="header-requirements">
1689     <xsl:with-param name="file" select="location/@file"/>
1690   </xsl:call-template>
1691 </xsl:if>
1692
1693 [endsect]
1694
1695 <xsl:if test="$overload-count &gt; 1 and $overload-position = $overload-count">
1696 [endsect]
1697 </xsl:if>
1698 </xsl:template>
1699
1700
1701 </xsl:stylesheet>