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