• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-2020 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-2020 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="unqualified-class-name">
822    <xsl:call-template name="strip-ns">
823      <xsl:with-param name="name" select="compoundname"/>
824    </xsl:call-template>
825  </xsl:variable>
826  <xsl:variable name="class-id">
827    <xsl:call-template name="make-id">
828      <xsl:with-param name="name" select="$class-name"/>
829    </xsl:call-template>
830  </xsl:variable>
831  <xsl:variable name="class-file" select="location/@file"/>
832[section:<xsl:value-of select="$class-id"/><xsl:text> </xsl:text><xsl:value-of select="$class-name"/>]
833
834<xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
835
836</xsl:text>
837
838<xsl:apply-templates select="templateparamlist"
839 mode="class-detail"/><xsl:text>  </xsl:text><xsl:value-of select="@kind"/><xsl:text> </xsl:text><xsl:value-of
840 select="$unqualified-class-name"/><xsl:if test="count(basecompoundref[not(contains(.,'::detail'))]) > 0"> :</xsl:if><xsl:text>
841</xsl:text><xsl:for-each select="basecompoundref[not(contains(.,'::detail'))]">
842<xsl:text>    </xsl:text><xsl:if test="@prot='public'">public </xsl:if><xsl:call-template
843 name="strip-asio-ns"><xsl:with-param name="name" select="."/></xsl:call-template><xsl:if
844 test="not(position() = last())">,</xsl:if><xsl:text>
845</xsl:text></xsl:for-each><xsl:text>
846</xsl:text>
847
848<xsl:call-template name="class-tables">
849  <xsl:with-param name="class-name" select="$class-name"/>
850  <xsl:with-param name="class-id" select="$class-id"/>
851  <xsl:with-param name="unqualified-class-name" select="$unqualified-class-name"/>
852</xsl:call-template>
853
854<xsl:apply-templates select="detaileddescription" mode="markup"/>
855
856<xsl:call-template name="header-requirements">
857  <xsl:with-param name="file" select="$class-file"/>
858</xsl:call-template>
859
860<xsl:call-template name="class-members">
861  <xsl:with-param name="class-name" select="$class-name"/>
862  <xsl:with-param name="class-id" select="$class-id"/>
863  <xsl:with-param name="class-file" select="$class-file"/>
864</xsl:call-template>
865
866[endsect]
867</xsl:template>
868
869
870<xsl:template name="class-tables">
871<xsl:param name="class-name"/>
872<xsl:param name="class-id"/>
873<xsl:param name="unqualified-class-name"/>
874<xsl:if test="
875    count(
876      sectiondef[@kind='public-type'] |
877      innerclass[@prot='public' and not(contains(., '_handler'))]) &gt; 0">
878[heading Types]
879[table
880  [[Name][Description]]
881<xsl:for-each select="
882    sectiondef[@kind='public-type']/memberdef |
883    innerclass[@prot='public' and not(contains(., '_handler')) and not(contains(., 'thread_function')) and not(contains(., 'initiate_'))]" mode="class-table">
884  <xsl:sort select="concat(name, (.)[not(name)])"/>
885  [
886<xsl:choose>
887  <xsl:when test="count(name) &gt; 0">
888    [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
889      <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]]
890    [<xsl:call-template name="escape-name"><xsl:with-param name="text" select="briefdescription"/></xsl:call-template>]
891  </xsl:when>
892  <xsl:otherwise>
893    <xsl:variable name="type-name">
894      <xsl:call-template name="strip-asio-ns">
895        <xsl:with-param name="name" select="."/>
896      </xsl:call-template>
897    </xsl:variable>
898    <xsl:variable name="unqualified-type-name">
899      <xsl:call-template name="strip-ns">
900        <xsl:with-param name="name" select="."/>
901      </xsl:call-template>
902    </xsl:variable>
903    <xsl:variable name="type-id">
904      <xsl:call-template name="make-id">
905        <xsl:with-param name="name" select="$type-name"/>
906      </xsl:call-template>
907    </xsl:variable>
908    <xsl:variable name="type-ref-id" select="@refid"/>
909    [[link boost_asio.reference.<xsl:value-of select="$type-id"/>
910      <xsl:text> </xsl:text>[*<xsl:value-of select="$unqualified-type-name"/>]]]
911    [<xsl:value-of select="(($all-compounddefs)[@id=$type-ref-id])[1]/briefdescription"/>]
912  </xsl:otherwise>
913</xsl:choose>
914  ]
915</xsl:for-each>
916]
917</xsl:if>
918
919<xsl:if test="count(sectiondef[@kind='public-func' or @kind='public-static-func']) > 0">
920[heading Member Functions]
921[table
922  [[Name][Description]]
923<xsl:for-each select="sectiondef[@kind='public-func' or @kind='public-static-func']/memberdef" mode="class-table">
924  <xsl:sort select="name"/>
925  <xsl:variable name="name">
926    <xsl:value-of select="name"/>
927  </xsl:variable>
928  <xsl:variable name="escaped-name">
929    <xsl:call-template name="escape-name">
930      <xsl:with-param name="text" select="$name"/>
931    </xsl:call-template>
932  </xsl:variable>
933  <xsl:variable name="id">
934    <xsl:call-template name="make-id">
935      <xsl:with-param name="name" select="$name"/>
936      <xsl:with-param name="static" select="@static"/>
937    </xsl:call-template>
938  </xsl:variable>
939  <xsl:variable name="doxygen-id">
940    <xsl:value-of select="@id"/>
941  </xsl:variable>
942  <xsl:variable name="overload-count">
943    <xsl:value-of select="count(../memberdef[name = $name])"/>
944  </xsl:variable>
945  <xsl:variable name="overload-position">
946    <xsl:for-each select="../memberdef[name = $name]">
947      <xsl:if test="@id = $doxygen-id">
948        <xsl:value-of select="position()"/>
949      </xsl:if>
950    </xsl:for-each>
951  </xsl:variable>
952  <xsl:if test="$overload-position = 1">
953  [
954    [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
955      <xsl:text> </xsl:text>[*<xsl:value-of select="$escaped-name"/><xsl:text>]]</xsl:text>
956      <xsl:if test="$name=$unqualified-class-name"> [constructor]</xsl:if>
957      <xsl:if test="starts-with($name, '~')"> [destructor]</xsl:if>
958      <xsl:if test="@static='yes'"> [static]</xsl:if>
959      <xsl:text>]
960    [</xsl:text><xsl:value-of select="briefdescription"/>
961  </xsl:if>
962  <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
963    <xsl:value-of select="$newline"/>
964    <xsl:text>     [hr]</xsl:text>
965    <xsl:value-of select="$newline"/>
966    <xsl:text>     </xsl:text>
967    <xsl:value-of select="briefdescription"/>
968  </xsl:if>
969  <xsl:if test="$overload-position = $overload-count">
970  <xsl:text>]
971  ]
972  </xsl:text>
973  </xsl:if>
974</xsl:for-each>
975]
976</xsl:if>
977
978<xsl:if test="count(sectiondef[@kind='protected-func' or @kind='protected-static-func']) > 0">
979[heading Protected Member Functions]
980[table
981  [[Name][Description]]
982<xsl:for-each select="sectiondef[@kind='protected-func' or @kind='protected-static-func']/memberdef" mode="class-table">
983  <xsl:sort select="name"/>
984  <xsl:variable name="name">
985    <xsl:value-of select="name"/>
986  </xsl:variable>
987  <xsl:variable name="id">
988    <xsl:call-template name="make-id">
989      <xsl:with-param name="name" select="$name"/>
990      <xsl:with-param name="static" select="@static"/>
991    </xsl:call-template>
992  </xsl:variable>
993  <xsl:variable name="doxygen-id">
994    <xsl:value-of select="@id"/>
995  </xsl:variable>
996  <xsl:variable name="overload-count">
997    <xsl:value-of select="count(../memberdef[name = $name])"/>
998  </xsl:variable>
999  <xsl:variable name="overload-position">
1000    <xsl:for-each select="../memberdef[name = $name]">
1001      <xsl:if test="@id = $doxygen-id">
1002        <xsl:value-of select="position()"/>
1003      </xsl:if>
1004    </xsl:for-each>
1005  </xsl:variable>
1006  <xsl:if test="$overload-position = 1">
1007  [
1008    [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
1009      <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]</xsl:text>
1010      <xsl:if test="$name=$unqualified-class-name"> [constructor]</xsl:if>
1011      <xsl:if test="starts-with($name, '~')"> [destructor]</xsl:if>
1012      <xsl:if test="@static='yes'"> [static]</xsl:if>
1013      <xsl:text>]
1014    [</xsl:text><xsl:value-of select="briefdescription"/>
1015  </xsl:if>
1016  <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
1017    <xsl:value-of select="$newline"/>
1018    <xsl:text>     [hr]</xsl:text>
1019    <xsl:value-of select="$newline"/>
1020    <xsl:text>     </xsl:text>
1021    <xsl:value-of select="briefdescription"/>
1022  </xsl:if>
1023  <xsl:if test="$overload-position = $overload-count">
1024  <xsl:text>]
1025  ]
1026  </xsl:text>
1027  </xsl:if>
1028</xsl:for-each>
1029]
1030</xsl:if>
1031
1032<xsl:if test="$class-name = 'execution_context::service'">
1033<xsl:if test="count(sectiondef[@kind='private-func']) > 0">
1034[heading Private Member Functions]
1035[table
1036  [[Name][Description]]
1037<xsl:for-each select="sectiondef[@kind='private-func']/memberdef" mode="class-table">
1038  <xsl:sort select="name"/>
1039  <xsl:variable name="name">
1040    <xsl:value-of select="name"/>
1041  </xsl:variable>
1042  <xsl:variable name="id">
1043    <xsl:call-template name="make-id">
1044      <xsl:with-param name="name" select="$name"/>
1045      <xsl:with-param name="static" select="@static"/>
1046    </xsl:call-template>
1047  </xsl:variable>
1048  <xsl:variable name="doxygen-id">
1049    <xsl:value-of select="@id"/>
1050  </xsl:variable>
1051  <xsl:variable name="overload-count">
1052    <xsl:value-of select="count(../memberdef[name = $name])"/>
1053  </xsl:variable>
1054  <xsl:variable name="overload-position">
1055    <xsl:for-each select="../memberdef[name = $name]">
1056      <xsl:if test="@id = $doxygen-id">
1057        <xsl:value-of select="position()"/>
1058      </xsl:if>
1059    </xsl:for-each>
1060  </xsl:variable>
1061  <xsl:if test="$overload-position = 1">
1062  [
1063    [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
1064      <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]</xsl:text>
1065      <xsl:if test="$name=$unqualified-class-name"> [constructor]</xsl:if>
1066      <xsl:if test="starts-with($name, '~')"> [destructor]</xsl:if>
1067      <xsl:if test="@static='yes'"> [static]</xsl:if>
1068      <xsl:text>]
1069    [</xsl:text><xsl:value-of select="briefdescription"/>
1070  </xsl:if>
1071  <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
1072    <xsl:value-of select="$newline"/>
1073    <xsl:text>     [hr]</xsl:text>
1074    <xsl:value-of select="$newline"/>
1075    <xsl:text>     </xsl:text>
1076    <xsl:value-of select="briefdescription"/>
1077  </xsl:if>
1078  <xsl:if test="$overload-position = $overload-count">
1079  <xsl:text>]
1080  ]
1081  </xsl:text>
1082  </xsl:if>
1083</xsl:for-each>
1084]
1085</xsl:if>
1086</xsl:if>
1087
1088<xsl:if test="count(sectiondef[@kind='public-attrib' or @kind='public-static-attrib']) > 0">
1089[heading Data Members]
1090[table
1091  [[Name][Description]]
1092<xsl:for-each select="sectiondef[@kind='public-attrib' or @kind='public-static-attrib']/memberdef" mode="class-table">
1093  <xsl:sort select="name"/>
1094  [
1095    [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
1096      <xsl:text> </xsl:text>[*<xsl:value-of select="name"/><xsl:text>]]</xsl:text>
1097      <xsl:if test="@static='yes'"> [static]</xsl:if>]
1098    [<xsl:value-of select="briefdescription"/>]
1099  ]
1100</xsl:for-each>
1101]
1102</xsl:if>
1103
1104<xsl:if test="count(sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']/memberdef[not(name='impl_')]) > 0">
1105[heading Protected Data Members]
1106[table
1107  [[Name][Description]]
1108<xsl:for-each select="sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']/memberdef[not(name='impl_')]" mode="class-table">
1109  <xsl:sort select="name"/>
1110  [
1111    [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
1112      <xsl:text> </xsl:text>[*<xsl:value-of select="name"/><xsl:text>]]</xsl:text>
1113      <xsl:if test="@static='yes'"> [static]</xsl:if>]
1114    [<xsl:value-of select="briefdescription"/>]
1115  ]
1116</xsl:for-each>
1117]
1118</xsl:if>
1119
1120<xsl:if test="count(sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]) &gt; 0">
1121[heading Friends]
1122[table
1123  [[Name][Description]]
1124<xsl:for-each select="sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-table">
1125  <xsl:sort select="name"/>
1126  <xsl:variable name="name">
1127    <xsl:value-of select="name"/>
1128  </xsl:variable>
1129  <xsl:variable name="id">
1130    <xsl:call-template name="make-id">
1131      <xsl:with-param name="name" select="$name"/>
1132    </xsl:call-template>
1133  </xsl:variable>
1134  <xsl:variable name="doxygen-id">
1135    <xsl:value-of select="@id"/>
1136  </xsl:variable>
1137  <xsl:variable name="overload-count">
1138    <xsl:value-of select="count(../memberdef[name = $name])"/>
1139  </xsl:variable>
1140  <xsl:variable name="overload-position">
1141    <xsl:for-each select="../memberdef[name = $name]">
1142      <xsl:if test="@id = $doxygen-id">
1143        <xsl:value-of select="position()"/>
1144      </xsl:if>
1145    </xsl:for-each>
1146  </xsl:variable>
1147  <xsl:if test="$overload-position = 1">
1148  [
1149    [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
1150      <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
1151    [</xsl:text><xsl:value-of select="briefdescription"/>
1152  </xsl:if>
1153  <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
1154    <xsl:value-of select="$newline"/>
1155    <xsl:text>     [hr]</xsl:text>
1156    <xsl:value-of select="$newline"/>
1157    <xsl:text>     </xsl:text>
1158    <xsl:value-of select="briefdescription"/>
1159  </xsl:if>
1160  <xsl:if test="$overload-position = $overload-count">
1161  <xsl:text>]
1162  ]
1163  </xsl:text>
1164  </xsl:if>
1165</xsl:for-each>
1166]
1167</xsl:if>
1168
1169<xsl:if test="count(sectiondef[@kind='related']/memberdef) &gt; 0">
1170[heading Related Functions]
1171[table
1172  [[Name][Description]]
1173<xsl:for-each select="sectiondef[@kind='related']/memberdef" mode="class-table">
1174  <xsl:sort select="name"/>
1175  <xsl:variable name="name">
1176    <xsl:value-of select="name"/>
1177  </xsl:variable>
1178  <xsl:variable name="id">
1179    <xsl:call-template name="make-id">
1180      <xsl:with-param name="name" select="$name"/>
1181    </xsl:call-template>
1182  </xsl:variable>
1183  <xsl:variable name="doxygen-id">
1184    <xsl:value-of select="@id"/>
1185  </xsl:variable>
1186  <xsl:variable name="overload-count">
1187    <xsl:value-of select="count(../memberdef[name = $name])"/>
1188  </xsl:variable>
1189  <xsl:variable name="overload-position">
1190    <xsl:for-each select="../memberdef[name = $name]">
1191      <xsl:if test="@id = $doxygen-id">
1192        <xsl:value-of select="position()"/>
1193      </xsl:if>
1194    </xsl:for-each>
1195  </xsl:variable>
1196  <xsl:if test="$overload-position = 1">
1197  [
1198    [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
1199      <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
1200    [</xsl:text><xsl:value-of select="briefdescription"/>
1201  </xsl:if>
1202  <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
1203    <xsl:value-of select="$newline"/>
1204    <xsl:value-of select="$newline"/>
1205    <xsl:text>     </xsl:text>
1206    <xsl:value-of select="briefdescription"/>
1207  </xsl:if>
1208  <xsl:if test="$overload-position = $overload-count">
1209  <xsl:text>]
1210  ]
1211  </xsl:text>
1212  </xsl:if>
1213</xsl:for-each>
1214]
1215</xsl:if>
1216
1217</xsl:template>
1218
1219
1220<xsl:template name="class-members">
1221<xsl:param name="class-name"/>
1222<xsl:param name="class-id"/>
1223<xsl:param name="class-file"/>
1224<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">
1225  <xsl:sort select="name"/>
1226  <xsl:with-param name="class-name" select="$class-name"/>
1227  <xsl:with-param name="class-id" select="$class-id"/>
1228  <xsl:with-param name="class-file" select="$class-file"/>
1229</xsl:apply-templates>
1230<xsl:if test="$class-name = 'execution_context::service'">
1231  <xsl:apply-templates select="sectiondef[@kind='private-func']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" 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>
1238</xsl:template>
1239
1240
1241<!-- Class detail -->
1242
1243<xsl:template match="memberdef" mode="class-detail">
1244  <xsl:param name="class-name"/>
1245  <xsl:param name="class-id"/>
1246  <xsl:param name="class-file"/>
1247  <xsl:variable name="name">
1248    <xsl:value-of select="name"/>
1249  </xsl:variable>
1250  <xsl:variable name="escaped-name">
1251    <xsl:call-template name="escape-name">
1252      <xsl:with-param name="text" select="$name"/>
1253    </xsl:call-template>
1254  </xsl:variable>
1255  <xsl:variable name="escaped-class-name">
1256    <xsl:call-template name="escape-name">
1257      <xsl:with-param name="text" select="$class-name"/>
1258    </xsl:call-template>
1259  </xsl:variable>
1260  <xsl:variable name="id">
1261    <xsl:call-template name="make-id">
1262      <xsl:with-param name="name" select="$name"/>
1263      <xsl:with-param name="static" select="@static"/>
1264    </xsl:call-template>
1265  </xsl:variable>
1266  <xsl:variable name="doxygen-id">
1267    <xsl:value-of select="@id"/>
1268  </xsl:variable>
1269  <xsl:variable name="overload-count">
1270    <xsl:value-of select="count(../memberdef[name = $name])"/>
1271  </xsl:variable>
1272  <xsl:variable name="overload-position">
1273    <xsl:for-each select="../memberdef[name = $name]">
1274      <xsl:if test="@id = $doxygen-id">
1275        <xsl:value-of select="position()"/>
1276      </xsl:if>
1277    </xsl:for-each>
1278  </xsl:variable>
1279
1280<xsl:if test="$overload-count &gt; 1 and $overload-position = 1">
1281[section:<xsl:value-of select="$id"/><xsl:text> </xsl:text>
1282<xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/>]
1283
1284<xsl:text>[indexterm2 </xsl:text>
1285<xsl:text>boost_asio.indexterm.</xsl:text>
1286<xsl:value-of select="$class-id"/>
1287<xsl:text>.</xsl:text>
1288<xsl:value-of select="$id"/>
1289<xsl:text>..</xsl:text>
1290<xsl:value-of select="$escaped-name"/>
1291<xsl:text>..</xsl:text>
1292<xsl:value-of select="$escaped-class-name"/>
1293<xsl:text>] </xsl:text>
1294
1295<xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
1296</xsl:text>
1297
1298<xsl:for-each select="../memberdef[name = $name]">
1299<xsl:if test="position() &gt; 1 and not(briefdescription = preceding-sibling::*/briefdescription)">
1300  <xsl:value-of select="$newline"/>
1301  <xsl:apply-templates select="briefdescription" mode="markup"/>
1302  <xsl:value-of select="$newline"/>
1303</xsl:if>
1304<xsl:text>
1305</xsl:text><xsl:apply-templates select="templateparamlist" mode="class-detail"/>
1306<xsl:text>  </xsl:text>
1307 <xsl:if test="@explicit='yes'">explicit </xsl:if>
1308 <xsl:if test="@static='yes'">static </xsl:if>
1309 <xsl:if test="@virt='virtual'">virtual </xsl:if>
1310 <xsl:variable name="stripped-type">
1311  <xsl:call-template name="cleanup-type">
1312    <xsl:with-param name="name" select="type"/>
1313  </xsl:call-template>
1314 </xsl:variable>
1315 <xsl:if test="string-length($stripped-type) &gt; 0">
1316 <xsl:value-of select="$stripped-type"/><xsl:text> </xsl:text>
1317</xsl:if>``[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of
1318 select="$id"/>.overload<xsl:value-of select="position()"/><xsl:text> </xsl:text><xsl:value-of
1319 select="name"/>]``(<xsl:apply-templates select="param"
1320 mode="class-detail"/>)<xsl:if test="@const='yes'"> const</xsl:if>;
1321<xsl:text>  ``  [''''&amp;raquo;'''</xsl:text>
1322<xsl:text> [link boost_asio.reference.</xsl:text>
1323<xsl:value-of select="$class-id"/>.<xsl:value-of
1324 select="$id"/>.overload<xsl:value-of select="position()"/>
1325<xsl:text> more...]]``
1326</xsl:text>
1327</xsl:for-each>
1328</xsl:if>
1329
1330[section:<xsl:if test="$overload-count = 1"><xsl:value-of select="$id"/></xsl:if>
1331<xsl:if test="$overload-count &gt; 1">overload<xsl:value-of select="$overload-position"/></xsl:if>
1332<xsl:text> </xsl:text><xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/>
1333<xsl:if test="$overload-count &gt; 1"> (<xsl:value-of
1334 select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>]
1335
1336<xsl:if test="not(starts-with($doxygen-id, ../../@id))">
1337<xsl:variable name="inherited-from" select="($all-compounddefs)[starts-with($doxygen-id, @id)]/compoundname"/>
1338<xsl:if test="not(contains($inherited-from, '::detail'))">
1339['Inherited from <xsl:call-template name="strip-asio-ns">
1340<xsl:with-param name="name" select="$inherited-from"/>
1341</xsl:call-template>.]<xsl:text>
1342
1343</xsl:text></xsl:if></xsl:if>
1344
1345<xsl:if test="$overload-count = 1">
1346  <xsl:text>[indexterm2 </xsl:text>
1347  <xsl:text>boost_asio.indexterm.</xsl:text>
1348  <xsl:value-of select="$class-id"/>
1349  <xsl:text>.</xsl:text>
1350  <xsl:value-of select="$id"/>
1351  <xsl:text>..</xsl:text>
1352  <xsl:value-of select="$escaped-name"/>
1353  <xsl:text>..</xsl:text>
1354  <xsl:value-of select="$escaped-class-name"/>
1355  <xsl:text>] </xsl:text>
1356</xsl:if>
1357
1358<xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
1359</xsl:text>
1360
1361  <xsl:choose>
1362    <xsl:when test="@kind='typedef'">
1363      <xsl:call-template name="typedef" mode="class-detail">
1364        <xsl:with-param name="class-name" select="$class-name"/>
1365      </xsl:call-template>
1366    </xsl:when>
1367    <xsl:when test="@kind='variable'">
1368      <xsl:call-template name="variable" mode="class-detail"/>
1369    </xsl:when>
1370    <xsl:when test="@kind='enum'">
1371      <xsl:call-template name="enum" mode="class-detail">
1372        <xsl:with-param name="enum-name" select="$class-name"/>
1373        <xsl:with-param name="id" select="concat($class-id, '.', $id)"/>
1374      </xsl:call-template>
1375    </xsl:when>
1376    <xsl:when test="@kind='function'">
1377      <xsl:call-template name="function" mode="class-detail"/>
1378    </xsl:when>
1379    <xsl:when test="@kind='friend'">
1380      <xsl:call-template name="function" mode="class-detail"/>
1381    </xsl:when>
1382  </xsl:choose>
1383
1384<xsl:text>
1385</xsl:text><xsl:apply-templates select="detaileddescription" mode="markup"/>
1386
1387<xsl:if test="@kind='typedef' or @kind='friend'">
1388  <xsl:call-template name="header-requirements">
1389    <xsl:with-param name="file" select="$class-file"/>
1390  </xsl:call-template>
1391</xsl:if>
1392
1393[endsect]
1394
1395<xsl:if test="$overload-count &gt; 1 and $overload-position = $overload-count">
1396[endsect]
1397</xsl:if>
1398</xsl:template>
1399
1400
1401<xsl:template name="typedef">
1402<xsl:param name="class-name"/>
1403<xsl:text>
1404  </xsl:text>typedef <xsl:value-of select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/>;<xsl:text>
1405
1406</xsl:text>
1407<xsl:if test="count(type/ref) &gt; 0 and not(contains(type, '*')) and not(contains(name, 'polymorphic_query_result_type'))">
1408  <xsl:variable name="class-refid">
1409    <xsl:choose>
1410      <xsl:when test="type='basic_address_iterator&lt; address_v4 &gt;'">
1411        <xsl:text>classasio_1_1ip_1_1basic__address__iterator_3_01address__v4_01_4</xsl:text>
1412      </xsl:when>
1413      <xsl:when test="type='basic_address_iterator&lt; address_v6 &gt;'">
1414        <xsl:text>classasio_1_1ip_1_1basic__address__iterator_3_01address__v6_01_4</xsl:text>
1415      </xsl:when>
1416      <xsl:when test="type='basic_address_range&lt; address_v4 &gt;'">
1417        <xsl:text>classasio_1_1ip_1_1basic__address__range_3_01address__v4_01_4</xsl:text>
1418      </xsl:when>
1419      <xsl:when test="type='basic_address_range&lt; address_v6 &gt;'">
1420        <xsl:text>classasio_1_1ip_1_1basic__address__range_3_01address__v6_01_4</xsl:text>
1421      </xsl:when>
1422      <xsl:otherwise>
1423        <xsl:for-each select="type/ref[1]">
1424          <xsl:value-of select="@refid"/>
1425        </xsl:for-each>
1426      </xsl:otherwise>
1427    </xsl:choose>
1428  </xsl:variable>
1429  <xsl:variable name="name" select="name"/>
1430  <xsl:for-each select="($all-compounddefs)[@id=$class-refid]">
1431    <xsl:call-template name="class-tables">
1432      <xsl:with-param name="class-name">
1433        <xsl:value-of select="concat($class-name, '::', $name)"/>
1434      </xsl:with-param>
1435      <xsl:with-param name="class-id">
1436        <xsl:call-template name="make-id">
1437          <xsl:with-param name="name">
1438            <xsl:call-template name="strip-asio-ns">
1439              <xsl:with-param name="name" select="compoundname"/>
1440            </xsl:call-template>
1441          </xsl:with-param>
1442        </xsl:call-template>
1443      </xsl:with-param>
1444      <xsl:with-param name="unqualified-class-name">
1445        <xsl:call-template name="strip-ns">
1446          <xsl:with-param name="name" select="compoundname"/>
1447        </xsl:call-template>
1448      </xsl:with-param>
1449    </xsl:call-template>
1450    <xsl:apply-templates select="detaileddescription" mode="markup"/>
1451  </xsl:for-each>
1452</xsl:if>
1453</xsl:template>
1454
1455
1456<xsl:template name="variable">
1457<xsl:if test="contains(name, 'is_applicable_property_v')">
1458<xsl:text>
1459  template &lt;typename T&gt;</xsl:text>
1460</xsl:if>
1461<xsl:if test="contains(name, 'context_as')">
1462<xsl:text>
1463  template &lt;typename U&gt;</xsl:text>
1464</xsl:if>
1465<xsl:text>
1466  </xsl:text><xsl:if test="@static='yes'">static </xsl:if><xsl:value-of
1467 select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/>
1468 <xsl:if test="count(initializer) = 1"><xsl:text> =</xsl:text>
1469 <xsl:value-of select="initializer"/></xsl:if>;
1470</xsl:template>
1471
1472
1473<xsl:template name="enum">
1474<xsl:param name="enum-name"/>
1475<xsl:param name="id"/>
1476  enum <xsl:value-of select="name"/><xsl:text>
1477</xsl:text><xsl:if test="count(enumvalue) &gt; 0">
1478<xsl:value-of select="$newline"/>
1479<xsl:for-each select="enumvalue">
1480  <xsl:text>[indexterm2 </xsl:text>
1481  <xsl:text>boost_asio.indexterm.</xsl:text>
1482  <xsl:value-of select="$id"/>
1483  <xsl:text>.</xsl:text>
1484  <xsl:value-of select="name"/>
1485  <xsl:text>..</xsl:text>
1486  <xsl:value-of select="name"/>
1487  <xsl:text>..</xsl:text>
1488  <xsl:value-of select="$enum-name"/>
1489  <xsl:text>]</xsl:text>
1490  <xsl:value-of select="$newline"/>
1491</xsl:for-each>
1492[heading Values]
1493[variablelist
1494<xsl:for-each select="enumvalue">
1495  [
1496    [<xsl:value-of select="name"/>]
1497    [<xsl:value-of select="briefdescription"/>]
1498  ]
1499</xsl:for-each>
1500]
1501</xsl:if>
1502</xsl:template>
1503
1504
1505<xsl:template name="function">
1506<xsl:text>
1507</xsl:text>
1508<xsl:variable name="doxygen-id">
1509  <xsl:value-of select="@id"/>
1510</xsl:variable>
1511<xsl:choose>
1512  <xsl:when test="count(($all-memberdefs)[@id=$doxygen-id]/templateparamlist) = 1">
1513    <xsl:apply-templates select="($all-memberdefs)[@id=$doxygen-id]/templateparamlist" mode="class-detail"/>
1514  </xsl:when>
1515  <xsl:otherwise>
1516    <xsl:apply-templates select="templateparamlist" mode="class-detail"/>
1517  </xsl:otherwise>
1518</xsl:choose>
1519<xsl:variable name="stripped-type">
1520 <xsl:call-template name="cleanup-type">
1521   <xsl:with-param name="name" select="type"/>
1522 </xsl:call-template>
1523</xsl:variable>
1524<xsl:text>  </xsl:text><xsl:if test="@static='yes'">static </xsl:if><xsl:if
1525 test="@virt='virtual'">virtual </xsl:if><xsl:if
1526 test="string-length($stripped-type) &gt; 0"><xsl:value-of select="$stripped-type"/><xsl:text> </xsl:text></xsl:if>
1527<xsl:value-of select="name"/>(<xsl:apply-templates select="param"
1528 mode="class-detail"/>)<xsl:if test="@const='yes'"> const</xsl:if>;
1529</xsl:template>
1530
1531
1532<xsl:template match="templateparamlist" mode="class-detail">
1533<xsl:text>  </xsl:text>template&lt;<xsl:apply-templates select="param" mode="class-detail-template"/>&gt;
1534</xsl:template>
1535
1536
1537<xsl:template match="param" mode="class-detail-template">
1538<xsl:text>
1539      </xsl:text><xsl:value-of select="type"/><xsl:text> </xsl:text>
1540      <xsl:choose>
1541        <xsl:when test="declname = 'Allocator'">
1542          <xsl:value-of select="declname"/>
1543        </xsl:when>
1544        <xsl:when test="declname = 'Arg'">
1545          <xsl:value-of select="declname"/>
1546        </xsl:when>
1547        <xsl:when test="declname = 'Args'">
1548          <xsl:value-of select="declname"/>
1549        </xsl:when>
1550        <xsl:when test="declname = 'AwaitableExecutor'">
1551          <xsl:value-of select="concat('``[link boost_asio.reference.Executor1 ', declname, ']``')"/>
1552        </xsl:when>
1553        <xsl:when test="declname = 'Bits'">
1554          <xsl:value-of select="declname"/>
1555        </xsl:when>
1556        <xsl:when test="declname = 'Blocking'">
1557          <xsl:value-of select="declname"/>
1558        </xsl:when>
1559        <xsl:when test="declname = 'BufferSequence'">
1560          <xsl:value-of select="declname"/>
1561        </xsl:when>
1562        <xsl:when test="declname = 'ByteType'">
1563          <xsl:value-of select="declname"/>
1564        </xsl:when>
1565        <xsl:when test="declname = 'C'">
1566          <xsl:value-of select="declname"/>
1567        </xsl:when>
1568        <xsl:when test="declname = 'Clock'">
1569          <xsl:value-of select="declname"/>
1570        </xsl:when>
1571        <xsl:when test="declname = 'CompletionToken'">
1572          <xsl:value-of select="declname"/>
1573        </xsl:when>
1574        <xsl:when test="declname = 'ConstBuffer'">
1575          <xsl:value-of select="declname"/>
1576        </xsl:when>
1577        <xsl:when test="declname = 'Context_Service'">
1578          <xsl:value-of select="declname"/>
1579        </xsl:when>
1580        <xsl:when test="declname = 'Duration'">
1581          <xsl:value-of select="declname"/>
1582        </xsl:when>
1583        <xsl:when test="declname = 'DatagramSocketService1'">
1584          <xsl:value-of select="concat('``[link boost_asio.reference.DatagramSocketService ', declname, ']``')"/>
1585        </xsl:when>
1586        <xsl:when test="declname = 'E'">
1587          <xsl:value-of select="declname"/>
1588        </xsl:when>
1589        <xsl:when test="declname = 'EndpointIterator'">
1590          <xsl:value-of select="declname"/>
1591        </xsl:when>
1592        <xsl:when test="declname = 'Elem'">
1593          <xsl:value-of select="declname"/>
1594        </xsl:when>
1595        <xsl:when test="declname = 'ErrorEnum'">
1596          <xsl:value-of select="declname"/>
1597        </xsl:when>
1598        <xsl:when test="declname = 'ExecutionContext'">
1599          <xsl:value-of select="declname"/>
1600        </xsl:when>
1601        <xsl:when test="declname = 'Executor'">
1602          <xsl:value-of select="concat('``[link boost_asio.reference.Executor1 ', declname, ']``')"/>
1603        </xsl:when>
1604        <xsl:when test="declname = 'Executor2'">
1605          <xsl:value-of select="concat('``[link boost_asio.reference.Executor1 ', declname, ']``')"/>
1606        </xsl:when>
1607        <xsl:when test="declname = 'F'">
1608          <xsl:value-of select="declname"/>
1609        </xsl:when>
1610        <xsl:when test="declname = 'Function'">
1611          <xsl:value-of select="declname"/>
1612        </xsl:when>
1613        <xsl:when test="declname = 'IoObjectService1'">
1614          <xsl:value-of select="concat('``[link boost_asio.reference.IoObjectService ', declname, ']``')"/>
1615        </xsl:when>
1616        <xsl:when test="declname = 'Implementation'">
1617          <xsl:value-of select="declname"/>
1618        </xsl:when>
1619        <xsl:when test="declname = 'Initiation'">
1620          <xsl:value-of select="declname"/>
1621        </xsl:when>
1622        <xsl:when test="declname = 'InnerExecutor'">
1623          <xsl:value-of select="concat('``[link boost_asio.reference.Executor1 ', declname, ']``')"/>
1624        </xsl:when>
1625        <xsl:when test="declname = 'IoObjectsOrExecutors'">
1626          <xsl:value-of select="declname"/>
1627        </xsl:when>
1628        <xsl:when test="declname = 'Iterator'">
1629          <xsl:value-of select="declname"/>
1630        </xsl:when>
1631        <xsl:when test="declname = 'MatchCondition'">
1632          <xsl:value-of select="declname"/>
1633        </xsl:when>
1634        <xsl:when test="declname = 'MutableBuffer'">
1635          <xsl:value-of select="declname"/>
1636        </xsl:when>
1637        <xsl:when test="declname = 'N'">
1638          <xsl:value-of select="declname"/>
1639        </xsl:when>
1640        <xsl:when test="declname = 'OtherAllocator'">
1641          <xsl:value-of select="declname"/>
1642        </xsl:when>
1643        <xsl:when test="declname = 'OtherExecutor'">
1644          <xsl:value-of select="concat('``[link boost_asio.reference.Executor1 ', declname, ']``')"/>
1645        </xsl:when>
1646        <xsl:when test="declname = 'OtherHandler'">
1647          <xsl:value-of select="declname"/>
1648        </xsl:when>
1649        <xsl:when test="declname = 'OtherSupportableProperties'">
1650          <xsl:value-of select="declname"/>
1651        </xsl:when>
1652        <xsl:when test="declname = 'OutstandingWork'">
1653          <xsl:value-of select="declname"/>
1654        </xsl:when>
1655        <xsl:when test="declname = 'PasswordCallback'">
1656          <xsl:value-of select="declname"/>
1657        </xsl:when>
1658        <xsl:when test="declname = 'Period'">
1659          <xsl:value-of select="declname"/>
1660        </xsl:when>
1661        <xsl:when test="declname = 'PodType'">
1662          <xsl:value-of select="declname"/>
1663        </xsl:when>
1664        <xsl:when test="declname = 'PointerToPodType'">
1665          <xsl:value-of select="declname"/>
1666        </xsl:when>
1667        <xsl:when test="declname = 'Properties'">
1668          <xsl:value-of select="declname"/>
1669        </xsl:when>
1670        <xsl:when test="declname = 'Property'">
1671          <xsl:value-of select="declname"/>
1672        </xsl:when>
1673        <xsl:when test="declname = 'Protocol1'">
1674          <xsl:value-of select="concat('``[link boost_asio.reference.Protocol ', declname, ']``')"/>
1675        </xsl:when>
1676        <xsl:when test="declname = 'RawCompletionToken'">
1677          <xsl:value-of select="declname"/>
1678        </xsl:when>
1679        <xsl:when test="declname = 'RawSocketService1'">
1680          <xsl:value-of select="concat('``[link boost_asio.reference.RawSocketService ', declname, ']``')"/>
1681        </xsl:when>
1682        <xsl:when test="declname = 'Relationship'">
1683          <xsl:value-of select="declname"/>
1684        </xsl:when>
1685        <xsl:when test="declname = 'Rep'">
1686          <xsl:value-of select="declname"/>
1687        </xsl:when>
1688        <xsl:when test="declname = 'Result'">
1689          <xsl:value-of select="declname"/>
1690        </xsl:when>
1691        <xsl:when test="declname = 'SeqPacketSocketService1'">
1692          <xsl:value-of select="concat('``[link boost_asio.reference.SeqPacketSocketService ', declname, ']``')"/>
1693        </xsl:when>
1694        <xsl:when test="declname = 'Signature'">
1695          <xsl:value-of select="declname"/>
1696        </xsl:when>
1697        <xsl:when test="declname = 'SocketAcceptorService1' or declname = 'SocketAcceptorService2'">
1698          <xsl:value-of select="concat('``[link boost_asio.reference.SocketAcceptorService ', declname, ']``')"/>
1699        </xsl:when>
1700        <xsl:when test="declname = 'SocketService1' or declname = 'SocketService2'">
1701          <xsl:value-of select="concat('``[link boost_asio.reference.SocketService ', declname, ']``')"/>
1702        </xsl:when>
1703        <xsl:when test="declname = 'Stream'">
1704          <xsl:value-of select="declname"/>
1705        </xsl:when>
1706        <xsl:when test="declname = 'StreamSocketService1'">
1707          <xsl:value-of select="concat('``[link boost_asio.reference.StreamSocketService ', declname, ']``')"/>
1708        </xsl:when>
1709        <xsl:when test="declname = 'SupportableProperties'">
1710          <xsl:value-of select="declname"/>
1711        </xsl:when>
1712        <xsl:when test="declname = 'R'">
1713          <xsl:value-of select="declname"/>
1714        </xsl:when>
1715        <xsl:when test="declname = 'S'">
1716          <xsl:value-of select="declname"/>
1717        </xsl:when>
1718        <xsl:when test="declname = 'T'">
1719          <xsl:value-of select="declname"/>
1720        </xsl:when>
1721        <xsl:when test="declname = 'T1'">
1722          <xsl:value-of select="declname"/>
1723        </xsl:when>
1724        <xsl:when test="declname = 'TN'">
1725          <xsl:value-of select="declname"/>
1726        </xsl:when>
1727        <xsl:when test="declname = 'Time'">
1728          <xsl:value-of select="declname"/>
1729        </xsl:when>
1730        <xsl:when test="declname = 'TimeType'">
1731          <xsl:value-of select="declname"/>
1732        </xsl:when>
1733        <xsl:when test="declname = 'Traits'">
1734          <xsl:value-of select="declname"/>
1735        </xsl:when>
1736        <xsl:when test="declname = 'U'">
1737          <xsl:value-of select="declname"/>
1738        </xsl:when>
1739        <xsl:when test="declname = 'Vs'">
1740          <xsl:value-of select="declname"/>
1741        </xsl:when>
1742        <xsl:when test="declname = 'VerifyCallback'">
1743          <xsl:value-of select="declname"/>
1744        </xsl:when>
1745        <xsl:when test="count(declname) = 0">
1746        </xsl:when>
1747        <xsl:otherwise>
1748          <xsl:value-of select="concat('``[link boost_asio.reference.', declname, ' ', declname, ']``')"/>
1749        </xsl:otherwise>
1750      </xsl:choose>
1751      <xsl:if test="count(defval) > 0"> = <xsl:choose>
1752        <xsl:when test="defval = 'default_token'">
1753          <xsl:text>``[link boost_asio.reference.asynchronous_operations.default_completion_tokens ['DEFAULT]]``</xsl:text>
1754        </xsl:when>
1755        <xsl:otherwise><xsl:value-of select="defval"/></xsl:otherwise>
1756        </xsl:choose></xsl:if>
1757      <xsl:if test="not(position() = last())">,</xsl:if>
1758</xsl:template>
1759
1760
1761<xsl:template match="param" mode="class-detail">
1762<xsl:text>
1763      </xsl:text>
1764  <xsl:choose>
1765    <xsl:when test="string-length(array) &gt; 0">
1766      <xsl:value-of select="substring-before(type, '&amp;')"/>
1767      <xsl:text>(&amp;</xsl:text>
1768      <xsl:value-of select="declname"/>
1769      <xsl:text>)</xsl:text>
1770      <xsl:value-of select="array"/>
1771    </xsl:when>
1772    <xsl:otherwise>
1773      <xsl:value-of select="type"/>
1774      <xsl:text> </xsl:text>
1775      <xsl:value-of select="declname"/>
1776    </xsl:otherwise>
1777  </xsl:choose>
1778  <xsl:if test="count(defval) > 0"> = <xsl:choose>
1779    <xsl:when test="defval = 'default_token'">
1780      <xsl:text>``[link boost_asio.reference.asynchronous_operations.default_completion_tokens ['DEFAULT]]``</xsl:text>
1781    </xsl:when>
1782    <xsl:otherwise><xsl:value-of select="defval"/></xsl:otherwise>
1783  </xsl:choose></xsl:if>
1784  <xsl:if test="not(position() = last())">,</xsl:if>
1785</xsl:template>
1786
1787
1788<xsl:template match="*" mode="class-detail"/>
1789
1790
1791<!--========== Namespace ==========-->
1792
1793<xsl:template name="namespace-memberdef">
1794  <xsl:variable name="name">
1795    <xsl:call-template name="strip-asio-ns">
1796      <xsl:with-param name="name" select="concat(../../compoundname, '::', name)"/>
1797    </xsl:call-template>
1798  </xsl:variable>
1799  <xsl:variable name="unqualified-name">
1800    <xsl:call-template name="strip-ns">
1801      <xsl:with-param name="name" select="$name"/>
1802    </xsl:call-template>
1803  </xsl:variable>
1804  <xsl:variable name="id">
1805    <xsl:call-template name="make-id">
1806      <xsl:with-param name="name" select="$name"/>
1807    </xsl:call-template>
1808  </xsl:variable>
1809  <xsl:variable name="doxygen-id">
1810    <xsl:value-of select="@id"/>
1811  </xsl:variable>
1812  <xsl:variable name="overload-count">
1813    <xsl:value-of select="count(../memberdef[name = $unqualified-name])"/>
1814  </xsl:variable>
1815  <xsl:variable name="overload-position">
1816    <xsl:for-each select="../memberdef[name = $unqualified-name]">
1817      <xsl:if test="@id = $doxygen-id">
1818        <xsl:value-of select="position()"/>
1819      </xsl:if>
1820    </xsl:for-each>
1821  </xsl:variable>
1822
1823<xsl:if test="$overload-count &gt; 1 and $overload-position = 1">
1824[section:<xsl:value-of select="$id"/><xsl:text> </xsl:text><xsl:value-of select="$name"/>]
1825
1826<xsl:text>[indexterm1 </xsl:text>
1827<xsl:text>boost_asio.indexterm.</xsl:text>
1828<xsl:value-of select="$id"/>
1829<xsl:text>..</xsl:text>
1830<xsl:value-of select="$name"/>
1831<xsl:text>] </xsl:text>
1832
1833<xsl:for-each select="($all-compounddefs)[@kind='group' and compoundname=$name]">
1834  <xsl:apply-templates select="briefdescription" mode="markup"/>
1835  <xsl:value-of select="$newline"/>
1836</xsl:for-each>
1837
1838<xsl:for-each select="../memberdef[name = $unqualified-name]">
1839<xsl:variable name="stripped-type">
1840 <xsl:call-template name="cleanup-type">
1841   <xsl:with-param name="name" select="type"/>
1842 </xsl:call-template>
1843</xsl:variable>
1844<xsl:if test="position() = 1 or not(briefdescription = preceding-sibling::memberdef[1]/briefdescription)">
1845  <xsl:apply-templates select="briefdescription" mode="markup"/>
1846</xsl:if>
1847<xsl:text>
1848</xsl:text><xsl:apply-templates select="templateparamlist" mode="class-detail"/>
1849<xsl:text>  </xsl:text><xsl:if test="string-length($stripped-type) &gt; 0"><xsl:value-of
1850 select="$stripped-type"/><xsl:text> </xsl:text></xsl:if>``[link boost_asio.reference.<xsl:value-of
1851 select="$id"/>.overload<xsl:value-of select="position()"/><xsl:text> </xsl:text>
1852<xsl:value-of select="name"/>]``(<xsl:apply-templates select="param" mode="class-detail"/>);
1853<xsl:text>  ``  [''''&amp;raquo;'''</xsl:text>
1854<xsl:text> [link boost_asio.reference.</xsl:text>
1855<xsl:value-of select="$id"/>.overload<xsl:value-of select="position()"/>
1856<xsl:text> more...]]``
1857</xsl:text>
1858</xsl:for-each>
1859
1860<xsl:for-each select="($all-compounddefs)[@kind='group' and compoundname=$name]">
1861  <xsl:apply-templates select="detaileddescription" mode="markup"/>
1862</xsl:for-each>
1863
1864<xsl:call-template name="header-requirements">
1865  <xsl:with-param name="file" select="location/@file"/>
1866</xsl:call-template>
1867
1868</xsl:if>
1869
1870[section:<xsl:if test="$overload-count = 1"><xsl:value-of select="$id"/></xsl:if>
1871<xsl:if test="$overload-count &gt; 1">overload<xsl:value-of select="$overload-position"/>
1872</xsl:if><xsl:text> </xsl:text><xsl:value-of select="$name"/>
1873<xsl:if test="$overload-count &gt; 1"> (<xsl:value-of
1874 select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>]
1875
1876<xsl:if test="$overload-count = 1">
1877  <xsl:text>[indexterm1 </xsl:text>
1878  <xsl:text>boost_asio.indexterm.</xsl:text>
1879  <xsl:value-of select="$id"/>
1880  <xsl:text>..</xsl:text>
1881  <xsl:value-of select="$name"/>
1882  <xsl:text>] </xsl:text>
1883</xsl:if>
1884
1885<xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
1886</xsl:text>
1887
1888  <xsl:choose>
1889    <xsl:when test="@kind='typedef'">
1890      <xsl:call-template name="typedef">
1891        <xsl:with-param name="class-name" select="$name"/>
1892      </xsl:call-template>
1893    </xsl:when>
1894    <xsl:when test="@kind='variable'">
1895      <xsl:call-template name="variable"/>
1896    </xsl:when>
1897    <xsl:when test="@kind='enum'">
1898      <xsl:call-template name="enum">
1899        <xsl:with-param name="enum-name" select="$name"/>
1900        <xsl:with-param name="id" select="$id"/>
1901      </xsl:call-template>
1902    </xsl:when>
1903    <xsl:when test="@kind='function'">
1904      <xsl:call-template name="function"/>
1905    </xsl:when>
1906  </xsl:choose>
1907
1908<xsl:text>
1909</xsl:text><xsl:apply-templates select="detaileddescription" mode="markup"/>
1910
1911<xsl:if test="$overload-count = 1">
1912  <xsl:call-template name="header-requirements">
1913    <xsl:with-param name="file" select="location/@file"/>
1914  </xsl:call-template>
1915</xsl:if>
1916
1917[endsect]
1918
1919<xsl:if test="$overload-count &gt; 1 and $overload-position = $overload-count">
1920[endsect]
1921</xsl:if>
1922</xsl:template>
1923
1924
1925</xsl:stylesheet>
1926