Added support for new boostbook <access> element for documenting non-public

class members.

function.xsl, type.xsl, utility.xsl: Added support for <access> elements to
allow nonpublic access specifiers for class member documentation.

boostbook.dtd: Updated to reflect new <access> element.  Updated Peter Simons
email address.  Added mention of boost license.

reference.dtdxml: Added reference documentation for new <access> element.
Removed some obsolete remarks from the description of inherit element.

reference.xml: The changes to this file were generated by applying
dtd2boostbook.xsl to the updated reference.dtdxml file.



[SVN r40555]
This commit is contained in:
Frank Mori Hess 2007-10-29 15:18:49 +00:00
parent ba2b0af02c
commit 677773ea5b
9 changed files with 546 additions and 359 deletions

View File

@ -21,22 +21,18 @@
<entity name="boost.class.content" <entity name="boost.class.content"
type="param" type="param"
> >
<text-expanded>template?, inherit*, purpose?, description?, <text-expanded>template?, inherit*, purpose?, description?,
(static-constant|typedef|enum| (access|%boost.class.mix;)*</text-expanded>
copy-assignment|constructor|destructor|method-group| <text>template?, inherit*, purpose?, description?,
free-function-group|function|method|overloaded-function| (access|%boost.class.mix;)*</text>
overloaded-method|data-member|class|class-specialization|struct|
struct-specialization|union|union-specialization)*</text-expanded>
<text>template?, inherit*, purpose?, description?,
(%boost.class.mix;)*</text>
</entity> </entity>
<entity name="boost.function.semantics" <entity name="boost.function.semantics"
type="param" type="param"
> >
<text-expanded>purpose?, description?, requires?, effects?, postconditions?, <text-expanded>purpose?, description?, requires?, effects?, postconditions?,
returns?, throws?, complexity?, notes?, rationale?</text-expanded> returns?, throws?, complexity?, notes?, rationale?</text-expanded>
<text>purpose?, description?, requires?, effects?, postconditions?, <text>purpose?, description?, requires?, effects?, postconditions?,
returns?, throws?, complexity?, notes?, rationale?</text> returns?, throws?, complexity?, notes?, rationale?</text>
</entity> </entity>
@ -98,21 +94,26 @@
id CDATA #IMPLIED</text> id CDATA #IMPLIED</text>
</entity> </entity>
<entity name="boost.class.mix" <entity name="boost.class.members"
type="param" type="param"
> >
<text-expanded>static-constant|typedef|enum| <text-expanded>static-constant|typedef|enum|
copy-assignment|constructor|destructor|method-group| copy-assignment|constructor|destructor|method-group|
free-function-group|function|method|overloaded-function| method|overloaded-method|data-member|class|class-specialization|struct|
overloaded-method|data-member|class|class-specialization|struct|
struct-specialization|union|union-specialization</text-expanded> struct-specialization|union|union-specialization</text-expanded>
<text>static-constant|typedef|enum| <text>static-constant|typedef|enum|
copy-assignment|constructor|destructor|method-group| copy-assignment|constructor|destructor|method-group|
free-function-group|function|method|overloaded-function| |method|overloaded-method|data-member|class|class-specialization|struct|
overloaded-method|data-member|class|class-specialization|struct|
struct-specialization|union|union-specialization</text> struct-specialization|union|union-specialization</text>
</entity> </entity>
<entity name="boost.class.mix"
type="param"
>
<text-expanded>free-function-group|function|overloaded-function|%boost.class.members;</text-expanded>
<text>free-function-group|function|overloaded-function|%boost.class.members;</text>
</entity>
<entity name="boost.testsuite.tests" <entity name="boost.testsuite.tests"
type="param" type="param"
> >
@ -196,14 +197,10 @@
<entity name="boost.class-specialization.content" <entity name="boost.class-specialization.content"
type="param" type="param"
> >
<text-expanded>template?, specialization?, inherit?, purpose?, description?, <text-expanded>template?, specialization?, inherit?, purpose?, description?,
(static-constant|typedef|enum| (access|%boost.class.mix;)*</text-expanded>
copy-assignment|constructor|destructor|method-group| <text>template?, specialization?, inherit?, purpose?, description?,
free-function-group|function|method|overloaded-function| (access|%boost.class.mix;)*</text>
overloaded-method|data-member|class|class-specialization|struct|
struct-specialization|union|union-specialization)*</text-expanded>
<text>template?, specialization?, inherit?, purpose?, description?,
(%boost.class.mix;)*</text>
</entity> </entity>
<entity name="library.content" <entity name="library.content"
@ -223,6 +220,7 @@
<element-name name="purpose" occurrence="?"/> <element-name name="purpose" occurrence="?"/>
<element-name name="description" occurrence="?"/> <element-name name="description" occurrence="?"/>
<or-group occurrence="*"> <or-group occurrence="*">
<element-name name="access"/>
<element-name name="static-constant"/> <element-name name="static-constant"/>
<element-name name="typedef"/> <element-name name="typedef"/>
<element-name name="enum"/> <element-name name="enum"/>
@ -296,7 +294,7 @@
</element> </element>
<attlist name="link-test"> <attlist name="link-test">
<attdecl> <attdecl>
filename CDATA #REQUIRED filename CDATA #REQUIRED
name CDATA #IMPLIED</attdecl> name CDATA #IMPLIED</attdecl>
<attribute name="filename" <attribute name="filename"
@ -329,7 +327,7 @@
</element> </element>
<attlist name="link-fail-test"> <attlist name="link-fail-test">
<attdecl> <attdecl>
filename CDATA #REQUIRED filename CDATA #REQUIRED
name CDATA #IMPLIED</attdecl> name CDATA #IMPLIED</attdecl>
<attribute name="filename" <attribute name="filename"
@ -494,7 +492,7 @@
</element> </element>
<attlist name="destructor"> <attlist name="destructor">
<attdecl> <attdecl>
specifiers CDATA #IMPLIED specifiers CDATA #IMPLIED
%boost.common.attrib;</attdecl> %boost.common.attrib;</attdecl>
<attribute name="last-revision" <attribute name="last-revision"
@ -639,7 +637,7 @@
</or-group> </or-group>
</sequence-group> </sequence-group>
</content-model-expanded> </content-model-expanded>
<content-model> <content-model>
<sequence-group> <sequence-group>
<element-name name="title" occurrence="?"/> <element-name name="title" occurrence="?"/>
<element-name name="section" occurrence="*"/> <element-name name="section" occurrence="*"/>
@ -750,6 +748,7 @@
<element-name name="purpose" occurrence="?"/> <element-name name="purpose" occurrence="?"/>
<element-name name="description" occurrence="?"/> <element-name name="description" occurrence="?"/>
<or-group occurrence="*"> <or-group occurrence="*">
<element-name name="access"/>
<element-name name="static-constant"/> <element-name name="static-constant"/>
<element-name name="typedef"/> <element-name name="typedef"/>
<element-name name="enum"/> <element-name name="enum"/>
@ -819,10 +818,7 @@
<purpose>Declares a base class of the enclosing class or struct</purpose> <purpose>Declares a base class of the enclosing class or struct</purpose>
<description> <description>
<para>This element contains the name of the class inherited. The <para>This element contains the type of the class inherited.</para>
content model is free-form, as the inherited class may be an
instantiation of a template and may have markup in it (e.g.,
<sgmltag>classname</sgmltag> tags).</para>
</description> </description>
</element> </element>
@ -837,7 +833,9 @@
<attribute name="access" <attribute name="access"
type="#REQUIRED" type="#REQUIRED"
value="CDATA" value="CDATA"
default=""/> default="">
<purpose>The access specifier ("public", "private", or "protected") of the inheritance.</purpose>
</attribute>
<attribute name="id" <attribute name="id"
type="#IMPLIED" type="#IMPLIED"
value="CDATA" value="CDATA"
@ -950,7 +948,7 @@
behavior. Constructors, destructors, member functions, and free behavior. Constructors, destructors, member functions, and free
functions all use the same documentation method, although the functions all use the same documentation method, although the
top-level tags differ.</para> top-level tags differ.</para>
<para>The behavior of functions in BoostBook is documenting using a <para>The behavior of functions in BoostBook is documenting using a
style similar to that of the C++ standard, with clauses describing style similar to that of the C++ standard, with clauses describing
the requirements, effects, postconditions, exception behavior, and the requirements, effects, postconditions, exception behavior, and
@ -979,12 +977,12 @@
so that any content is equivalent in both type and value to the so that any content is equivalent in both type and value to the
content of &lt;code&gt;other&lt;/code&gt;, or empty if content of &lt;code&gt;other&lt;/code&gt;, or empty if
&lt;code&gt;other&lt;/code&gt; is &lt;code&gt;other&lt;/code&gt; is
empty. empty.
&lt;/simpara&gt; &lt;/simpara&gt;
&lt;/effects&gt; &lt;/effects&gt;
&lt;throws&gt; &lt;throws&gt;
&lt;simpara&gt;May fail with a &lt;simpara&gt;May fail with a
&lt;classname&gt;std::bad_alloc&lt;/classname&gt; exception or any &lt;classname&gt;std::bad_alloc&lt;/classname&gt; exception or any
exceptions arising from the copy constructor of the exceptions arising from the copy constructor of the
contained type. contained type.
@ -1218,7 +1216,7 @@
</element> </element>
<attlist name="constructor"> <attlist name="constructor">
<attdecl> <attdecl>
specifiers CDATA #IMPLIED specifiers CDATA #IMPLIED
%boost.common.attrib;</attdecl> %boost.common.attrib;</attdecl>
<attribute name="last-revision" <attribute name="last-revision"
@ -1274,7 +1272,7 @@
<programlisting>&lt;library-reference&gt; <programlisting>&lt;library-reference&gt;
&lt;header name="boost/any.hpp"&gt; &lt;header name="boost/any.hpp"&gt;
&lt;namespace name="boost"&gt; &lt;namespace name="boost"&gt;
&lt;!-- C++ constructs in the boost namespace --&gt; &lt;!-- C++ constructs in the boost namespace --&gt;
&lt;/namespace&gt; &lt;/namespace&gt;
&lt;/header&gt; &lt;/header&gt;
@ -1496,7 +1494,7 @@
</element> </element>
<attlist name="data-member"> <attlist name="data-member">
<attdecl> <attdecl>
name CDATA #REQUIRED name CDATA #REQUIRED
%boost.common.attrib;</attdecl> %boost.common.attrib;</attdecl>
<attribute name="last-revision" <attribute name="last-revision"
@ -1558,6 +1556,7 @@
<element-name name="purpose" occurrence="?"/> <element-name name="purpose" occurrence="?"/>
<element-name name="description" occurrence="?"/> <element-name name="description" occurrence="?"/>
<or-group occurrence="*"> <or-group occurrence="*">
<element-name name="access"/>
<element-name name="static-constant"/> <element-name name="static-constant"/>
<element-name name="typedef"/> <element-name name="typedef"/>
<element-name name="enum"/> <element-name name="enum"/>
@ -1736,7 +1735,7 @@
</element> </element>
<attlist name="requirement"> <attlist name="requirement">
<attdecl> <attdecl>
name CDATA #REQUIRED</attdecl> name CDATA #REQUIRED</attdecl>
<attribute name="name" <attribute name="name"
type="#REQUIRED" type="#REQUIRED"
@ -1859,7 +1858,7 @@
</element> </element>
<attlist name="run-test"> <attlist name="run-test">
<attdecl> <attdecl>
filename CDATA #REQUIRED filename CDATA #REQUIRED
name CDATA #IMPLIED</attdecl> name CDATA #IMPLIED</attdecl>
<attribute name="filename" <attribute name="filename"
@ -1954,7 +1953,7 @@
</element> </element>
<attlist name="copy-assignment"> <attlist name="copy-assignment">
<attdecl> <attdecl>
cv CDATA #IMPLIED cv CDATA #IMPLIED
specifiers CDATA #IMPLIED specifiers CDATA #IMPLIED
%boost.common.attrib;</attdecl> %boost.common.attrib;</attdecl>
@ -2000,7 +1999,7 @@
</element> </element>
<attlist name="run-fail-test"> <attlist name="run-fail-test">
<attdecl> <attdecl>
filename CDATA #REQUIRED filename CDATA #REQUIRED
name CDATA #IMPLIED</attdecl> name CDATA #IMPLIED</attdecl>
<attribute name="filename" <attribute name="filename"
@ -2159,7 +2158,7 @@
</element> </element>
<attlist name="parameter"> <attlist name="parameter">
<attdecl> <attdecl>
name CDATA #IMPLIED</attdecl> name CDATA #IMPLIED</attdecl>
<attribute name="name" <attribute name="name"
type="#IMPLIED" type="#IMPLIED"
@ -2255,7 +2254,7 @@
</element> </element>
<attlist name="overloaded-function"> <attlist name="overloaded-function">
<attdecl> <attdecl>
name CDATA #REQUIRED name CDATA #REQUIRED
%boost.common.attrib;</attdecl> %boost.common.attrib;</attdecl>
<attribute name="last-revision" <attribute name="last-revision"
@ -2276,6 +2275,60 @@
default=""/> default=""/>
</attlist> </attlist>
<element name="access"
content-type="element">
<content-model-expanded>
<or-group occurrence="+">
<element-name name="static-constant"/>
<element-name name="typedef"/>
<element-name name="enum"/>
<element-name name="copy-assignment"/>
<element-name name="constructor"/>
<element-name name="destructor"/>
<element-name name="method-group"/>
<element-name name="method"/>
<element-name name="overloaded-method"/>
<element-name name="data-member"/>
<element-name name="class"/>
<element-name name="class-specialization"/>
<element-name name="struct"/>
<element-name name="struct-specialization"/>
<element-name name="union"/>
<element-name name="union-specialization"/>
</or-group>
</content-model-expanded>
<content-model>
<sequence-group occurrence="+">
<parament-name name="boost.class.members"/>
</sequence-group>
</content-model>
<purpose>Declares an access specification for class members</purpose>
<description>
<para>The access specifications of class members (public, private, or protected) may be determined by enclosing them in an &lt;access&gt; element.</para>
</description>
</element>
<attlist name="access">
<attdecl>
name CDATA #REQUIRED
%boost.common.attrib;</attdecl>
<attribute name="last-revision"
type="#IMPLIED"
value="CDATA"
default=""/>
<attribute name="name"
type="#REQUIRED"
value="CDATA"
default="">
<purpose>The name of the access specification, e.g. "public", "private", or "protected".</purpose>
</attribute>
<attribute name="id"
type="#IMPLIED"
value="CDATA"
default=""/>
</attlist>
<element name="class" <element name="class"
content-type="element"> content-type="element">
<content-model-expanded> <content-model-expanded>
@ -2285,6 +2338,7 @@
<element-name name="purpose" occurrence="?"/> <element-name name="purpose" occurrence="?"/>
<element-name name="description" occurrence="?"/> <element-name name="description" occurrence="?"/>
<or-group occurrence="*"> <or-group occurrence="*">
<element-name name="access"/>
<element-name name="static-constant"/> <element-name name="static-constant"/>
<element-name name="typedef"/> <element-name name="typedef"/>
<element-name name="enum"/> <element-name name="enum"/>
@ -2348,7 +2402,7 @@
inheritance from the class <classname>std::bad_cast</classname>. It inheritance from the class <classname>std::bad_cast</classname>. It
also defines the &lt;purpose&gt; element, which contains a short also defines the &lt;purpose&gt; element, which contains a short
description of the use of the class.</para> description of the use of the class.</para>
<programlisting>&lt;class name="bad_any_cast"&gt; <programlisting>&lt;class name="bad_any_cast"&gt;
&lt;inherit access="public"&gt;&lt;classname&gt;std::bad_cast&lt;/classname&gt;&lt;/inherit&gt; &lt;inherit access="public"&gt;&lt;classname&gt;std::bad_cast&lt;/classname&gt;&lt;/inherit&gt;
&lt;purpose&gt;&lt;para&gt;The exception thrown in the event of a failed &lt;purpose&gt;&lt;para&gt;The exception thrown in the event of a failed
@ -2402,7 +2456,7 @@
</element> </element>
<attlist name="librarycategorydef"> <attlist name="librarycategorydef">
<attdecl> <attdecl>
name CDATA #REQUIRED name CDATA #REQUIRED
%boost.common.attrib;</attdecl> %boost.common.attrib;</attdecl>
<attribute name="last-revision" <attribute name="last-revision"
@ -2524,7 +2578,7 @@
</element> </element>
<attlist name="overloaded-method"> <attlist name="overloaded-method">
<attdecl> <attdecl>
name CDATA #REQUIRED name CDATA #REQUIRED
%boost.common.attrib;</attdecl> %boost.common.attrib;</attdecl>
<attribute name="last-revision" <attribute name="last-revision"
@ -2813,6 +2867,7 @@
<element-name name="purpose" occurrence="?"/> <element-name name="purpose" occurrence="?"/>
<element-name name="description" occurrence="?"/> <element-name name="description" occurrence="?"/>
<or-group occurrence="*"> <or-group occurrence="*">
<element-name name="access"/>
<element-name name="static-constant"/> <element-name name="static-constant"/>
<element-name name="typedef"/> <element-name name="typedef"/>
<element-name name="enum"/> <element-name name="enum"/>
@ -2874,6 +2929,7 @@
<element-name name="purpose" occurrence="?"/> <element-name name="purpose" occurrence="?"/>
<element-name name="description" occurrence="?"/> <element-name name="description" occurrence="?"/>
<or-group occurrence="*"> <or-group occurrence="*">
<element-name name="access"/>
<element-name name="static-constant"/> <element-name name="static-constant"/>
<element-name name="typedef"/> <element-name name="typedef"/>
<element-name name="enum"/> <element-name name="enum"/>
@ -3224,5 +3280,4 @@
value="CDATA" value="CDATA"
default=""/> default=""/>
</attlist> </attlist>
</dtd> </dtd>

File diff suppressed because one or more lines are too long

View File

@ -1,15 +1,20 @@
<!-- <!--
BoostBook DTD version 1.0 BoostBook DTD version 1.1
For further information, see: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Boost_Documentation_Format For further information, see: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Boost_Documentation_Format
Copyright (c) 2002 by Peter Simons <simons@computer.org>. Copyright (c) 2002 by Peter Simons <simons@cryp.to>
All Rights Reserved. Copyright (c) 2003-2004 by Douglas Gregor <doug.gregor -at- gmail.com>
Copyright (c) 2007 by Frank Mori Hess <fmhess@users.sourceforge.net>
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)
This DTD module is identified by the PUBLIC and SYSTEM identifiers: This DTD module is identified by the PUBLIC and SYSTEM identifiers:
PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" PUBLIC "-//Boost//DTD BoostBook XML V1.1//EN"
SYSTEM "http://cryp.to/boost-sandbox/libs/documentation/dtd/boostbook.dtd" SYSTEM "http://www.boost.org/tools/boostbook/dtd/1.1/boostbook.dtd"
$Revision$ $Revision$
$Date$ $Date$
@ -37,7 +42,7 @@
<!ENTITY % boost.common.attrib "%local.common.attrib; <!ENTITY % boost.common.attrib "%local.common.attrib;
id CDATA #IMPLIED"> id CDATA #IMPLIED">
<!ENTITY % boost.namespace.mix <!ENTITY % boost.namespace.mix
"class|class-specialization|struct|struct-specialization| "class|class-specialization|struct|struct-specialization|
union|union-specialization|typedef|enum| union|union-specialization|typedef|enum|
free-function-group|function|overloaded-function| free-function-group|function|overloaded-function|
@ -46,23 +51,25 @@
<!ENTITY % boost.template.mix <!ENTITY % boost.template.mix
"template-type-parameter|template-nontype-parameter|template-varargs"> "template-type-parameter|template-nontype-parameter|template-varargs">
<!ENTITY % boost.class.mix <!ENTITY % boost.class.members
"static-constant|typedef|enum| "static-constant|typedef|enum|
copy-assignment|constructor|destructor|method-group| copy-assignment|constructor|destructor|method-group|
free-function-group|function|method|overloaded-function| method|overloaded-method|data-member|class|class-specialization|struct|
overloaded-method|data-member|class|class-specialization|struct|
struct-specialization|union|union-specialization"> struct-specialization|union|union-specialization">
<!ENTITY % boost.class.mix
"%boost.class.members;|free-function-group|function|overloaded-function">
<!ENTITY % boost.class.content <!ENTITY % boost.class.content
"template?, inherit*, purpose?, description?, "template?, inherit*, purpose?, description?,
(%boost.class.mix;)*"> (%boost.class.mix;|access)*">
<!ENTITY % boost.class-specialization.content <!ENTITY % boost.class-specialization.content
"template?, specialization?, inherit?, purpose?, description?, "template?, specialization?, inherit?, purpose?, description?,
(%boost.class.mix;)*"> (%boost.class.mix;|access)*">
<!ENTITY % boost.function.semantics <!ENTITY % boost.function.semantics
"purpose?, description?, requires?, effects?, postconditions?, "purpose?, description?, requires?, effects?, postconditions?,
returns?, throws?, complexity?, notes?, rationale?"> returns?, throws?, complexity?, notes?, rationale?">
<!ENTITY % library.content <!ENTITY % library.content
@ -104,7 +111,7 @@
<!ATTLIST librarycategorylist %boost.common.attrib;> <!ATTLIST librarycategorylist %boost.common.attrib;>
<!ELEMENT librarycategorydef (#PCDATA)> <!ELEMENT librarycategorydef (#PCDATA)>
<!ATTLIST librarycategorydef <!ATTLIST librarycategorydef
name CDATA #REQUIRED name CDATA #REQUIRED
%boost.common.attrib;> %boost.common.attrib;>
@ -148,6 +155,11 @@
name CDATA #REQUIRED name CDATA #REQUIRED
%boost.common.attrib;> %boost.common.attrib;>
<!ELEMENT access (%boost.class.members;)+>
<!ATTLIST access
name CDATA #REQUIRED
%boost.common.attrib;>
<!--========= C++ Templates =========--> <!--========= C++ Templates =========-->
<!ELEMENT template (%boost.template.mix;)*> <!ELEMENT template (%boost.template.mix;)*>
<!ATTLIST template %boost.common.attrib;> <!ATTLIST template %boost.common.attrib;>
@ -209,7 +221,7 @@
%boost.common.attrib;> %boost.common.attrib;>
<!ELEMENT data-member (type, purpose?, description?)> <!ELEMENT data-member (type, purpose?, description?)>
<!ATTLIST data-member <!ATTLIST data-member
name CDATA #REQUIRED name CDATA #REQUIRED
specifiers CDATA #IMPLIED specifiers CDATA #IMPLIED
%boost.common.attrib;> %boost.common.attrib;>
@ -229,12 +241,12 @@
%boost.common.attrib;> %boost.common.attrib;>
<!ELEMENT constructor (template?, parameter*, %boost.function.semantics;)> <!ELEMENT constructor (template?, parameter*, %boost.function.semantics;)>
<!ATTLIST constructor <!ATTLIST constructor
specifiers CDATA #IMPLIED specifiers CDATA #IMPLIED
%boost.common.attrib;> %boost.common.attrib;>
<!ELEMENT destructor (%boost.function.semantics;)> <!ELEMENT destructor (%boost.function.semantics;)>
<!ATTLIST destructor <!ATTLIST destructor
specifiers CDATA #IMPLIED specifiers CDATA #IMPLIED
%boost.common.attrib;> %boost.common.attrib;>
@ -252,12 +264,12 @@
%boost.common.attrib;> %boost.common.attrib;>
<!ELEMENT overloaded-method (signature*, %boost.function.semantics;)> <!ELEMENT overloaded-method (signature*, %boost.function.semantics;)>
<!ATTLIST overloaded-method <!ATTLIST overloaded-method
name CDATA #REQUIRED name CDATA #REQUIRED
%boost.common.attrib;> %boost.common.attrib;>
<!ELEMENT overloaded-function (signature*, %boost.function.semantics;)> <!ELEMENT overloaded-function (signature*, %boost.function.semantics;)>
<!ATTLIST overloaded-function <!ATTLIST overloaded-function
name CDATA #REQUIRED name CDATA #REQUIRED
%boost.common.attrib;> %boost.common.attrib;>
@ -286,12 +298,12 @@
<!ATTLIST rationale %boost.common.attrib;> <!ATTLIST rationale %boost.common.attrib;>
<!ELEMENT functionname (#PCDATA)> <!ELEMENT functionname (#PCDATA)>
<!ATTLIST functionname <!ATTLIST functionname
alt CDATA #IMPLIED alt CDATA #IMPLIED
%boost.common.attrib;> %boost.common.attrib;>
<!ELEMENT enumname (#PCDATA)> <!ELEMENT enumname (#PCDATA)>
<!ATTLIST enumname <!ATTLIST enumname
alt CDATA #IMPLIED alt CDATA #IMPLIED
%boost.common.attrib;> %boost.common.attrib;>
@ -301,9 +313,9 @@
<!ELEMENT headername (#PCDATA)> <!ELEMENT headername (#PCDATA)>
<!ATTLIST headername %boost.common.attrib;> <!ATTLIST headername %boost.common.attrib;>
<!ELEMENT copy-assignment <!ELEMENT copy-assignment
(template?, type?, parameter*, %boost.function.semantics;)> (template?, type?, parameter*, %boost.function.semantics;)>
<!ATTLIST copy-assignment <!ATTLIST copy-assignment
cv CDATA #IMPLIED cv CDATA #IMPLIED
specifiers CDATA #IMPLIED specifiers CDATA #IMPLIED
%boost.common.attrib;> %boost.common.attrib;>
@ -330,7 +342,7 @@
%boost.common.attrib;> %boost.common.attrib;>
<!--========== Boost Testsuite Extensions ==========--> <!--========== Boost Testsuite Extensions ==========-->
<!ENTITY % boost.testsuite.tests <!ENTITY % boost.testsuite.tests
"compile-test|link-test|run-test| "compile-test|link-test|run-test|
compile-fail-test|link-fail-test|run-fail-test"> compile-fail-test|link-fail-test|run-fail-test">
<!ENTITY % boost.testsuite.test.content <!ENTITY % boost.testsuite.test.content
@ -345,12 +357,12 @@
name CDATA #IMPLIED> name CDATA #IMPLIED>
<!ELEMENT link-test (%boost.testsuite.test.content;)> <!ELEMENT link-test (%boost.testsuite.test.content;)>
<!ATTLIST link-test <!ATTLIST link-test
filename CDATA #REQUIRED filename CDATA #REQUIRED
name CDATA #IMPLIED> name CDATA #IMPLIED>
<!ELEMENT run-test (%boost.testsuite.test.content;)> <!ELEMENT run-test (%boost.testsuite.test.content;)>
<!ATTLIST run-test <!ATTLIST run-test
filename CDATA #REQUIRED filename CDATA #REQUIRED
name CDATA #IMPLIED> name CDATA #IMPLIED>
@ -360,12 +372,12 @@
name CDATA #IMPLIED> name CDATA #IMPLIED>
<!ELEMENT link-fail-test (%boost.testsuite.test.content;)> <!ELEMENT link-fail-test (%boost.testsuite.test.content;)>
<!ATTLIST link-fail-test <!ATTLIST link-fail-test
filename CDATA #REQUIRED filename CDATA #REQUIRED
name CDATA #IMPLIED> name CDATA #IMPLIED>
<!ELEMENT run-fail-test (%boost.testsuite.test.content;)> <!ELEMENT run-fail-test (%boost.testsuite.test.content;)>
<!ATTLIST run-fail-test <!ATTLIST run-fail-test
filename CDATA #REQUIRED filename CDATA #REQUIRED
name CDATA #IMPLIED> name CDATA #IMPLIED>
@ -378,13 +390,13 @@
<!ELEMENT lib (#PCDATA)> <!ELEMENT lib (#PCDATA)>
<!ELEMENT requirement (#PCDATA)> <!ELEMENT requirement (#PCDATA)>
<!ATTLIST requirement <!ATTLIST requirement
name CDATA #REQUIRED> name CDATA #REQUIRED>
<!ELEMENT if-fails ANY> <!ELEMENT if-fails ANY>
<!ELEMENT parameter (paramtype, default?, description?)> <!ELEMENT parameter (paramtype, default?, description?)>
<!ATTLIST parameter <!ATTLIST parameter
name CDATA #IMPLIED> name CDATA #IMPLIED>
<!ELEMENT programlisting ANY> <!ELEMENT programlisting ANY>
@ -393,7 +405,7 @@
<!--========== Customize the DocBook DTD ==========--> <!--========== Customize the DocBook DTD ==========-->
<!ENTITY % local.tech.char.class "|functionname|libraryname|enumname|code"> <!ENTITY % local.tech.char.class "|functionname|libraryname|enumname|code">
<!ENTITY % local.para.class <!ENTITY % local.para.class
"|using-namespace|using-class|librarylist|librarycategorylist"> "|using-namespace|using-class|librarylist|librarycategorylist">
<!ENTITY % local.descobj.class "|libraryinfo"> <!ENTITY % local.descobj.class "|libraryinfo">
<!ENTITY % local.classname.attrib "alt CDATA #IMPLIED"> <!ENTITY % local.classname.attrib "alt CDATA #IMPLIED">
@ -408,5 +420,5 @@
<!--========== Import DocBook DTD ==========--> <!--========== Import DocBook DTD ==========-->
<!ENTITY % DocBook PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" <!ENTITY % DocBook PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
%DocBook; %DocBook;

View File

@ -1,7 +1,7 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!-- <!--
Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com> Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
Distributed under the Boost Software License, Version 1.0. Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt) http://www.boost.org/LICENSE_1_0.txt)

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com> Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
Distributed under the Boost Software License, Version 1.0. Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt) http://www.boost.org/LICENSE_1_0.txt)
@ -9,7 +9,7 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"> version="1.0">
<xsl:strip-space elements="requires effects postconditions returns throws <xsl:strip-space elements="requires effects postconditions returns throws
complexity notes rationale purpose"/> complexity notes rationale purpose"/>
<!-- When true, the stylesheet will emit compact definitions of <!-- When true, the stylesheet will emit compact definitions of
@ -126,7 +126,7 @@
</xsl:choose> </xsl:choose>
</xsl:variable> </xsl:variable>
<xsl:if test="not ($standalone) or <xsl:if test="not ($standalone) or
(local-name(.)='signature' and (position() &gt; 1)) (local-name(.)='signature' and (position() &gt; 1))
or $suppress-template"> or $suppress-template">
<xsl:text>&#10;</xsl:text> <xsl:text>&#10;</xsl:text>
@ -136,7 +136,7 @@
<xsl:call-template name="indent"> <xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/> <xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template> </xsl:call-template>
<!-- Build the template header --> <!-- Build the template header -->
<xsl:variable name="template-length"> <xsl:variable name="template-length">
<xsl:choose> <xsl:choose>
@ -148,7 +148,7 @@
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:variable> </xsl:variable>
<!-- Build a full parameter string (without line breaks) --> <!-- Build a full parameter string (without line breaks) -->
<xsl:variable name="param-string"> <xsl:variable name="param-string">
<xsl:text>(</xsl:text> <xsl:text>(</xsl:text>
@ -168,21 +168,21 @@
</xsl:variable> </xsl:variable>
<!-- Build the full declaration text --> <!-- Build the full declaration text -->
<xsl:variable name="decl-string" <xsl:variable name="decl-string"
select="concat($type, $function-name, $param-string, $postdeclarator)"/> select="concat($type, $function-name, $param-string, $postdeclarator)"/>
<xsl:variable name="end-column" <xsl:variable name="end-column"
select="$template-length + string-length($decl-string) + $indentation"/> select="$template-length + string-length($decl-string) + $indentation"/>
<xsl:choose> <xsl:choose>
<!-- Check if we should put the template header on its own line to <!-- Check if we should put the template header on its own line to
save horizontal space. --> save horizontal space. -->
<xsl:when test="($template-length &gt; 0) and <xsl:when test="($template-length &gt; 0) and
($end-column &gt; $max-columns)"> ($end-column &gt; $max-columns)">
<!-- Emit template header on its own line --> <!-- Emit template header on its own line -->
<xsl:apply-templates select="template" mode="synopsis"> <xsl:apply-templates select="template" mode="synopsis">
<xsl:with-param name="indentation" select="$indentation"/> <xsl:with-param name="indentation" select="$indentation"/>
</xsl:apply-templates> </xsl:apply-templates>
<!-- Emit the rest of the function declaration (without the <!-- Emit the rest of the function declaration (without the
template header) indented two extra spaces. --> template header) indented two extra spaces. -->
<xsl:call-template name="function"> <xsl:call-template name="function">
@ -249,17 +249,17 @@
<xsl:text>(</xsl:text> <xsl:text>(</xsl:text>
<xsl:call-template name="function-parameters"> <xsl:call-template name="function-parameters">
<xsl:with-param name="include-names" select="$include-names"/> <xsl:with-param name="include-names" select="$include-names"/>
<xsl:with-param name="indentation" <xsl:with-param name="indentation"
select="$indentation + $template-length + string-length($type) select="$indentation + $template-length + string-length($type)
+ string-length($function-name) + 1"/> + string-length($function-name) + 1"/>
<xsl:with-param name="final" select="true()"/> <xsl:with-param name="final" select="true()"/>
</xsl:call-template> </xsl:call-template>
<xsl:text>)</xsl:text> <xsl:text>)</xsl:text>
<xsl:call-template name="source-highlight"> <xsl:call-template name="source-highlight">
<xsl:with-param name="text" select="$postdeclarator"/> <xsl:with-param name="text" select="$postdeclarator"/>
</xsl:call-template> </xsl:call-template>
<xsl:text>;</xsl:text> <xsl:text>;</xsl:text>
</xsl:when> </xsl:when>
<!-- This declaration will take multiple lines --> <!-- This declaration will take multiple lines -->
@ -320,11 +320,11 @@
<xsl:text>(</xsl:text> <xsl:text>(</xsl:text>
<xsl:call-template name="function-parameters"> <xsl:call-template name="function-parameters">
<xsl:with-param name="include-names" select="$include-names"/> <xsl:with-param name="include-names" select="$include-names"/>
<xsl:with-param name="indentation" <xsl:with-param name="indentation"
select="$indentation + $type-length select="$indentation + $type-length
+ string-length($function-name) + 1"/> + string-length($function-name) + 1"/>
<xsl:with-param name="final" select="true()"/> <xsl:with-param name="final" select="true()"/>
</xsl:call-template> </xsl:call-template>
<xsl:text>)</xsl:text> <xsl:text>)</xsl:text>
<xsl:call-template name="source-highlight"> <xsl:call-template name="source-highlight">
<xsl:with-param name="text" select="$postdeclarator"/> <xsl:with-param name="text" select="$postdeclarator"/>
@ -332,7 +332,7 @@
<xsl:text>;</xsl:text> <xsl:text>;</xsl:text>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>
<!-- Synopsis of function parameters, e.g., "(const T&, int x = 5)" --> <!-- Synopsis of function parameters, e.g., "(const T&, int x = 5)" -->
<xsl:template name="function-parameters"> <xsl:template name="function-parameters">
@ -394,18 +394,18 @@
</xsl:variable> </xsl:variable>
<xsl:variable name="text" select="concat($type, $name, $default)"/> <xsl:variable name="text" select="concat($type, $name, $default)"/>
<xsl:variable name="end-column" <xsl:variable name="end-column"
select="$column + string-length($prefix) + string-length($text)"/> select="$column + string-length($prefix) + string-length($text)"/>
<xsl:choose> <xsl:choose>
<!-- Parameter goes on this line --> <!-- Parameter goes on this line -->
<xsl:when test="$first-on-line or ($end-column &lt; $max-columns) <xsl:when test="$first-on-line or ($end-column &lt; $max-columns)
or not($wrap)"> or not($wrap)">
<xsl:choose> <xsl:choose>
<xsl:when test="$final"> <xsl:when test="$final">
<xsl:value-of select="$prefix"/> <xsl:value-of select="$prefix"/>
<xsl:apply-templates <xsl:apply-templates
select="$parameter/paramtype/*|$parameter/paramtype/text()" select="$parameter/paramtype/*|$parameter/paramtype/text()"
mode="annotation"> mode="annotation">
<xsl:with-param name="highlight" select="true()"/> <xsl:with-param name="highlight" select="true()"/>
@ -423,7 +423,7 @@
<xsl:with-param name="include-names" select="$include-names"/> <xsl:with-param name="include-names" select="$include-names"/>
<xsl:with-param name="wrap" select="$wrap"/> <xsl:with-param name="wrap" select="$wrap"/>
<xsl:with-param name="final" select="$final"/> <xsl:with-param name="final" select="$final"/>
<xsl:with-param name="parameters" <xsl:with-param name="parameters"
select="$parameters[position()!=1]"/> select="$parameters[position()!=1]"/>
<xsl:with-param name="prefix" select="', '"/> <xsl:with-param name="prefix" select="', '"/>
<xsl:with-param name="column" select="$end-column"/> <xsl:with-param name="column" select="$end-column"/>
@ -441,7 +441,7 @@
</xsl:call-template> </xsl:call-template>
<xsl:choose> <xsl:choose>
<xsl:when test="$final"> <xsl:when test="$final">
<xsl:apply-templates <xsl:apply-templates
select="$parameter/paramtype/*|$parameter/paramtype/text()" select="$parameter/paramtype/*|$parameter/paramtype/text()"
mode="annotation"> mode="annotation">
<xsl:with-param name="highlight" select="true()"/> <xsl:with-param name="highlight" select="true()"/>
@ -460,10 +460,10 @@
<xsl:with-param name="include-names" select="$include-names"/> <xsl:with-param name="include-names" select="$include-names"/>
<xsl:with-param name="wrap" select="$wrap"/> <xsl:with-param name="wrap" select="$wrap"/>
<xsl:with-param name="final" select="$final"/> <xsl:with-param name="final" select="$final"/>
<xsl:with-param name="parameters" <xsl:with-param name="parameters"
select="$parameters[position()!=1]"/> select="$parameters[position()!=1]"/>
<xsl:with-param name="prefix" select="', '"/> <xsl:with-param name="prefix" select="', '"/>
<xsl:with-param name="column" <xsl:with-param name="column"
select="1 + string-length($text) + $indentation"/> select="1 + string-length($text) + $indentation"/>
<xsl:with-param name="first-on-line" select="false()"/> <xsl:with-param name="first-on-line" select="false()"/>
</xsl:call-template> </xsl:call-template>
@ -479,7 +479,7 @@
<!-- True if we should compact this function --> <!-- True if we should compact this function -->
<xsl:variable name="compact" <xsl:variable name="compact"
select="not (para|description|requires|effects|postconditions|returns| select="not (para|description|requires|effects|postconditions|returns|
throws|complexity|notes|rationale) and throws|complexity|notes|rationale) and
($boost.compact.function='1') and ($boost.compact.function='1') and
not (local-name(.)='method')"/> not (local-name(.)='method')"/>
@ -524,7 +524,7 @@
<!-- True if we should compact this function --> <!-- True if we should compact this function -->
<xsl:variable name="compact" <xsl:variable name="compact"
select="not (para|description|requires|effects|postconditions|returns| select="not (para|description|requires|effects|postconditions|returns|
throws|complexity|notes|rationale) and throws|complexity|notes|rationale) and
($boost.compact.function='1') and ($boost.compact.function='1') and
not (local-name(.)='overloaded-method')"/> not (local-name(.)='overloaded-method')"/>
@ -537,7 +537,7 @@
<xsl:call-template name="indent"> <xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/> <xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template> </xsl:call-template>
<xsl:call-template name="highlight-comment"> <xsl:call-template name="highlight-comment">
<xsl:with-param name="text"> <xsl:with-param name="text">
<xsl:text>// </xsl:text> <xsl:text>// </xsl:text>
@ -566,7 +566,7 @@
<xsl:with-param name="name" select="$name"/> <xsl:with-param name="name" select="$name"/>
<xsl:with-param name="link-to" select="$link-to"/> <xsl:with-param name="link-to" select="$link-to"/>
</xsl:call-template> </xsl:call-template>
</xsl:for-each> </xsl:for-each>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<xsl:for-each select="signature"> <xsl:for-each select="signature">
@ -598,7 +598,7 @@
</xsl:if> </xsl:if>
<xsl:text>&#10;</xsl:text> <xsl:text>&#10;</xsl:text>
<xsl:call-template name="indent"> <xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/> <xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template> </xsl:call-template>
<emphasis> <emphasis>
<xsl:text>// </xsl:text> <xsl:text>// </xsl:text>
@ -634,8 +634,12 @@
<xsl:with-param name="text" select="''"/> <xsl:with-param name="text" select="''"/>
</xsl:call-template> </xsl:call-template>
<xsl:call-template name="monospaced"> <xsl:call-template name="monospaced">
<xsl:with-param name="text" select="@name"/> <xsl:with-param name="text">
<xsl:call-template name="object-name"/>
</xsl:with-param>
</xsl:call-template> </xsl:call-template>
<xsl:text> </xsl:text>
<xsl:call-template name="access-name"/>
<xsl:text> construct/copy/destruct</xsl:text> <xsl:text> construct/copy/destruct</xsl:text>
</xsl:with-param> </xsl:with-param>
<xsl:with-param name="text"> <xsl:with-param name="text">
@ -658,7 +662,9 @@
<xsl:call-template name="function"> <xsl:call-template name="function">
<xsl:with-param name="indentation" select="0"/> <xsl:with-param name="indentation" select="0"/>
<xsl:with-param name="is-reference" select="true()"/> <xsl:with-param name="is-reference" select="true()"/>
<xsl:with-param name="constructor-for" select="../@name"/> <xsl:with-param name="constructor-for">
<xsl:call-template name="object-name"/>
</xsl:with-param>
<xsl:with-param name="standalone" select="true()"/> <xsl:with-param name="standalone" select="true()"/>
</xsl:call-template> </xsl:call-template>
</xsl:with-param> </xsl:with-param>
@ -668,7 +674,7 @@
</xsl:with-param> </xsl:with-param>
</xsl:call-template> </xsl:call-template>
</xsl:template> </xsl:template>
<xsl:template match="copy-assignment" mode="reference"> <xsl:template match="copy-assignment" mode="reference">
<xsl:call-template name="function.documentation"> <xsl:call-template name="function.documentation">
<xsl:with-param name="text"> <xsl:with-param name="text">
@ -678,7 +684,9 @@
<xsl:call-template name="function"> <xsl:call-template name="function">
<xsl:with-param name="indentation" select="0"/> <xsl:with-param name="indentation" select="0"/>
<xsl:with-param name="is-reference" select="true()"/> <xsl:with-param name="is-reference" select="true()"/>
<xsl:with-param name="copy-assign-for" select="../@name"/> <xsl:with-param name="copy-assign-for">
<xsl:call-template name="object-name"/>
</xsl:with-param>
<xsl:with-param name="standalone" select="true()"/> <xsl:with-param name="standalone" select="true()"/>
</xsl:call-template> </xsl:call-template>
</xsl:with-param> </xsl:with-param>
@ -698,7 +706,9 @@
<xsl:call-template name="function"> <xsl:call-template name="function">
<xsl:with-param name="indentation" select="0"/> <xsl:with-param name="indentation" select="0"/>
<xsl:with-param name="is-reference" select="true()"/> <xsl:with-param name="is-reference" select="true()"/>
<xsl:with-param name="destructor-for" select="../@name"/> <xsl:with-param name="destructor-for">
<xsl:call-template name="object-name"/>
</xsl:with-param>
<xsl:with-param name="standalone" select="true()"/> <xsl:with-param name="standalone" select="true()"/>
</xsl:call-template> </xsl:call-template>
</xsl:with-param> </xsl:with-param>
@ -826,7 +836,7 @@
<!-- True if we should compact this function --> <!-- True if we should compact this function -->
<xsl:variable name="compact" <xsl:variable name="compact"
select="not (para|description|requires|effects|postconditions|returns| select="not (para|description|requires|effects|postconditions|returns|
throws|complexity|notes|rationale) and throws|complexity|notes|rationale) and
($boost.compact.function='1') and ($boost.compact.function='1') and
not (local-name(.)='method')"/> not (local-name(.)='method')"/>
@ -856,7 +866,7 @@
<!-- True if we should compact this function --> <!-- True if we should compact this function -->
<xsl:variable name="compact" <xsl:variable name="compact"
select="not (para|description|requires|effects|postconditions|returns| select="not (para|description|requires|effects|postconditions|returns|
throws|complexity|notes|rationale) and throws|complexity|notes|rationale) and
($boost.compact.function='1')"/> ($boost.compact.function='1')"/>
<xsl:if test="not ($compact)"> <xsl:if test="not ($compact)">
@ -891,8 +901,8 @@
<xsl:with-param name="namespace-reference" select="true()"/> <xsl:with-param name="namespace-reference" select="true()"/>
</xsl:call-template> </xsl:call-template>
</xsl:with-param> </xsl:with-param>
</xsl:call-template> </xsl:call-template>
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
<xsl:template match="overloaded-function" mode="reference"> <xsl:template match="overloaded-function" mode="reference">
@ -901,9 +911,9 @@
<!-- True if we should compact this function --> <!-- True if we should compact this function -->
<xsl:variable name="compact" <xsl:variable name="compact"
select="not (para|description|requires|effects|postconditions|returns| select="not (para|description|requires|effects|postconditions|returns|
throws|complexity|notes|rationale) and throws|complexity|notes|rationale) and
($boost.compact.function='1')"/> ($boost.compact.function='1')"/>
<xsl:if test="not ($compact)"> <xsl:if test="not ($compact)">
<xsl:call-template name="function.documentation"> <xsl:call-template name="function.documentation">
<xsl:with-param name="text"> <xsl:with-param name="text">
@ -911,7 +921,7 @@
<xsl:attribute name="id"> <xsl:attribute name="id">
<xsl:call-template name="generate.id"/> <xsl:call-template name="generate.id"/>
</xsl:attribute> </xsl:attribute>
<xsl:call-template name="preformatted"> <xsl:call-template name="preformatted">
<xsl:with-param name="text"> <xsl:with-param name="text">
<xsl:for-each select="signature"> <xsl:for-each select="signature">
@ -935,7 +945,7 @@
<!-- True if we should compact this function --> <!-- True if we should compact this function -->
<xsl:variable name="compact" <xsl:variable name="compact"
select="not (para|description|requires|effects|postconditions|returns| select="not (para|description|requires|effects|postconditions|returns|
throws|complexity|notes|rationale) and throws|complexity|notes|rationale) and
($boost.compact.function='1')"/> ($boost.compact.function='1')"/>
<xsl:variable name="name" select="@name"/> <xsl:variable name="name" select="@name"/>
@ -975,8 +985,8 @@
<xsl:with-param name="namespace-reference" select="true()"/> <xsl:with-param name="namespace-reference" select="true()"/>
</xsl:call-template> </xsl:call-template>
</xsl:with-param> </xsl:with-param>
</xsl:call-template> </xsl:call-template>
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
<xsl:template match="overloaded-method" mode="reference"> <xsl:template match="overloaded-method" mode="reference">
@ -988,7 +998,7 @@
<xsl:attribute name="id"> <xsl:attribute name="id">
<xsl:call-template name="generate.id"/> <xsl:call-template name="generate.id"/>
</xsl:attribute> </xsl:attribute>
<xsl:call-template name="preformatted"> <xsl:call-template name="preformatted">
<xsl:with-param name="text"> <xsl:with-param name="text">
<xsl:for-each select="signature"> <xsl:for-each select="signature">
@ -1025,7 +1035,7 @@
<xsl:with-param name="text" select="string(@name)"/> <xsl:with-param name="text" select="string(@name)"/>
</xsl:call-template> </xsl:call-template>
</emphasis> </emphasis>
<xsl:apply-templates select="method|overloaded-method" <xsl:apply-templates select="method|overloaded-method"
mode="synopsis"> mode="synopsis">
<xsl:with-param name="indentation" select="$indentation"/> <xsl:with-param name="indentation" select="$indentation"/>
</xsl:apply-templates> </xsl:apply-templates>
@ -1044,7 +1054,9 @@
<xsl:with-param name="text" select="''"/> <xsl:with-param name="text" select="''"/>
</xsl:call-template> </xsl:call-template>
<xsl:call-template name="monospaced"> <xsl:call-template name="monospaced">
<xsl:with-param name="text" select="../@name"/> <xsl:with-param name="text">
<xsl:call-template name="object-name"/>
</xsl:with-param>
</xsl:call-template> </xsl:call-template>
<xsl:text> </xsl:text> <xsl:text> </xsl:text>
<xsl:value-of select="@name"/> <xsl:value-of select="@name"/>
@ -1057,7 +1069,7 @@
</xsl:with-param> </xsl:with-param>
</xsl:call-template> </xsl:call-template>
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
<!-- Group free functions together under a category name (synopsis)--> <!-- Group free functions together under a category name (synopsis)-->
<xsl:template match="free-function-group" mode="synopsis"> <xsl:template match="free-function-group" mode="synopsis">
@ -1105,5 +1117,5 @@
</orderedlist> </orderedlist>
</xsl:with-param> </xsl:with-param>
</xsl:call-template> </xsl:call-template>
</xsl:template> </xsl:template>
</xsl:stylesheet> </xsl:stylesheet>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com> Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
Distributed under the Boost Software License, Version 1.0. Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt) http://www.boost.org/LICENSE_1_0.txt)
@ -110,9 +110,9 @@
<!-- Strip the qualifiers off a qualified name and return the unqualified <!-- Strip the qualifiers off a qualified name and return the unqualified
name. For instance, "boost::python::function" would become just name. For instance, "boost::python::function" would become just
"function". "function".
Must handle ns::foo -> foo Must handle ns::foo -> foo
Must handle ns::foo<bar::baz> -> foo<bar::baz> Must handle ns::foo<bar::baz> -> foo<bar::baz>
Must handle ns::foo<bar::baz>::nested -> nested Must handle ns::foo<bar::baz>::nested -> nested
Must handle ns::foo<x>::bar<y> -> bar<y> --> Must handle ns::foo<x>::bar<y> -> bar<y> -->
<xsl:template name="strip-qualifiers"> <xsl:template name="strip-qualifiers">
<xsl:param name="name"/> <xsl:param name="name"/>
@ -157,7 +157,7 @@
<xsl:param name="depth" select="1"/> <xsl:param name="depth" select="1"/>
<!-- Determine the set of ancestor namespaces --> <!-- Determine the set of ancestor namespaces -->
<xsl:variable name="ancestors" <xsl:variable name="ancestors"
select="ancestor::namespace| select="ancestor::namespace|
ancestor::class|ancestor::struct|ancestor::union| ancestor::class|ancestor::struct|ancestor::union|
ancestor::class-specialization|ancestor::struct-specialization|ancestor::union-specialization"/> ancestor::class-specialization|ancestor::struct-specialization|ancestor::union-specialization"/>
@ -279,16 +279,16 @@
$context/ancestor::*/using-class | $context/ancestor::*/using-class |
$context/ancestor::class | $context/ancestor::class |
$context/ancestor::struct"/> $context/ancestor::struct"/>
<!-- The name of the current directive --> <!-- The name of the current directive -->
<xsl:variable name="this-context"> <xsl:variable name="this-context">
<xsl:apply-templates select="$directives[$index]" mode="print-name"/> <xsl:apply-templates select="$directives[$index]" mode="print-name"/>
</xsl:variable> </xsl:variable>
<!-- Check if we have a match --> <!-- Check if we have a match -->
<xsl:variable name="have-match" <xsl:variable name="have-match"
select="$fully-qualified-name = concat($prefix, $name)"/> select="$fully-qualified-name = concat($prefix, $name)"/>
<xsl:if test="$have-match"> <xsl:if test="$have-match">
<xsl:choose> <xsl:choose>
<xsl:when test="$mode='matches'"> <xsl:when test="$mode='matches'">
@ -306,7 +306,7 @@
</xsl:when> </xsl:when>
</xsl:choose> </xsl:choose>
</xsl:if> </xsl:if>
<xsl:if test="(not($index &gt; count($directives))) and <xsl:if test="(not($index &gt; count($directives))) and
(not($have-match) or ($mode = 'matches'))"> (not($have-match) or ($mode = 'matches'))">
<xsl:variable name="first-branch"> <xsl:variable name="first-branch">
@ -324,7 +324,7 @@
</xsl:call-template> </xsl:call-template>
</xsl:if> </xsl:if>
</xsl:variable> </xsl:variable>
<xsl:choose> <xsl:choose>
<xsl:when test="string($first-branch) != ''"> <xsl:when test="string($first-branch) != ''">
<xsl:copy-of select="$first-branch"/> <xsl:copy-of select="$first-branch"/>
@ -338,12 +338,12 @@
<xsl:with-param name="node" select="$node"/> <xsl:with-param name="node" select="$node"/>
<xsl:with-param name="mode" select="$mode"/> <xsl:with-param name="mode" select="$mode"/>
<xsl:with-param name="index" select="$index + 1"/> <xsl:with-param name="index" select="$index + 1"/>
<xsl:with-param name="prefix" <xsl:with-param name="prefix"
select="concat($this-context, '::')"/> select="concat($this-context, '::')"/>
</xsl:call-template> </xsl:call-template>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
</xsl:if> </xsl:if>
</xsl:when> </xsl:when>
</xsl:choose> </xsl:choose>
</xsl:template> </xsl:template>
@ -372,19 +372,19 @@
<xsl:template name="cxx-link-name"> <xsl:template name="cxx-link-name">
<!-- The actual lookup node --> <!-- The actual lookup node -->
<xsl:param name="lookup"/> <xsl:param name="lookup"/>
<!-- The type of name to lookup (e.g., class) --> <!-- The type of name to lookup (e.g., class) -->
<xsl:param name="type"/> <xsl:param name="type"/>
<!-- The name we are looking for --> <!-- The name we are looking for -->
<xsl:param name="name"/> <xsl:param name="name"/>
<!-- The name we will display --> <!-- The name we will display -->
<xsl:param name="display-name"/> <xsl:param name="display-name"/>
<!-- The name we are looking for (unqualified)--> <!-- The name we are looking for (unqualified)-->
<xsl:param name="unqualified-name"/> <xsl:param name="unqualified-name"/>
<!-- The list of nodes that match the lookup node in both name and type --> <!-- The list of nodes that match the lookup node in both name and type -->
<xsl:param name="nodes"/> <xsl:param name="nodes"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com> Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
Distributed under the Boost Software License, Version 1.0. Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt) http://www.boost.org/LICENSE_1_0.txt)
@ -21,7 +21,7 @@
<xsl:include href="macro.xsl"/> <xsl:include href="macro.xsl"/>
<xsl:include href="testing/testsuite.xsl"/> <xsl:include href="testing/testsuite.xsl"/>
<xsl:include href="caramel/concept2docbook.xsl"/> <xsl:include href="caramel/concept2docbook.xsl"/>
<xsl:template name="namespace-synopsis"> <xsl:template name="namespace-synopsis">
<xsl:param name="indentation" select="0"/> <xsl:param name="indentation" select="0"/>
<!-- Open namespace--> <!-- Open namespace-->
@ -32,7 +32,7 @@
<xsl:with-param name="text" select="concat('namespace ',@name)"/> <xsl:with-param name="text" select="concat('namespace ',@name)"/>
</xsl:call-template> </xsl:call-template>
<xsl:text> {</xsl:text> <xsl:text> {</xsl:text>
<!-- Emit namespace types --> <!-- Emit namespace types -->
<xsl:apply-templates select="class|class-specialization| <xsl:apply-templates select="class|class-specialization|
struct|struct-specialization| struct|struct-specialization|
@ -40,19 +40,19 @@
typedef|enum|data-member" mode="synopsis"> typedef|enum|data-member" mode="synopsis">
<xsl:with-param name="indentation" select="$indentation + 2"/> <xsl:with-param name="indentation" select="$indentation + 2"/>
</xsl:apply-templates> </xsl:apply-templates>
<!-- Emit namespace functions --> <!-- Emit namespace functions -->
<xsl:apply-templates <xsl:apply-templates
select="free-function-group|function|overloaded-function" select="free-function-group|function|overloaded-function"
mode="synopsis"> mode="synopsis">
<xsl:with-param name="indentation" select="$indentation + 2"/> <xsl:with-param name="indentation" select="$indentation + 2"/>
</xsl:apply-templates> </xsl:apply-templates>
<!-- Emit namespaces --> <!-- Emit namespaces -->
<xsl:apply-templates select="namespace" mode="synopsis"> <xsl:apply-templates select="namespace" mode="synopsis">
<xsl:with-param name="indentation" select="$indentation + 2"/> <xsl:with-param name="indentation" select="$indentation + 2"/>
</xsl:apply-templates> </xsl:apply-templates>
<!-- Close namespace --> <!-- Close namespace -->
<xsl:text>&#10;</xsl:text> <xsl:text>&#10;</xsl:text>
<xsl:call-template name="indent"> <xsl:call-template name="indent">
@ -89,7 +89,7 @@
<xsl:apply-templates select="class|class-specialization| <xsl:apply-templates select="class|class-specialization|
struct|struct-specialization| struct|struct-specialization|
union|union-specialization|enum|function| union|union-specialization|enum|function|
overloaded-function|data-member" overloaded-function|data-member"
mode="namespace-reference"/> mode="namespace-reference"/>
</xsl:template> </xsl:template>

View File

@ -659,7 +659,9 @@ Unknown type element "<xsl:value-of select="local-name(.)"/>" in type.display.na
<xsl:with-param name="indentation" select="$indentation"/> <xsl:with-param name="indentation" select="$indentation"/>
<xsl:with-param name="context" select="../@name"/> <xsl:with-param name="context" select="../@name"/>
<xsl:with-param name="is-reference" select="false()"/> <xsl:with-param name="is-reference" select="false()"/>
<xsl:with-param name="constructor-for" select="../@name"/> <xsl:with-param name="constructor-for">
<xsl:call-template name="object-name"/>
</xsl:with-param>
</xsl:call-template> </xsl:call-template>
</xsl:template> </xsl:template>
@ -669,7 +671,9 @@ Unknown type element "<xsl:value-of select="local-name(.)"/>" in type.display.na
<xsl:with-param name="indentation" select="$indentation"/> <xsl:with-param name="indentation" select="$indentation"/>
<xsl:with-param name="context" select="../@name"/> <xsl:with-param name="context" select="../@name"/>
<xsl:with-param name="is-reference" select="false()"/> <xsl:with-param name="is-reference" select="false()"/>
<xsl:with-param name="copy-assign-for" select="../@name"/> <xsl:with-param name="copy-assign-for">
<xsl:call-template name="object-name"/>
</xsl:with-param>
</xsl:call-template> </xsl:call-template>
</xsl:template> </xsl:template>
@ -679,90 +683,15 @@ Unknown type element "<xsl:value-of select="local-name(.)"/>" in type.display.na
<xsl:with-param name="indentation" select="$indentation"/> <xsl:with-param name="indentation" select="$indentation"/>
<xsl:with-param name="context" select="../@name"/> <xsl:with-param name="context" select="../@name"/>
<xsl:with-param name="is-reference" select="false()"/> <xsl:with-param name="is-reference" select="false()"/>
<xsl:with-param name="destructor-for" select="../@name"/> <xsl:with-param name="destructor-for">
<xsl:call-template name="object-name"/>
</xsl:with-param>
</xsl:call-template> </xsl:call-template>
</xsl:template> </xsl:template>
<xsl:template name="class-type-synopsis"> <xsl:template name="class-members-synopsis">
<xsl:param name="indentation" select="0"/> <xsl:param name="indentation" select="0"/>
<!-- The keyword used to declare this class type, e.g., class,
struct, or union. -->
<xsl:variable name="class-key">
<xsl:call-template name="type.class.key"/>
</xsl:variable>
<xsl:if test="ancestor::class|ancestor::class-specialization|
ancestor::struct|ancestor::struct-specialization|
ancestor::union|ancestor::union-specialization">
<xsl:text>&#10;&#10;</xsl:text>
<!-- If this nested class has a "purpose" element, use it as a
comment. -->
<xsl:if test="purpose">
<xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
<xsl:call-template name="highlight-comment">
<xsl:with-param name="text">
<xsl:text>// </xsl:text>
<xsl:apply-templates select="purpose" mode="comment"/>
</xsl:with-param>
</xsl:call-template>
<xsl:text>&#10;</xsl:text>
</xsl:if>
</xsl:if>
<!-- Template header -->
<xsl:if test="template">
<xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
<xsl:apply-templates select="template" mode="reference">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:apply-templates>
</xsl:if>
<xsl:text>&#10;</xsl:text>
<!-- Class name -->
<xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
<xsl:call-template name="highlight-keyword">
<xsl:with-param name="keyword" select="$class-key"/>
</xsl:call-template>
<xsl:text> </xsl:text>
<xsl:value-of select="@name"/>
<xsl:apply-templates select="specialization"/>
<xsl:choose>
<xsl:when test="inherit">
<!-- Base class list (with opening brace) -->
<xsl:call-template name="print.base.classes">
<xsl:with-param name="indentation"
select="string-length($class-key) + string-length(@name)
+ $indentation + 1"/>
<xsl:with-param name="base-indentation" select="$indentation"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<!-- Opening brace -->
<xsl:text> {</xsl:text>
</xsl:otherwise>
</xsl:choose>
<!-- Public designator -->
<xsl:if test="contains(local-name(.), 'class')">
<xsl:text>&#10;</xsl:text>
<xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
<xsl:call-template name="highlight-keyword">
<xsl:with-param name="keyword" select="'public'"/>
</xsl:call-template>
<xsl:text>:</xsl:text>
</xsl:if>
<!-- Typedefs --> <!-- Typedefs -->
<xsl:if test="typedef"> <xsl:if test="typedef">
<xsl:text>&#10;</xsl:text> <xsl:text>&#10;</xsl:text>
@ -836,6 +765,121 @@ Unknown type element "<xsl:value-of select="local-name(.)"/>" in type.display.na
<xsl:apply-templates select="data-member" mode="synopsis"> <xsl:apply-templates select="data-member" mode="synopsis">
<xsl:with-param name="indentation" select="$indentation + 2"/> <xsl:with-param name="indentation" select="$indentation + 2"/>
</xsl:apply-templates> </xsl:apply-templates>
</xsl:template>
<xsl:template name="print-access-specification">
<xsl:param name="indentation" select="0"/>
<xsl:param name="specification" select="'public'"/>
<xsl:text>&#10;</xsl:text>
<xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
<xsl:call-template name="highlight-keyword">
<xsl:with-param name="keyword" select="$specification"/>
</xsl:call-template>
<xsl:text>:</xsl:text>
</xsl:template>
<xsl:template match="access" mode="synopsis">
<xsl:param name="indentation" select="0"/>
<xsl:call-template name="print-access-specification">
<xsl:with-param name="indentation" select="$indentation"/>
<xsl:with-param name="specification" select="@name"/>
</xsl:call-template>
<xsl:call-template name="class-members-synopsis">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="class-type-synopsis">
<xsl:param name="indentation" select="0"/>
<!-- The keyword used to declare this class type, e.g., class,
struct, or union. -->
<xsl:variable name="class-key">
<xsl:call-template name="type.class.key"/>
</xsl:variable>
<xsl:if test="ancestor::class|ancestor::class-specialization|
ancestor::struct|ancestor::struct-specialization|
ancestor::union|ancestor::union-specialization">
<xsl:text>&#10;&#10;</xsl:text>
<!-- If this nested class has a "purpose" element, use it as a
comment. -->
<xsl:if test="purpose">
<xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
<xsl:call-template name="highlight-comment">
<xsl:with-param name="text">
<xsl:text>// </xsl:text>
<xsl:apply-templates select="purpose" mode="comment"/>
</xsl:with-param>
</xsl:call-template>
<xsl:text>&#10;</xsl:text>
</xsl:if>
</xsl:if>
<!-- Template header -->
<xsl:if test="template">
<xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
<xsl:apply-templates select="template" mode="reference">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:apply-templates>
</xsl:if>
<xsl:text>&#10;</xsl:text>
<!-- Class name -->
<xsl:call-template name="indent">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
<xsl:call-template name="highlight-keyword">
<xsl:with-param name="keyword" select="$class-key"/>
</xsl:call-template>
<xsl:text> </xsl:text>
<xsl:value-of select="@name"/>
<xsl:apply-templates select="specialization"/>
<xsl:choose>
<xsl:when test="inherit">
<!-- Base class list (with opening brace) -->
<xsl:call-template name="print.base.classes">
<xsl:with-param name="indentation"
select="string-length($class-key) + string-length(@name)
+ $indentation + 1"/>
<xsl:with-param name="base-indentation" select="$indentation"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<!-- Opening brace -->
<xsl:text> {</xsl:text>
</xsl:otherwise>
</xsl:choose>
<!-- Default public designator for members not inside explicit <access> elements -->
<xsl:if test="contains(local-name(.), 'class')">
<xsl:if test="count(static-constant|typedef|enum|
copy-assignment|constructor|destructor|method-group|
function|method|overloaded-method|data-member|
class|class-specialization|
struct|struct-specialization|
union|union-specialization) &gt; 0">
<xsl:call-template name="print-access-specification">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
<xsl:call-template name="class-members-synopsis">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:call-template>
<xsl:apply-templates select="access" mode="synopsis">
<xsl:with-param name="indentation" select="$indentation"/>
</xsl:apply-templates>
<!-- Closing brace --> <!-- Closing brace -->
<xsl:text>&#10;</xsl:text> <xsl:text>&#10;</xsl:text>
@ -856,6 +900,30 @@ Unknown type element "<xsl:value-of select="local-name(.)"/>" in type.display.na
</xsl:call-template> </xsl:call-template>
</xsl:template> </xsl:template>
<xsl:template name="class-members-reference">
<xsl:call-template name="construct-copy-destruct-reference"/>
<xsl:apply-templates
select="method-group|method|overloaded-method"
mode="reference"/>
<!-- Emit reference docs for nested classes -->
<xsl:apply-templates
select="class|class-specialization|
struct|struct-specialization|
union|union-specialization"
mode="namespace-reference"/>
<!-- Emit reference docs for nested enums -->
<xsl:apply-templates
select="enum"
mode="namespace-reference"/>
</xsl:template>
<xsl:template match="access" mode="namespace-reference">
<xsl:call-template name="class-members-reference"/>
</xsl:template>
<!-- Emit namespace-level class reference documentation --> <!-- Emit namespace-level class reference documentation -->
<xsl:template match="class|class-specialization| <xsl:template match="class|class-specialization|
struct|struct-specialization| struct|struct-specialization|
@ -900,25 +968,8 @@ Unknown type element "<xsl:value-of select="local-name(.)"/>" in type.display.na
</xsl:if> </xsl:if>
<xsl:apply-templates select="description"/> <xsl:apply-templates select="description"/>
<xsl:apply-templates select="typedef" mode="reference"/> <xsl:call-template name="class-members-reference"/>
<xsl:apply-templates select="access" mode="namespace-reference"/>
<xsl:call-template name="construct-copy-destruct-reference"/>
<xsl:apply-templates
select="method-group|method|overloaded-method"
mode="reference"/>
<!-- Emit reference docs for nested classes -->
<xsl:apply-templates
select="class|class-specialization|
struct|struct-specialization|
union|union-specialization"
mode="namespace-reference"/>
<!-- Emit reference docs for nested enums -->
<xsl:apply-templates
select="enum"
mode="namespace-reference"/>
<xsl:apply-templates select="free-function-group" mode="reference"> <xsl:apply-templates select="free-function-group" mode="reference">
<xsl:with-param name="class" select="@name"/> <xsl:with-param name="class" select="@name"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com> Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
Distributed under the Boost Software License, Version 1.0. Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at (See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt) http://www.boost.org/LICENSE_1_0.txt)
@ -19,4 +19,33 @@
</xsl:if> </xsl:if>
</xsl:template> </xsl:template>
<!-- get name of first ancestor-or-self which is a class, struct or union -->
<xsl:template name="object-name">
<xsl:value-of select="(ancestor-or-self::class |
ancestor-or-self::class-specialization |
ancestor-or-self::struct |
ancestor-or-self::struct-specialization |
ancestor-or-self::union |
ancestor-or-self::union-specialization)/@name[last()]"/>
</xsl:template>
<!-- get name of access specification that we are inside -->
<xsl:template name="access-name">
<xsl:variable name="ancestors" select="ancestor-or-self::access |
ancestor-or-self::class |
ancestor-or-self::class-specialization |
ancestor-or-self::struct |
ancestor-or-self::struct-specialization |
ancestor-or-self::union |
ancestor-or-self::union-specialization"/>
<xsl:choose>
<xsl:when test="name($ancestors[last()])='access'">
<xsl:value-of select="$ancestors[last()]/@name"/>
</xsl:when>
<xsl:otherwise>
public
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet> </xsl:stylesheet>