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