Fix support for const, volatile, and pure virtual.

[SVN r86278]
This commit is contained in:
Daniel James 2013-10-12 23:53:59 +00:00
parent 78ba0b7b6e
commit e20b8195e1
3 changed files with 20 additions and 8 deletions

View File

@ -15,7 +15,11 @@
<data-member name="static_const_integer" specifiers="static"><type>const int</type></data-member> <data-member name="static_const_integer" specifiers="static"><type>const int</type></data-member>
<method-group name="public member functions"> <method-group name="public member functions">
<method name="virtual_method"><type>virtual int</type></method> <method name="virtual_method"><type>virtual int</type></method>
<method name="virtual_abstract_method" cv="= 0"><type>virtual int</type></method>
<method name="virtual_const_method" cv="const"><type>virtual int</type></method>
<method name="method_with_default_value"><type>int</type><parameter name=""><paramtype>int</paramtype><default>default_value</default></parameter></method> <method name="method_with_default_value"><type>int</type><parameter name=""><paramtype>int</paramtype><default>default_value</default></parameter></method>
<method name="const_method" cv="const"><type>void</type></method>
<method name="volatile_method" cv="volatile"><type>void</type></method>
<method name="trad_noexcept" cv="noexcept"><type>void</type></method> <method name="trad_noexcept" cv="noexcept"><type>void</type></method>
<method name="boost_noexcept" cv="noexcept"><type>void</type></method> <method name="boost_noexcept" cv="noexcept"><type>void</type></method>
<method name="trad_constexpr" cv="constexpr"><type>void</type></method> <method name="trad_constexpr" cv="constexpr"><type>void</type></method>

View File

@ -35,8 +35,13 @@ namespace example
example(example const&) = default; example(example const&) = default;
example& operator=(example const&) = delete; example& operator=(example const&) = delete;
virtual int virtual_method(); virtual int virtual_method();
virtual int virtual_abstract_method() = 0;
virtual int virtual_const_method() const;
int method_with_default_value(int = default_value); int method_with_default_value(int = default_value);
void const_method() const;
void volatile_method() volatile;
void trad_noexcept() noexcept; void trad_noexcept() noexcept;
void boost_noexcept() BOOST_NOEXCEPT; void boost_noexcept() BOOST_NOEXCEPT;

View File

@ -1070,18 +1070,21 @@
<!-- Plus deleted and defaulted function markers as they're not properly <!-- Plus deleted and defaulted function markers as they're not properly
supported in boostbook --> supported in boostbook -->
<!-- The 'substring' trick includes the string if the condition is true --> <!-- The 'substring' trick includes the string if the condition is true -->
<xsl:variable name="constexpr" select="
contains($extra-qualifiers, ' const expr ') or
contains($extra-qualifiers, ' BOOST_CONSTEXPR ') or
contains($extra-qualifiers, ' BOOST_CONSTEXPR_OR_CONST ')" />
<xsl:variable name="cv-qualifiers" select="normalize-space(concat( <xsl:variable name="cv-qualifiers" select="normalize-space(concat(
substring('constexpr ', 1, 999 * ( substring('constexpr ', 1, 999 * $constexpr),
contains($extra-qualifiers, ' const expr ') or substring('const ', 1, 999 * (not($constexpr) and @const='yes')),
contains($extra-qualifiers, ' BOOST_CONSTEXPR ') or substring('volatile ', 1, 999 * (@volatile='yes' or contains($extra-qualifiers, ' volatile '))),
contains($extra-qualifiers, ' BOOST_CONSTEXPR_OR_CONST '))),
substring('const ', 1, 999 * (@const=yes)),
substring('volatile ', 1, 999 * (@volatile=yes)),
substring('noexcept ', 1, 999 * ( substring('noexcept ', 1, 999 * (
contains($extra-qualifiers, ' noexcept ') or contains($extra-qualifiers, ' noexcept ') or
contains($extra-qualifiers, ' BOOST_NOEXCEPT '))), contains($extra-qualifiers, ' BOOST_NOEXCEPT '))),
substring('= delete ', 1, 999 * contains($extra-qualifiers, ' =delete ')), substring('= delete ', 1, 999 * contains($extra-qualifiers, ' =delete ')),
substring('= default ', 1, 999 * contains($extra-qualifiers, ' =default ')), substring('= default ', 1, 999 * contains($extra-qualifiers, ' =default ')),
substring('= 0 ', 1, 999 * (@virt = 'pure-virtual')),
''))" /> ''))" />
<xsl:if test="$cv-qualifiers"> <xsl:if test="$cv-qualifiers">
@ -1245,7 +1248,7 @@
<!-- Return type --> <!-- Return type -->
<xsl:element name="type"> <xsl:element name="type">
<!-- Cheat on virtual and static by dropping them into the type --> <!-- Cheat on virtual and static by dropping them into the type -->
<xsl:if test="@virtual='yes' or @virt='virtual'"> <xsl:if test="@virtual='yes' or @virt='virtual' or @virt='pure-virtual'">
<xsl:text>virtual </xsl:text> <xsl:text>virtual </xsl:text>
</xsl:if> </xsl:if>
@ -1290,7 +1293,7 @@
<xsl:text>static </xsl:text> <xsl:text>static </xsl:text>
</xsl:if> </xsl:if>
<xsl:if test="@virtual='yes' or @virt='virtual'"> <xsl:if test="@virtual='yes' or @virt='virtual' or @virt='pure-virtual'">
<xsl:text>virtual </xsl:text> <xsl:text>virtual </xsl:text>
</xsl:if> </xsl:if>