diff options
Diffstat (limited to '3rdparty/asio/src/doc/reference.xsl')
-rw-r--r-- | 3rdparty/asio/src/doc/reference.xsl | 1779 |
1 files changed, 1779 insertions, 0 deletions
diff --git a/3rdparty/asio/src/doc/reference.xsl b/3rdparty/asio/src/doc/reference.xsl new file mode 100644 index 00000000000..e652cd9bd24 --- /dev/null +++ b/3rdparty/asio/src/doc/reference.xsl @@ -0,0 +1,1779 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + +<!-- + Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +--> + +<xsl:output method="text"/> +<xsl:strip-space elements="*"/> +<xsl:preserve-space elements="para"/> + + +<xsl:variable name="newline"> +<xsl:text> +</xsl:text> +</xsl:variable> + + +<!-- + Loop over all top-level documentation elements (i.e. classes, functions, + variables and typedefs at namespace scope). The elements are sorted by name. + Anything in a "detail" namespace or with "_handler" in the name is skipped. +--> +<xsl:template match="/doxygen"> +<xsl:text>[/ + / Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com) + / + / Distributed under the Boost Software License, Version 1.0. (See accompanying + / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + /] + +[section:reference Reference] + +[xinclude quickref.xml] + +[include requirements/asynchronous_operations.qbk] +[include requirements/read_write_operations.qbk] +[include requirements/synchronous_socket_operations.qbk] +[include requirements/asynchronous_socket_operations.qbk] +[include requirements/AcceptableProtocol.qbk] +[include requirements/AcceptHandler.qbk] +[include requirements/AsyncRandomAccessReadDevice.qbk] +[include requirements/AsyncRandomAccessWriteDevice.qbk] +[include requirements/AsyncReadStream.qbk] +[include requirements/AsyncWriteStream.qbk] +[include requirements/BufferedHandshakeHandler.qbk] +[include requirements/CompletionCondition.qbk] +[include requirements/CompletionHandler.qbk] +[include requirements/ConnectCondition.qbk] +[include requirements/ConnectHandler.qbk] +[include requirements/ConstBufferSequence.qbk] +[include requirements/DynamicBuffer.qbk] +[include requirements/Endpoint.qbk] +[include requirements/EndpointSequence.qbk] +[include requirements/ExecutionContext.qbk] +[include requirements/Executor.qbk] +[include requirements/GettableSerialPortOption.qbk] +[include requirements/GettableSocketOption.qbk] +[include requirements/Handler.qbk] +[include requirements/HandshakeHandler.qbk] +[include requirements/InternetProtocol.qbk] +[include requirements/IoControlCommand.qbk] +[include requirements/IoObjectService.qbk] +[include requirements/IteratorConnectHandler.qbk] +[include requirements/MoveAcceptHandler.qbk] +[include requirements/MutableBufferSequence.qbk] +[include requirements/ProtoAllocator.qbk] +[include requirements/Protocol.qbk] +[include requirements/RangeConnectHandler.qbk] +[include requirements/ReadHandler.qbk] +[include requirements/ResolveHandler.qbk] +[include requirements/Service.qbk] +[include requirements/SettableSerialPortOption.qbk] +[include requirements/SettableSocketOption.qbk] +[include requirements/ShutdownHandler.qbk] +[include requirements/SignalHandler.qbk] +[include requirements/SyncRandomAccessReadDevice.qbk] +[include requirements/SyncRandomAccessWriteDevice.qbk] +[include requirements/SyncReadStream.qbk] +[include requirements/SyncWriteStream.qbk] +[include requirements/TimeTraits.qbk] +[include requirements/WaitHandler.qbk] +[include requirements/WaitTraits.qbk] +[include requirements/WriteHandler.qbk] + +</xsl:text> + + <xsl:for-each select=" + compounddef[@kind = 'class' or @kind = 'struct'] | + compounddef[@kind = 'namespace']/sectiondef[1]/memberdef"> + <xsl:sort select="concat((. | ancestor::*)/compoundname, '::', name, ':x')"/> + <xsl:sort select="name"/> + <xsl:choose> + <xsl:when test="@kind='class' or @kind='struct'"> + <xsl:if test=" + contains(compoundname, 'asio::') and + not(contains(compoundname, '::detail')) and + not(contains(compoundname, '::service::key')) and + not(contains(compoundname, '_handler')) and + not(contains(compoundname, 'thread_function')) and + not(contains(compoundname, 'context_impl'))"> + <xsl:call-template name="class"/> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:if test=" + not(contains(ancestor::*/compoundname, '::detail')) and + not(contains(ancestor::*/compoundname, '::service::key')) and + not(contains(ancestor::*/compoundname, '_helper')) and + not(contains(name, '_helper')) and + not(contains(name, 'thread_function')) and + not(contains(name, 'io_context_impl'))"> + <xsl:call-template name="namespace-memberdef"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <xsl:value-of select="$newline"/> + <xsl:text>[endsect]</xsl:text> + +</xsl:template> + + +<!--========== Utilities ==========--> + +<xsl:template name="strip-asio-ns"> + <xsl:param name="name"/> + <xsl:choose> + <xsl:when test="contains($name, 'boost::system::is_error_code_enum')"> + <xsl:value-of select="$name"/> + </xsl:when> + <xsl:when test="contains($name, 'asio::')"> + <xsl:value-of select="substring-after($name, 'asio::')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$name"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template name="strip-ns"> + <xsl:param name="name"/> + <xsl:choose> + <xsl:when test="contains($name, 'boost::system::is_error_code_enum')"> + <xsl:value-of select="$name"/> + </xsl:when> + <xsl:when test="contains($name, '::') and contains($name, '<')"> + <xsl:choose> + <xsl:when test="string-length(substring-before($name, '::')) < string-length(substring-before($name, '<'))"> + <xsl:call-template name="strip-ns"> + <xsl:with-param name="name" select="substring-after($name, '::')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="contains($name, '::')"> + <xsl:call-template name="strip-ns"> + <xsl:with-param name="name" select="substring-after($name, '::')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$name"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template name="cleanup-type"> + <xsl:param name="name"/> + <xsl:variable name="type"> + <xsl:choose> + <xsl:when test="contains($name, 'ASIO_DECL ')"> + <xsl:value-of select="substring-after($name, 'ASIO_DECL ')"/> + </xsl:when> + <xsl:when test="contains($name, 'ASIO_DECL')"> + <xsl:value-of select="substring-after($name, 'ASIO_DECL')"/> + </xsl:when> + <xsl:when test="$name = 'virtual'"></xsl:when> + <xsl:otherwise> + <xsl:value-of select="$name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$type='void_or_deduced'"> + <xsl:text>``[link asio.reference.asynchronous_operations.automatic_deduction_of_initiating_function_return_type ['DEDUCED]]``</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$type"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template name="make-id"> + <xsl:param name="name"/> + <xsl:choose> + <xsl:when test="contains($name, 'boost::system::')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="substring-after($name, 'boost::system::')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, 'boost::asio::error::')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, 'boost::asio::error::'), substring-after($name, 'boost::asio::error::'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '::')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '::'), '__', substring-after($name, '::'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '=')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '='), '_eq_', substring-after($name, '='))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '!')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '!'), '_not_', substring-after($name, '!'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '->')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '->'), '_arrow_', substring-after($name, '->'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '<')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '<'), '_lt_', substring-after($name, '<'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '>')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '>'), '_gt_', substring-after($name, '>'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '[')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '['), '_lb_', substring-after($name, '['))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, ']')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, ']'), '_rb_', substring-after($name, ']'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '(')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '('), '_lp_', substring-after($name, '('))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, ')')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, ')'), '_rp_', substring-after($name, ')'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '+')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '+'), '_plus_', substring-after($name, '+'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '-')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '-'), '_minus_', substring-after($name, '-'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '*')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '*'), '_star_', substring-after($name, '*'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '~')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '~'), '_', substring-after($name, '~'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, ',')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, ','), '_comma_', substring-after($name, ','))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, '...')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, '...'), '_ellipsis_', substring-after($name, '...'))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, ' ')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, ' '), '_', substring-after($name, ' '))"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($name, 'boost__posix_time__ptime')"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" + select="concat(substring-before($name, 'boost__posix_time__ptime'), 'ptime', substring-after($name, 'boost__posix_time__ptime'))"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$name"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<!--========== Markup ==========--> + +<xsl:template match="para" mode="markup"> +<xsl:text> +</xsl:text><xsl:apply-templates mode="markup"/><xsl:text> +</xsl:text> +</xsl:template> + + +<xsl:template match="para" mode="markup-nested"> +<xsl:apply-templates mode="markup-nested"/> +</xsl:template> + + +<xsl:template match="title" mode="markup"> + <xsl:variable name="title"> + <xsl:value-of select="."/> + </xsl:variable> + <xsl:if test="string-length($title) > 0"> +[heading <xsl:value-of select="."/>] + </xsl:if> +</xsl:template> + + +<xsl:template match="programlisting" mode="markup"> + <xsl:value-of select="$newline"/> + <xsl:value-of select="$newline"/> + <xsl:apply-templates mode="codeline"/> + <xsl:value-of select="$newline"/> + <xsl:value-of select="$newline"/> +</xsl:template> + + +<xsl:template match="programlisting" mode="markup-nested"> + <xsl:value-of select="$newline"/> + <xsl:text>``</xsl:text> + <xsl:value-of select="$newline"/> + <xsl:apply-templates mode="codeline"/> + <xsl:if test="substring(., string-length(.)) = $newline"> + <xsl:value-of select="$newline"/> + </xsl:if> + <xsl:text>``</xsl:text> + <xsl:value-of select="$newline"/> +</xsl:template> + + +<xsl:template match="codeline" mode="codeline"> + <xsl:if test="string-length(.) > 0"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates mode="codeline"/> + <xsl:value-of select="$newline"/> +</xsl:template> + + +<xsl:template match="sp" mode="markup"> +<xsl:text> </xsl:text> +</xsl:template> + + +<xsl:template match="sp" mode="markup-nested"> +<xsl:text> </xsl:text> +</xsl:template> + + +<xsl:template match="sp" mode="codeline"> + <xsl:text> </xsl:text> +</xsl:template> + + +<xsl:template match="linebreak" mode="markup"> +<xsl:text> + +</xsl:text> +</xsl:template> + + +<xsl:template match="linebreak" mode="markup-nested"> +<xsl:text> + +</xsl:text> +</xsl:template> + + +<xsl:template match="computeroutput" mode="markup"> +<xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text> +</xsl:template> + + +<xsl:template match="computeroutput" mode="markup-nested"> +<xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text> +</xsl:template> + + +<xsl:template match="listitem" mode="markup"> +* <xsl:call-template name="strip-leading-whitespace"> + <xsl:with-param name="text"> + <xsl:apply-templates mode="markup"/> + </xsl:with-param> +</xsl:call-template> +</xsl:template> + + +<xsl:template match="bold" mode="markup">[*<xsl:apply-templates mode="markup"/>]</xsl:template> + + +<xsl:template match="emphasis" mode="markup">['<xsl:apply-templates mode="markup"/>]</xsl:template> + + +<xsl:template match="parameterlist" mode="markup"> + <xsl:choose> + <xsl:when test="@kind='param'"> +[heading Parameters] + </xsl:when> + <xsl:when test="@kind='exception'"> +[heading Exceptions] + </xsl:when> + </xsl:choose> + +[variablelist + <xsl:apply-templates mode="markup"/> +] +</xsl:template> + + +<xsl:template match="parameteritem" mode="markup"> +[[<xsl:value-of select="parameternamelist"/>][<xsl:apply-templates select="parameterdescription" mode="markup-nested"/>]] +</xsl:template> + + +<xsl:template match="simplesect" mode="markup"> + <xsl:choose> + <xsl:when test="@kind='return'"> +[heading Return Value] + <xsl:apply-templates mode="markup"/> + </xsl:when> + <xsl:when test="@kind='see'"> + </xsl:when> + <xsl:when test="@kind='note'"> +[heading Remarks] + <xsl:apply-templates mode="markup"/> + </xsl:when> + <xsl:when test="@kind='par'"> + <xsl:if test="not(starts-with(title, 'Concepts:'))"> + <xsl:apply-templates mode="markup"/> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="markup"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template match="text()" mode="markup"> + <xsl:variable name="text" select="."/> + <xsl:variable name="starts-with-whitespace" select=" + starts-with($text, ' ') or starts-with($text, $newline)"/> + <xsl:variable name="preceding-node-name"> + <xsl:for-each select="preceding-sibling::*"> + <xsl:if test="position() = last()"> + <xsl:value-of select="local-name()"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="after-newline" select=" + $preceding-node-name = 'programlisting' or + $preceding-node-name = 'linebreak'"/> + <xsl:choose> + <xsl:when test="$starts-with-whitespace and $after-newline"> + <xsl:call-template name="escape-text"> + <xsl:with-param name="text"> + <xsl:call-template name="strip-leading-whitespace"> + <xsl:with-param name="text" select="$text"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="escape-text"> + <xsl:with-param name="text" select="$text"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template match="text()" mode="markup-nested"> + <xsl:variable name="text" select="."/> + <xsl:variable name="starts-with-whitespace" select=" + starts-with($text, ' ') or starts-with($text, $newline)"/> + <xsl:variable name="preceding-node-name"> + <xsl:for-each select="preceding-sibling::*"> + <xsl:if test="position() = last()"> + <xsl:value-of select="local-name()"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="after-newline" select=" + $preceding-node-name = 'programlisting' or + $preceding-node-name = 'linebreak'"/> + <xsl:choose> + <xsl:when test="$starts-with-whitespace and $after-newline"> + <xsl:call-template name="escape-text"> + <xsl:with-param name="text"> + <xsl:call-template name="strip-leading-whitespace"> + <xsl:with-param name="text" select="$text"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="escape-text"> + <xsl:with-param name="text" select="$text"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template name="strip-leading-whitespace"> + <xsl:param name="text"/> + <xsl:choose> + <xsl:when test="starts-with($text, ' ')"> + <xsl:call-template name="strip-leading-whitespace"> + <xsl:with-param name="text" select="substring($text, 2)"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="starts-with($text, $newline)"> + <xsl:call-template name="strip-leading-whitespace"> + <xsl:with-param name="text" select="substring($text, 2)"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$text"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template name="escape-text"> + <xsl:param name="text"/> + <xsl:choose> + <xsl:when test="contains($text, '_')"> + <xsl:value-of select="substring-before($text, '_')"/> + <xsl:text>\_</xsl:text> + <xsl:call-template name="escape-text"> + <xsl:with-param name="text" select="substring-after($text, '_')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$text"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template name="escape-name"> + <xsl:param name="text"/> + <xsl:choose> + <xsl:when test="contains($text, '[')"> + <xsl:value-of select="substring-before($text, '[')"/> + <xsl:text>\[</xsl:text> + <xsl:call-template name="escape-name"> + <xsl:with-param name="text" select="substring-after($text, '[')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($text, ']')"> + <xsl:value-of select="substring-before($text, ']')"/> + <xsl:text>\]</xsl:text> + <xsl:call-template name="escape-name"> + <xsl:with-param name="text" select="substring-after($text, ']')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="contains($text, '...')"> + <xsl:value-of select="substring-before($text, '...')"/> + <xsl:text>\.\.\.</xsl:text> + <xsl:call-template name="escape-name"> + <xsl:with-param name="text" select="substring-after($text, '...')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$text"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template match="ref[@kindref='compound']" mode="markup"> + <xsl:variable name="name"> + <xsl:value-of select="."/> + </xsl:variable> + <xsl:choose> + <xsl:when test="contains(@refid, 'asio') or contains($name, 'asio::')"> + <xsl:variable name="dox-ref-id" select="@refid"/> + <xsl:variable name="ref-name"> + <xsl:call-template name="strip-asio-ns"> + <xsl:with-param name="name" + select="(/doxygen//compounddef[@id=$dox-ref-id])[1]/compoundname"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="ref-id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$ref-name"/> + </xsl:call-template> + </xsl:variable> + <xsl:text>[link asio.reference.</xsl:text> + <xsl:value-of select="$ref-id"/> + <xsl:text> `</xsl:text> + <xsl:value-of name="text" select="$ref-name"/> + <xsl:text>`]</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>`</xsl:text> + <xsl:value-of select="."/> + <xsl:text>`</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template match="ref[@kindref='compound']" mode="markup-nested"> + <xsl:variable name="name"> + <xsl:value-of select="."/> + </xsl:variable> + <xsl:choose> + <xsl:when test="contains(@refid, 'asio') or contains($name, 'asio::')"> + <xsl:variable name="dox-ref-id" select="@refid"/> + <xsl:variable name="ref-name"> + <xsl:call-template name="strip-asio-ns"> + <xsl:with-param name="name" + select="(/doxygen//compounddef[@id=$dox-ref-id])[1]/compoundname"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="ref-id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$ref-name"/> + </xsl:call-template> + </xsl:variable> + <xsl:text>[link asio.reference.</xsl:text> + <xsl:value-of select="$ref-id"/> + <xsl:text> `</xsl:text> + <xsl:value-of name="text" select="$ref-name"/> + <xsl:text>`]</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>`</xsl:text> + <xsl:value-of select="."/> + <xsl:text>`</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template match="ref[@kindref='member']" mode="markup"> + <xsl:variable name="dox-ref-id" select="@refid"/> + <xsl:variable name="memberdefs" select="/doxygen//compounddef/sectiondef/memberdef[@id=$dox-ref-id]"/> + <xsl:choose> + <xsl:when test="contains(@refid, 'namespaceasio') and count($memberdefs) > 0"> + <xsl:variable name="dox-compound-name" select="($memberdefs)[1]/../../compoundname"/> + <xsl:variable name="dox-name" select="($memberdefs)[1]/name"/> + <xsl:variable name="ref-name"> + <xsl:call-template name="strip-asio-ns"> + <xsl:with-param name="name" select="concat($dox-compound-name,'::',$dox-name)"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="ref-id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$ref-name"/> + </xsl:call-template> + </xsl:variable> + <xsl:text>[link asio.reference.</xsl:text> + <xsl:value-of select="$ref-id"/> + <xsl:text> `</xsl:text> + <xsl:value-of name="text" select="$ref-name"/> + <xsl:text>`]</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>`</xsl:text> + <xsl:value-of select="."/> + <xsl:text>`</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template match="ref[@kindref='member']" mode="markup-nested"> + <xsl:variable name="dox-ref-id" select="@refid"/> + <xsl:variable name="memberdefs" select="/doxygen//compounddef/sectiondef/memberdef[@id=$dox-ref-id]"/> + <xsl:choose> + <xsl:when test="contains(@refid, 'namespaceasio') and count($memberdefs) > 0"> + <xsl:variable name="dox-compound-name" select="($memberdefs)[1]/../../compoundname"/> + <xsl:variable name="dox-name" select="($memberdefs)[1]/name"/> + <xsl:variable name="ref-name"> + <xsl:call-template name="strip-asio-ns"> + <xsl:with-param name="name" select="concat($dox-compound-name,'::',$dox-name)"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="ref-id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$ref-name"/> + </xsl:call-template> + </xsl:variable> + <xsl:text>[link asio.reference.</xsl:text> + <xsl:value-of select="$ref-id"/> + <xsl:text> `</xsl:text> + <xsl:value-of name="text" select="$ref-name"/> + <xsl:text>`]</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>`</xsl:text> + <xsl:value-of select="."/> + <xsl:text>`</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + +<xsl:template name="header-requirements"> + <xsl:param name="file"/> + <xsl:value-of select="$newline"/> + <xsl:text>[heading Requirements]</xsl:text> + <xsl:value-of select="$newline"/> + <xsl:value-of select="$newline"/> + <xsl:text>['Header: ]</xsl:text> + <xsl:text>[^asio/</xsl:text> + <xsl:value-of select="substring-after($file, 'include/asio/')"/> + <xsl:text>]</xsl:text> + <xsl:value-of select="$newline"/> + <xsl:value-of select="$newline"/> + <xsl:text>['Convenience header: ]</xsl:text> + <xsl:choose> + <xsl:when test="contains($file, 'include/asio/ssl')"> + <xsl:text>[^asio/ssl.hpp]</xsl:text> + </xsl:when> + <xsl:when test="contains($file, 'include/asio/high_resolution_timer')"> + <xsl:text>None</xsl:text> + </xsl:when> + <xsl:when test="contains($file, 'include/asio/package')"> + <xsl:text>None</xsl:text> + </xsl:when> + <xsl:when test="contains($file, 'include/asio/spawn')"> + <xsl:text>None</xsl:text> + </xsl:when> + <xsl:when test="contains($file, 'include/asio/steady_timer')"> + <xsl:text>None</xsl:text> + </xsl:when> + <xsl:when test="contains($file, 'include/asio/system_timer')"> + <xsl:text>None</xsl:text> + </xsl:when> + <xsl:when test="contains($file, 'include/asio/use_future')"> + <xsl:text>None</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>[^asio.hpp]</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select="$newline"/> +</xsl:template> + + +<!--========== Class ==========--> + +<xsl:template name="class"> + <xsl:variable name="class-name"> + <xsl:call-template name="strip-asio-ns"> + <xsl:with-param name="name" select="compoundname"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="unqualified-class-name"> + <xsl:call-template name="strip-ns"> + <xsl:with-param name="name" select="compoundname"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="class-id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$class-name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="class-file" select="location/@file"/> +[section:<xsl:value-of select="$class-id"/><xsl:text> </xsl:text><xsl:value-of select="$class-name"/>] + +<xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text> + +</xsl:text> + +<xsl:apply-templates select="templateparamlist" + mode="class-detail"/><xsl:text> </xsl:text><xsl:value-of select="@kind"/><xsl:text> </xsl:text><xsl:value-of + select="$unqualified-class-name"/><xsl:if test="count(basecompoundref[not(contains(.,'::detail'))]) > 0"> :</xsl:if><xsl:text> +</xsl:text><xsl:for-each select="basecompoundref[not(contains(.,'::detail'))]"> +<xsl:text> </xsl:text><xsl:if test="@prot='public'">public </xsl:if><xsl:call-template + name="strip-asio-ns"><xsl:with-param name="name" select="."/></xsl:call-template><xsl:if + test="not(position() = last())">,</xsl:if><xsl:text> +</xsl:text></xsl:for-each><xsl:text> +</xsl:text> + +<xsl:call-template name="class-tables"> + <xsl:with-param name="class-name" select="$class-name"/> + <xsl:with-param name="class-id" select="$class-id"/> +</xsl:call-template> + +<xsl:apply-templates select="detaileddescription" mode="markup"/> + +<xsl:call-template name="header-requirements"> + <xsl:with-param name="file" select="$class-file"/> +</xsl:call-template> + +<xsl:call-template name="class-members"> + <xsl:with-param name="class-name" select="$class-name"/> + <xsl:with-param name="class-id" select="$class-id"/> + <xsl:with-param name="class-file" select="$class-file"/> +</xsl:call-template> + +[endsect] +</xsl:template> + + +<xsl:template name="class-tables"> +<xsl:param name="class-name"/> +<xsl:param name="class-id"/> +<xsl:if test=" + count( + sectiondef[@kind='public-type'] | + innerclass[@prot='public' and not(contains(., '_handler'))]) > 0"> +[heading Types] +[table + [[Name][Description]] +<xsl:for-each select=" + sectiondef[@kind='public-type']/memberdef | + innerclass[@prot='public' and not(contains(., '_handler')) and not(contains(., 'thread_function'))]" mode="class-table"> + <xsl:sort select="concat(name, (.)[not(name)])"/> + [ +<xsl:choose> + <xsl:when test="count(name) > 0"> + [[link asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/> + <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]] + [<xsl:call-template name="escape-name"><xsl:with-param name="text" select="briefdescription"/></xsl:call-template>] + </xsl:when> + <xsl:otherwise> + <xsl:variable name="type-name"> + <xsl:call-template name="strip-asio-ns"> + <xsl:with-param name="name" select="."/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="unqualified-type-name"> + <xsl:call-template name="strip-ns"> + <xsl:with-param name="name" select="."/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="type-id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$type-name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="type-ref-id" select="@refid"/> + [[link asio.reference.<xsl:value-of select="$type-id"/> + <xsl:text> </xsl:text>[*<xsl:value-of select="$unqualified-type-name"/>]]] + [<xsl:value-of select="(/doxygen//compounddef[@id=$type-ref-id])[1]/briefdescription"/>] + </xsl:otherwise> +</xsl:choose> + ] +</xsl:for-each> +] +</xsl:if> + +<xsl:if test="count(sectiondef[@kind='public-func' or @kind='public-static-func']) > 0"> +[heading Member Functions] +[table + [[Name][Description]] +<xsl:for-each select="sectiondef[@kind='public-func' or @kind='public-static-func']/memberdef" mode="class-table"> + <xsl:sort select="name"/> + <xsl:variable name="name"> + <xsl:value-of select="name"/> + </xsl:variable> + <xsl:variable name="escaped-name"> + <xsl:call-template name="escape-name"> + <xsl:with-param name="text" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="doxygen-id"> + <xsl:value-of select="@id"/> + </xsl:variable> + <xsl:variable name="overload-count"> + <xsl:value-of select="count(../memberdef[name = $name])"/> + </xsl:variable> + <xsl:variable name="overload-position"> + <xsl:for-each select="../memberdef[name = $name]"> + <xsl:if test="@id = $doxygen-id"> + <xsl:value-of select="position()"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:if test="$overload-position = 1"> + [ + [[link asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/> + <xsl:text> </xsl:text>[*<xsl:value-of select="$escaped-name"/><xsl:text>]]] + [</xsl:text><xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)"> + <xsl:value-of select="$newline"/> + <xsl:value-of select="$newline"/> + <xsl:text> </xsl:text> + <xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="$overload-position = $overload-count"> + <xsl:text>] + ] + </xsl:text> + </xsl:if> +</xsl:for-each> +] +</xsl:if> + +<xsl:if test="count(sectiondef[@kind='protected-func' or @kind='protected-static-func']) > 0"> +[heading Protected Member Functions] +[table + [[Name][Description]] +<xsl:for-each select="sectiondef[@kind='protected-func' or @kind='protected-static-func']/memberdef" mode="class-table"> + <xsl:sort select="name"/> + <xsl:variable name="name"> + <xsl:value-of select="name"/> + </xsl:variable> + <xsl:variable name="id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="doxygen-id"> + <xsl:value-of select="@id"/> + </xsl:variable> + <xsl:variable name="overload-count"> + <xsl:value-of select="count(../memberdef[name = $name])"/> + </xsl:variable> + <xsl:variable name="overload-position"> + <xsl:for-each select="../memberdef[name = $name]"> + <xsl:if test="@id = $doxygen-id"> + <xsl:value-of select="position()"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:if test="$overload-position = 1"> + [ + [[link asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/> + <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]] + [</xsl:text><xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)"> + <xsl:value-of select="$newline"/> + <xsl:value-of select="$newline"/> + <xsl:text> </xsl:text> + <xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="$overload-position = $overload-count"> + <xsl:text>] + ] + </xsl:text> + </xsl:if> +</xsl:for-each> +] +</xsl:if> + +<xsl:if test="$class-name = 'execution_context::service'"> +<xsl:if test="count(sectiondef[@kind='private-func']) > 0"> +[heading Private Member Functions] +[table + [[Name][Description]] +<xsl:for-each select="sectiondef[@kind='private-func']/memberdef" mode="class-table"> + <xsl:sort select="name"/> + <xsl:variable name="name"> + <xsl:value-of select="name"/> + </xsl:variable> + <xsl:variable name="id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="doxygen-id"> + <xsl:value-of select="@id"/> + </xsl:variable> + <xsl:variable name="overload-count"> + <xsl:value-of select="count(../memberdef[name = $name])"/> + </xsl:variable> + <xsl:variable name="overload-position"> + <xsl:for-each select="../memberdef[name = $name]"> + <xsl:if test="@id = $doxygen-id"> + <xsl:value-of select="position()"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:if test="$overload-position = 1"> + [ + [[link asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/> + <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]] + [</xsl:text><xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)"> + <xsl:value-of select="$newline"/> + <xsl:value-of select="$newline"/> + <xsl:text> </xsl:text> + <xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="$overload-position = $overload-count"> + <xsl:text>] + ] + </xsl:text> + </xsl:if> +</xsl:for-each> +] +</xsl:if> +</xsl:if> + +<xsl:if test="count(sectiondef[@kind='public-attrib' or @kind='public-static-attrib']) > 0"> +[heading Data Members] +[table + [[Name][Description]] +<xsl:for-each select="sectiondef[@kind='public-attrib' or @kind='public-static-attrib']/memberdef" mode="class-table"> + <xsl:sort select="name"/> + [ + [[link asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/> + <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]] + [<xsl:value-of select="briefdescription"/>] + ] +</xsl:for-each> +] +</xsl:if> + +<xsl:if test="count(sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']) > 0"> +[heading Protected Data Members] +[table + [[Name][Description]] +<xsl:for-each select="sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']/memberdef" mode="class-table"> + <xsl:sort select="name"/> + [ + [[link asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/> + <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]] + [<xsl:value-of select="briefdescription"/>] + ] +</xsl:for-each> +] +</xsl:if> + +<xsl:if test="count(sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]) > 0"> +[heading Friends] +[table + [[Name][Description]] +<xsl:for-each select="sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-table"> + <xsl:sort select="name"/> + <xsl:variable name="name"> + <xsl:value-of select="name"/> + </xsl:variable> + <xsl:variable name="id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="doxygen-id"> + <xsl:value-of select="@id"/> + </xsl:variable> + <xsl:variable name="overload-count"> + <xsl:value-of select="count(../memberdef[name = $name])"/> + </xsl:variable> + <xsl:variable name="overload-position"> + <xsl:for-each select="../memberdef[name = $name]"> + <xsl:if test="@id = $doxygen-id"> + <xsl:value-of select="position()"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:if test="$overload-position = 1"> + [ + [[link asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/> + <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]] + [</xsl:text><xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)"> + <xsl:value-of select="$newline"/> + <xsl:value-of select="$newline"/> + <xsl:text> </xsl:text> + <xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="$overload-position = $overload-count"> + <xsl:text>] + ] + </xsl:text> + </xsl:if> +</xsl:for-each> +] +</xsl:if> + +<xsl:if test="count(sectiondef[@kind='related']/memberdef) > 0"> +[heading Related Functions] +[table + [[Name][Description]] +<xsl:for-each select="sectiondef[@kind='related']/memberdef" mode="class-table"> + <xsl:sort select="name"/> + <xsl:variable name="name"> + <xsl:value-of select="name"/> + </xsl:variable> + <xsl:variable name="id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="doxygen-id"> + <xsl:value-of select="@id"/> + </xsl:variable> + <xsl:variable name="overload-count"> + <xsl:value-of select="count(../memberdef[name = $name])"/> + </xsl:variable> + <xsl:variable name="overload-position"> + <xsl:for-each select="../memberdef[name = $name]"> + <xsl:if test="@id = $doxygen-id"> + <xsl:value-of select="position()"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:if test="$overload-position = 1"> + [ + [[link asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/> + <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]] + [</xsl:text><xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)"> + <xsl:value-of select="$newline"/> + <xsl:value-of select="$newline"/> + <xsl:text> </xsl:text> + <xsl:value-of select="briefdescription"/> + </xsl:if> + <xsl:if test="$overload-position = $overload-count"> + <xsl:text>] + ] + </xsl:text> + </xsl:if> +</xsl:for-each> +] +</xsl:if> + +</xsl:template> + + +<xsl:template name="class-members"> +<xsl:param name="class-name"/> +<xsl:param name="class-id"/> +<xsl:param name="class-file"/> +<xsl:apply-templates select="sectiondef[@kind='public-type' or @kind='public-func' or @kind='public-static-func' or @kind='public-attrib' or @kind='public-static-attrib' or @kind='protected-func' or @kind='protected-static-func' or @kind='protected-attrib' or @kind='protected-static-attrib' or @kind='friend' or @kind='related']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-detail"> + <xsl:sort select="name"/> + <xsl:with-param name="class-name" select="$class-name"/> + <xsl:with-param name="class-id" select="$class-id"/> + <xsl:with-param name="class-file" select="$class-file"/> +</xsl:apply-templates> +<xsl:if test="$class-name = 'execution_context::service'"> + <xsl:apply-templates select="sectiondef[@kind='private-func']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-detail"> + <xsl:sort select="name"/> + <xsl:with-param name="class-name" select="$class-name"/> + <xsl:with-param name="class-id" select="$class-id"/> + <xsl:with-param name="class-file" select="$class-file"/> + </xsl:apply-templates> +</xsl:if> +</xsl:template> + + +<!-- Class detail --> + +<xsl:template match="memberdef" mode="class-detail"> + <xsl:param name="class-name"/> + <xsl:param name="class-id"/> + <xsl:param name="class-file"/> + <xsl:variable name="name"> + <xsl:value-of select="name"/> + </xsl:variable> + <xsl:variable name="escaped-name"> + <xsl:call-template name="escape-name"> + <xsl:with-param name="text" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="escaped-class-name"> + <xsl:call-template name="escape-name"> + <xsl:with-param name="text" select="$class-name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="doxygen-id"> + <xsl:value-of select="@id"/> + </xsl:variable> + <xsl:variable name="overload-count"> + <xsl:value-of select="count(../memberdef[name = $name])"/> + </xsl:variable> + <xsl:variable name="overload-position"> + <xsl:for-each select="../memberdef[name = $name]"> + <xsl:if test="@id = $doxygen-id"> + <xsl:value-of select="position()"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + +<xsl:if test="$overload-count > 1 and $overload-position = 1"> +[section:<xsl:value-of select="$id"/><xsl:text> </xsl:text> +<xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/>] + +<xsl:text>[indexterm2 </xsl:text> +<xsl:text>asio.indexterm.</xsl:text> +<xsl:value-of select="$class-id"/> +<xsl:text>.</xsl:text> +<xsl:value-of select="$id"/> +<xsl:text>..</xsl:text> +<xsl:value-of select="$escaped-name"/> +<xsl:text>..</xsl:text> +<xsl:value-of select="$escaped-class-name"/> +<xsl:text>] </xsl:text> + +<xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text> +</xsl:text> + +<xsl:for-each select="../memberdef[name = $name]"> +<xsl:if test="position() > 1 and not(briefdescription = preceding-sibling::*/briefdescription)"> + <xsl:value-of select="$newline"/> + <xsl:apply-templates select="briefdescription" mode="markup"/> + <xsl:value-of select="$newline"/> +</xsl:if> +<xsl:text> +</xsl:text><xsl:apply-templates select="templateparamlist" mode="class-detail"/> +<xsl:text> </xsl:text> + <xsl:if test="@explicit='yes'">explicit </xsl:if> + <xsl:if test="@static='yes'">static </xsl:if> + <xsl:if test="@virt='virtual'">virtual </xsl:if> + <xsl:variable name="stripped-type"> + <xsl:call-template name="cleanup-type"> + <xsl:with-param name="name" select="type"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="string-length($stripped-type) > 0"> + <xsl:value-of select="$stripped-type"/><xsl:text> </xsl:text> +</xsl:if>``[link asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of + select="$id"/>.overload<xsl:value-of select="position()"/><xsl:text> </xsl:text><xsl:value-of + select="name"/>]``(<xsl:apply-templates select="param" + mode="class-detail"/>)<xsl:if test="@const='yes'"> const</xsl:if>; +<xsl:text> `` [''''&raquo;'''</xsl:text> +<xsl:text> [link asio.reference.</xsl:text> +<xsl:value-of select="$class-id"/>.<xsl:value-of + select="$id"/>.overload<xsl:value-of select="position()"/> +<xsl:text> more...]]`` +</xsl:text> +</xsl:for-each> +</xsl:if> + +[section:<xsl:if test="$overload-count = 1"><xsl:value-of select="$id"/></xsl:if> +<xsl:if test="$overload-count > 1">overload<xsl:value-of select="$overload-position"/></xsl:if> +<xsl:text> </xsl:text><xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/> +<xsl:if test="$overload-count > 1"> (<xsl:value-of + select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>] + +<xsl:if test="not(starts-with($doxygen-id, ../../@id))"> +<xsl:variable name="inherited-from" select="/doxygen/compounddef[starts-with($doxygen-id, @id)]/compoundname"/> +<xsl:if test="not(contains($inherited-from, '::detail'))"> +['Inherited from <xsl:call-template name="strip-asio-ns"> +<xsl:with-param name="name" select="$inherited-from"/> +</xsl:call-template>.]<xsl:text> + +</xsl:text></xsl:if></xsl:if> + +<xsl:if test="$overload-count = 1"> + <xsl:text>[indexterm2 </xsl:text> + <xsl:text>asio.indexterm.</xsl:text> + <xsl:value-of select="$class-id"/> + <xsl:text>.</xsl:text> + <xsl:value-of select="$id"/> + <xsl:text>..</xsl:text> + <xsl:value-of select="$escaped-name"/> + <xsl:text>..</xsl:text> + <xsl:value-of select="$escaped-class-name"/> + <xsl:text>] </xsl:text> +</xsl:if> + +<xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text> +</xsl:text> + + <xsl:choose> + <xsl:when test="@kind='typedef'"> + <xsl:call-template name="typedef" mode="class-detail"> + <xsl:with-param name="class-name" select="$class-name"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="@kind='variable'"> + <xsl:call-template name="variable" mode="class-detail"/> + </xsl:when> + <xsl:when test="@kind='enum'"> + <xsl:call-template name="enum" mode="class-detail"> + <xsl:with-param name="enum-name" select="$class-name"/> + <xsl:with-param name="id" select="concat($class-id, '.', $id)"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="@kind='function'"> + <xsl:call-template name="function" mode="class-detail"/> + </xsl:when> + <xsl:when test="@kind='friend'"> + <xsl:call-template name="function" mode="class-detail"/> + </xsl:when> + </xsl:choose> + +<xsl:text> +</xsl:text><xsl:apply-templates select="detaileddescription" mode="markup"/> + +<xsl:if test="@kind='typedef' or @kind='friend'"> + <xsl:call-template name="header-requirements"> + <xsl:with-param name="file" select="$class-file"/> + </xsl:call-template> +</xsl:if> + +[endsect] + +<xsl:if test="$overload-count > 1 and $overload-position = $overload-count"> +[endsect] +</xsl:if> +</xsl:template> + + +<xsl:template name="typedef"> +<xsl:param name="class-name"/> +<xsl:text> + </xsl:text>typedef <xsl:value-of select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/>;<xsl:text> + +</xsl:text> +<xsl:if test="count(type/ref) > 0 and not(contains(type, '*'))"> + <xsl:variable name="class-refid"> + <xsl:for-each select="type/ref[1]"> + <xsl:value-of select="@refid"/> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="name" select="name"/> + <xsl:for-each select="/doxygen/compounddef[@id=$class-refid]"> + <xsl:call-template name="class-tables"> + <xsl:with-param name="class-name"> + <xsl:value-of select="concat($class-name, '::', $name)"/> + </xsl:with-param> + <xsl:with-param name="class-id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name"> + <xsl:call-template name="strip-asio-ns"> + <xsl:with-param name="name" select="compoundname"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates select="detaileddescription" mode="markup"/> + </xsl:for-each> +</xsl:if> +</xsl:template> + + +<xsl:template name="variable"> +<xsl:text> + </xsl:text><xsl:if test="@static='yes'">static </xsl:if><xsl:value-of + select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/> + <xsl:if test="count(initializer) = 1"><xsl:text> =</xsl:text> + <xsl:value-of select="initializer"/></xsl:if>; +</xsl:template> + + +<xsl:template name="enum"> +<xsl:param name="enum-name"/> +<xsl:param name="id"/> + enum <xsl:value-of select="name"/><xsl:text> +</xsl:text><xsl:if test="count(enumvalue) > 0"> +<xsl:value-of select="$newline"/> +<xsl:for-each select="enumvalue"> + <xsl:text>[indexterm2 </xsl:text> + <xsl:text>asio.indexterm.</xsl:text> + <xsl:value-of select="$id"/> + <xsl:text>.</xsl:text> + <xsl:value-of select="name"/> + <xsl:text>..</xsl:text> + <xsl:value-of select="name"/> + <xsl:text>..</xsl:text> + <xsl:value-of select="$enum-name"/> + <xsl:text>]</xsl:text> + <xsl:value-of select="$newline"/> +</xsl:for-each> +[heading Values] +[variablelist +<xsl:for-each select="enumvalue"> + [ + [<xsl:value-of select="name"/>] + [<xsl:value-of select="briefdescription"/>] + ] +</xsl:for-each> +] +</xsl:if> +</xsl:template> + + +<xsl:template name="function"> +<xsl:text> +</xsl:text> +<xsl:variable name="doxygen-id"> + <xsl:value-of select="@id"/> +</xsl:variable> +<xsl:choose> + <xsl:when test="count(/doxygen//memberdef[@id=$doxygen-id]/templateparamlist) = 1"> + <xsl:apply-templates select="/doxygen//memberdef[@id=$doxygen-id]/templateparamlist" mode="class-detail"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="templateparamlist" mode="class-detail"/> + </xsl:otherwise> +</xsl:choose> +<xsl:variable name="stripped-type"> + <xsl:call-template name="cleanup-type"> + <xsl:with-param name="name" select="type"/> + </xsl:call-template> +</xsl:variable> +<xsl:text> </xsl:text><xsl:if test="@static='yes'">static </xsl:if><xsl:if + test="@virt='virtual'">virtual </xsl:if><xsl:if + test="string-length($stripped-type) > 0"><xsl:value-of select="$stripped-type"/><xsl:text> </xsl:text></xsl:if> +<xsl:value-of select="name"/>(<xsl:apply-templates select="param" + mode="class-detail"/>)<xsl:if test="@const='yes'"> const</xsl:if>; +</xsl:template> + + +<xsl:template match="templateparamlist" mode="class-detail"> +<xsl:text> </xsl:text>template<<xsl:apply-templates select="param" mode="class-detail-template"/>> +</xsl:template> + + +<xsl:template match="param" mode="class-detail-template"> +<xsl:text> + </xsl:text><xsl:value-of select="type"/><xsl:text> </xsl:text> + <xsl:choose> + <xsl:when test="declname = 'Allocator'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Arg'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Args'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'BufferSequence'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'ByteType'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'C'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Clock'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'CompletionToken'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Context_Service'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Duration'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'DatagramSocketService1'"> + <xsl:value-of select="concat('``[link asio.reference.DatagramSocketService ', declname, ']``')"/> + </xsl:when> + <xsl:when test="declname = 'EndpointIterator'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Elem'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'ErrorEnum'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'ExecutionContext'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Executor'"> + <xsl:value-of select="concat('``[link asio.reference.Executor1 ', declname, ']``')"/> + </xsl:when> + <xsl:when test="declname = 'Function'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Iterator'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'MatchCondition'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'N'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'OtherAllocator'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'OtherExecutor'"> + <xsl:value-of select="concat('``[link asio.reference.Executor1 ', declname, ']``')"/> + </xsl:when> + <xsl:when test="declname = 'OtherHandler'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'PasswordCallback'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Period'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'PodType'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'PointerToPodType'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Protocol1'"> + <xsl:value-of select="concat('``[link asio.reference.Protocol ', declname, ']``')"/> + </xsl:when> + <xsl:when test="declname = 'RawSocketService1'"> + <xsl:value-of select="concat('``[link asio.reference.RawSocketService ', declname, ']``')"/> + </xsl:when> + <xsl:when test="declname = 'Rep'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Result'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'SeqPacketSocketService1'"> + <xsl:value-of select="concat('``[link asio.reference.SeqPacketSocketService ', declname, ']``')"/> + </xsl:when> + <xsl:when test="declname = 'Signature'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'SocketAcceptorService1' or declname = 'SocketAcceptorService2'"> + <xsl:value-of select="concat('``[link asio.reference.SocketAcceptorService ', declname, ']``')"/> + </xsl:when> + <xsl:when test="declname = 'SocketService1' or declname = 'SocketService2'"> + <xsl:value-of select="concat('``[link asio.reference.SocketService ', declname, ']``')"/> + </xsl:when> + <xsl:when test="declname = 'Stream'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'StreamSocketService1'"> + <xsl:value-of select="concat('``[link asio.reference.StreamSocketService ', declname, ']``')"/> + </xsl:when> + <xsl:when test="declname = 'T'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'T1'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'TN'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Time'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'TimeType'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'Traits'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'U'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="declname = 'VerifyCallback'"> + <xsl:value-of select="declname"/> + </xsl:when> + <xsl:when test="count(declname) = 0"> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('``[link asio.reference.', declname, ' ', declname, ']``')"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="count(defval) > 0"> = <xsl:value-of + select="defval"/></xsl:if><xsl:if test="not(position() = last())">,</xsl:if> +</xsl:template> + + +<xsl:template match="param" mode="class-detail"> +<xsl:text> + </xsl:text> + <xsl:choose> + <xsl:when test="string-length(array) > 0"> + <xsl:value-of select="substring-before(type, '&')"/> + <xsl:text>(&</xsl:text> + <xsl:value-of select="declname"/> + <xsl:text>)</xsl:text> + <xsl:value-of select="array"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="type"/> + <xsl:text> </xsl:text> + <xsl:value-of select="declname"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="count(defval) > 0"> = <xsl:value-of select="defval"/></xsl:if> + <xsl:if test="not(position() = last())">,</xsl:if> +</xsl:template> + + +<xsl:template match="*" mode="class-detail"/> + + +<!--========== Namespace ==========--> + +<xsl:template name="namespace-memberdef"> + <xsl:variable name="name"> + <xsl:call-template name="strip-asio-ns"> + <xsl:with-param name="name" select="concat(../../compoundname, '::', name)"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="unqualified-name"> + <xsl:call-template name="strip-ns"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="id"> + <xsl:call-template name="make-id"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="doxygen-id"> + <xsl:value-of select="@id"/> + </xsl:variable> + <xsl:variable name="overload-count"> + <xsl:value-of select="count(../memberdef[name = $unqualified-name])"/> + </xsl:variable> + <xsl:variable name="overload-position"> + <xsl:for-each select="../memberdef[name = $unqualified-name]"> + <xsl:if test="@id = $doxygen-id"> + <xsl:value-of select="position()"/> + </xsl:if> + </xsl:for-each> + </xsl:variable> + +<xsl:if test="$overload-count > 1 and $overload-position = 1"> +[section:<xsl:value-of select="$id"/><xsl:text> </xsl:text><xsl:value-of select="$name"/>] + +<xsl:text>[indexterm1 </xsl:text> +<xsl:text>asio.indexterm.</xsl:text> +<xsl:value-of select="$id"/> +<xsl:text>..</xsl:text> +<xsl:value-of select="$name"/> +<xsl:text>] </xsl:text> + +<xsl:choose> + <xsl:when test="count(/doxygen/compounddef[@kind='group' and compoundname=$name]) > 0"> + <xsl:for-each select="/doxygen/compounddef[@kind='group' and compoundname=$name]"> + <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text> + </xsl:text> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text> + </xsl:text> + </xsl:otherwise> +</xsl:choose> + +<xsl:for-each select="../memberdef[name = $unqualified-name]"> +<xsl:variable name="stripped-type"> + <xsl:call-template name="cleanup-type"> + <xsl:with-param name="name" select="type"/> + </xsl:call-template> +</xsl:variable> +<xsl:text> +</xsl:text><xsl:apply-templates select="templateparamlist" mode="class-detail"/> +<xsl:text> </xsl:text><xsl:if test="string-length($stripped-type) > 0"><xsl:value-of + select="$stripped-type"/><xsl:text> </xsl:text></xsl:if>``[link asio.reference.<xsl:value-of + select="$id"/>.overload<xsl:value-of select="position()"/><xsl:text> </xsl:text> +<xsl:value-of select="name"/>]``(<xsl:apply-templates select="param" mode="class-detail"/>); +<xsl:text> `` [''''&raquo;'''</xsl:text> +<xsl:text> [link asio.reference.</xsl:text> +<xsl:value-of select="$id"/>.overload<xsl:value-of select="position()"/> +<xsl:text> more...]]`` +</xsl:text> +</xsl:for-each> + +<xsl:for-each select="/doxygen/compounddef[@kind='group' and compoundname=$name]"> + <xsl:apply-templates select="detaileddescription" mode="markup"/> +</xsl:for-each> + +<xsl:call-template name="header-requirements"> + <xsl:with-param name="file" select="location/@file"/> +</xsl:call-template> + +</xsl:if> + +[section:<xsl:if test="$overload-count = 1"><xsl:value-of select="$id"/></xsl:if> +<xsl:if test="$overload-count > 1">overload<xsl:value-of select="$overload-position"/> +</xsl:if><xsl:text> </xsl:text><xsl:value-of select="$name"/> +<xsl:if test="$overload-count > 1"> (<xsl:value-of + select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>] + +<xsl:if test="$overload-count = 1"> + <xsl:text>[indexterm1 </xsl:text> + <xsl:text>asio.indexterm.</xsl:text> + <xsl:value-of select="$id"/> + <xsl:text>..</xsl:text> + <xsl:value-of select="$name"/> + <xsl:text>] </xsl:text> +</xsl:if> + +<xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text> +</xsl:text> + + <xsl:choose> + <xsl:when test="@kind='typedef'"> + <xsl:call-template name="typedef"> + <xsl:with-param name="class-name" select="$name"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="@kind='variable'"> + <xsl:call-template name="variable"/> + </xsl:when> + <xsl:when test="@kind='enum'"> + <xsl:call-template name="enum"> + <xsl:with-param name="enum-name" select="$name"/> + <xsl:with-param name="id" select="$id"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="@kind='function'"> + <xsl:call-template name="function"/> + </xsl:when> + </xsl:choose> + +<xsl:text> +</xsl:text><xsl:apply-templates select="detaileddescription" mode="markup"/> + +<xsl:if test="$overload-count = 1"> + <xsl:call-template name="header-requirements"> + <xsl:with-param name="file" select="location/@file"/> + </xsl:call-template> +</xsl:if> + +[endsect] + +<xsl:if test="$overload-count > 1 and $overload-position = $overload-count"> +[endsect] +</xsl:if> +</xsl:template> + + +</xsl:stylesheet> |