--- /dev/null
+<!-- Converted by db4-upgrade version 1.0 -->
+
+<article xmlns="http://docbook.org/ns/docbook" version="5.0"><info><title>DocBook API Reference</title></info>
+<!--
+ <para>Elements:<itemizedlist spacing="compact"><listitem><simpara><link linkend="api.grammar.access">Element <tag>access</tag> - Declares an access specification for class members</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.api">Element <tag>api</tag> - Defines a DocBook API book</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.class">Element <tag>class</tag> - Declares a class or class template</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.class-specialization">Element <tag>class-specialization</tag> - A specialization (partial or full) of a class template</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.code">Element <tag>code</tag> - Mimics the <tag>code</tag> tag in HTML</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.compile-fail-test">Element <tag>compile-fail-test</tag> - A testcase that should fail to compile</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.compile-test">Element <tag>compile-test</tag> - A testcase that should compile correctly</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.complexity">Element <tag>complexity</tag> - The time/space/etc. complexity of a function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.constructor">Element <tag>constructor</tag> - Declares a constructor of the enclosing class</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.copy-assignment">Element <tag>copy-assignment</tag> - Declares a copy-assignment operator</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.data-member">Element <tag>data-member</tag> - Declares a data member of a class</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.default">Element <tag>default</tag> - The default value of a function or template parameter</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.description">Element <tag>description</tag> - Detailed description of a construct</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.destructor">Element <tag>destructor</tag> - Declares a destructor for the enclosing class</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.effects">Element <tag>effects</tag> - Declares the side effects of a function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.enum">Element <tag>enum</tag> - Declares an enumeration type</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.enumname">Element <tag>enumname</tag> - References an enumeration type with the given name</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.enumvalue">Element <tag>enumvalue</tag> - A single value of an enumeration</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.free-function-group">Element <tag>free-function-group</tag> - A set of functions that are grouped together under one name</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.function">Element <tag>function</tag> - Declares a function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.functionname">Element <tag>functionname</tag> - References a function with the given name</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.globalname">Element <tag>globalname</tag> - References a global with the given name</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.header">Element <tag>header</tag> - Declares a C++ header with the given name</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.headername">Element <tag>headername</tag> - References a C++ header with the given name</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.if-fails">Element <tag>if-fails</tag> - What it means when a testcase fails</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.inherit">Element <tag>inherit</tag> - Declares a base class of the enclosing class or struct</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.lib">Element <tag>lib</tag> - A library dependency</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.library">Element <tag>library</tag> - Top-level element for a library</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.library-reference">Element <tag>library-reference</tag> - Declares the reference material for a library</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.librarycategory">Element <tag>librarycategory</tag> - Declares that the enclosing library is in this category</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.librarycategorydef">Element <tag>librarycategorydef</tag> - Defines a new library category</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.librarycategorylist">Element <tag>librarycategorylist</tag> - Categorized listing of libraries</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.libraryinfo">Element <tag>libraryinfo</tag> - Provides information about a library</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.librarylist">Element <tag>librarylist</tag> - Placeholder for an alphabetical list of libraries</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.libraryname">Element <tag>libraryname</tag> - References a library of the given name</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.librarypurpose">Element <tag>librarypurpose</tag> - Describes in one short sentence or phrase the purpose of a library</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.link-fail-test">Element <tag>link-fail-test</tag> - Declares a test that should compile but fail to link</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.link-test">Element <tag>link-test</tag> - Declares a test that should compile and link</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.macroname">Element <tag>macroname</tag> - References a macro with the given name</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.method">Element <tag>method</tag> - Declares a method, i.e., a member function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.method-group">Element <tag>method-group</tag> - A set of methods that are grouped together under one name</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.namespace">Element <tag>namespace</tag> - Declares a namespace</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.notes">Element <tag>notes</tag> - Non-normative notes about a function's semantics</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.overloaded-function">Element <tag>overloaded-function</tag> - An overloaded function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.overloaded-method">Element <tag>overloaded-method</tag> - An overloaded method</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.parameter">Element <tag>parameter</tag> - A function parameter</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.paramtype">Element <tag>paramtype</tag> - The type of a function parameter</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.postconditions">Element <tag>postconditions</tag> - Conditions that must hold after the function returns</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.precondition">Element <tag>precondition</tag> - Conditions that must be met prior to executing a function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.programlisting">Element <tag>programlisting</tag> - A sample of program code</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.purpose">Element <tag>purpose</tag> - A short description of an entity's use</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.rationale">Element <tag>rationale</tag> - Describes the rationale for a particular function's design</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.requirement">Element <tag>requirement</tag> - A requirement/property in the Jamfile for a testcase</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.requires">Element <tag>requires</tag> - Declares the requirements of a function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.returns">Element <tag>returns</tag> - Description of the return value of a function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.run-fail-test">Element <tag>run-fail-test</tag> - A testcase that should compile and link, but fail on execution</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.run-test">Element <tag>run-test</tag> - A testcase that should compile, link, and execute</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.signature">Element <tag>signature</tag> - One signature of an overloaded function or method</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.snippet">Element <tag>snippet</tag> - Pulls in a code snippet from a <tag>programlisting</tag> element</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.source">Element <tag>source</tag> - Defines source code for a test</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.specialization">Element <tag>specialization</tag> - Defines the specialization arguments for a class specialization</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.static-constant">Element <tag>static-constant</tag> - Declares a static constant, e.g., <code>const int foo = 5;</code>.</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.struct">Element <tag>struct</tag> - Declares a C++ struct</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.struct-specialization">Element <tag>struct-specialization</tag> - A specialization (full or partial) of a struct template</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.template">Element <tag>template</tag> - Declares the template parameters of a class or function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.template-arg">Element <tag>template-arg</tag> - A template argument in a specialization</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.template-nontype-parameter">Element <tag>template-nontype-parameter</tag> - A nontype template parameter</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.template-type-parameter">Element <tag>template-type-parameter</tag> - Declares a template type parameter</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.template-varargs">Element <tag>template-varargs</tag> - Declares a variable-length list of template parameters</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.testsuite">Element <tag>testsuite</tag> - Describes a library testsuite</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.throws">Element <tag>throws</tag> - Description of the exceptions thrown by a function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.type">Element <tag>type</tag> - The type of an element or return type of a function</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.typedef">Element <tag>typedef</tag> - Declares a typedef</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.union">Element <tag>union</tag> - Declares a C++ union or union template</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.union-specialization">Element <tag>union-specialization</tag> - A specialization (full or partial) of a union template</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.using-class">Element <tag>using-class</tag> - Injects the method and function names of a class into the local scope</link></simpara></listitem><listitem><simpara><link linkend="api.grammar.using-namespace">Element <tag>using-namespace</tag> - Injects the declared names from a namespace into the local scope</link></simpara></listitem></itemizedlist></para>
+ -->
+ <refentry xml:id="api.grammar.class-specialization">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>class-specialization</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>class-specialization</refname>
+ <refpurpose>A specialization (partial or full) of a class template</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>class-specialization ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.specialization">specialization</link>?, <link linkend="api.grammar.inherit">inherit</link>?, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, (<link linkend="api.grammar.access">access</link>| <link linkend="api.grammar.static-constant">static-constant</link>| <link linkend="api.grammar.typedef">typedef</link>| <link linkend="api.grammar.enum">enum</link>| <link linkend="api.grammar.copy-assignment">copy-assignment</link>| <link linkend="api.grammar.constructor">constructor</link>| <link linkend="api.grammar.destructor">destructor</link>| <link linkend="api.grammar.method-group">method-group</link>| <link linkend="api.grammar.free-function-group">free-function-group</link>| <link linkend="api.grammar.function">function</link>| <link linkend="api.grammar.method">method</link>| <link linkend="api.grammar.overloaded-function">overloaded-function</link>| <link linkend="api.grammar.overloaded-method">overloaded-method</link>| <link linkend="api.grammar.data-member">data-member</link>| <link linkend="api.grammar.class">class</link>| <link linkend="api.grammar.class-specialization">class-specialization</link>| <link linkend="api.grammar.struct">struct</link>| <link linkend="api.grammar.struct-specialization">struct-specialization</link>| <link linkend="api.grammar.union">union</link>| <link linkend="api.grammar.union-specialization">union-specialization</link>)*)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.link-test">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>link-test</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>link-test</refname>
+ <refpurpose>Declares a test that should compile and link</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>link-test ::=
+ (<link linkend="api.grammar.source">source</link>*, <link linkend="api.grammar.lib">lib</link>*, <link linkend="api.grammar.requirement">requirement</link>*, <link linkend="api.grammar.purpose">purpose</link>, <link linkend="api.grammar.if-fails">if-fails</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>filename</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the file associated with this element</entry></row>
+<row><entry>name</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.link-fail-test">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>link-fail-test</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>link-fail-test</refname>
+ <refpurpose>Declares a test that should compile but fail to link</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>link-fail-test ::=
+ (<link linkend="api.grammar.source">source</link>*, <link linkend="api.grammar.lib">lib</link>*, <link linkend="api.grammar.requirement">requirement</link>*, <link linkend="api.grammar.purpose">purpose</link>, <link linkend="api.grammar.if-fails">if-fails</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>filename</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the file associated with this element</entry></row>
+<row><entry>name</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.typedef">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>typedef</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>typedef</refname>
+ <refpurpose>Declares a typedef</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>typedef ::=
+ (<link linkend="api.grammar.type">type</link>, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.static-constant">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>static-constant</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>static-constant</refname>
+ <refpurpose>Declares a static constant, e.g., <code>const int foo = 5;</code>.</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>static-constant ::=
+ (<link linkend="api.grammar.type">type</link>, <link linkend="api.grammar.default">default</link>, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.code">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>code</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>code</refname>
+ <refpurpose>Mimics the <tag>code</tag> tag in HTML</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>code ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>Text within a <tag>code</tag> tag is generally typeset
+ in a different, monospaced font so that it stands out as code. The
+ <tag>code</tag> tag in api is transformed directly
+ into the <tag>computeroutput</tag> tag in DocBook.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.destructor">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>destructor</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>destructor</refname>
+ <refpurpose>Declares a destructor for the enclosing class</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>destructor ::=
+ (<link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, <link linkend="api.grammar.requires">requires</link>?, <link linkend="api.grammar.effects">effects</link>?, <link linkend="api.grammar.postconditions">postconditions</link>?, <link linkend="api.grammar.returns">returns</link>?, <link linkend="api.grammar.throws">throws</link>?, <link linkend="api.grammar.complexity">complexity</link>?, <link linkend="api.grammar.notes">notes</link>?, <link linkend="api.grammar.rationale">rationale</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>General documentation on functions in api is provided in
+ the <link linkend="api.grammar.function"><tag>function</tag></link>
+ element documentation.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>specifiers</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The specifiers for this function, e.g., inline, static, etc.</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.template-type-parameter">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>template-type-parameter</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>template-type-parameter</refname>
+ <refpurpose>Declares a template type parameter</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>template-type-parameter ::=
+ (<link linkend="api.grammar.default">default</link>?, <link linkend="api.grammar.purpose">purpose</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>pack</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to '1' if the parameter is a parameter pack.</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.description">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>description</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>description</refname>
+ <refpurpose>Detailed description of a construct</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>description ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>Although the context model for this element is
+ <code>ANY</code>, detailed descriptions should contain structured
+ DocBook elements that occur within sections, e.g., paragraphs
+ (<tag>para</tag>, <tag>simpara</tag>), lists
+ (<tag>orderedlist</tag>, <tag>itemizedlist</tag>),
+ tables (<tag>informaltable</tag>, <tag>table</tag>),
+ etc.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.librarylist">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>librarylist</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>librarylist</refname>
+ <refpurpose>Placeholder for an alphabetical list of libraries</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>librarylist ::=
+ EMPTY
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>Developers aren't generally expected to use this element. Its existence is mainly as a placeholder in <filename>boost.xml</filename> for the alphabetical list of libraries.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.library-reference">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>library-reference</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>library-reference</refname>
+ <refpurpose>Declares the reference material for a library</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>library-reference ::=
+ (title?, section*, (<link linkend="api.grammar.header">header</link>| <link linkend="api.grammar.library-reference">library-reference</link>)*)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>Reference documentation for a library is contained with a
+ <library-reference> element. The <library-reference>
+ element has no attributes, and contains as children only
+ <header> elements.</para>
+
+ <para>The <header> element defines a C++ header file. Within
+ each C++ header file lie the definitions of C++ constructs to be
+ documented. The <code>name</code> attribute of the <header>
+ element gives the name of the header, as one would specify when
+ including the header. For instance, the <library-reference>
+ for the <libraryname>Any</libraryname> library may look like
+ this:</para>
+
+ <programlisting><library-reference>
+ <header name="boost/any.hpp">
+ <!-- C++ constructs in this header -->
+ </header>
+</library-reference></programlisting>
+
+ <para>If the <libraryname>Any</libraryname> library contained
+ multiple headers, we would list them all as children of the
+ <library-reference> element.</para>
+
+ <para><tag>library-reference</tag> elements can be nested,
+ so that reference material can be divided into separate sections
+ that each contain different headers.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.api">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>api</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>api</refname>
+ <refpurpose>Defines a api book</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>api ::=
+ (title, (chapter| <link linkend="api.grammar.library">library</link>)*)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <simpara>This element is the topmost level defined by
+ <filename>boost.xml</filename> for all Boost documentation. It will
+ not generally be used by developers.</simpara>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.union">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>union</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>union</refname>
+ <refpurpose>Declares a C++ union or union template</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>union ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.inherit">inherit</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, (<link linkend="api.grammar.access">access</link>| <link linkend="api.grammar.static-constant">static-constant</link>| <link linkend="api.grammar.typedef">typedef</link>| <link linkend="api.grammar.enum">enum</link>| <link linkend="api.grammar.copy-assignment">copy-assignment</link>| <link linkend="api.grammar.constructor">constructor</link>| <link linkend="api.grammar.destructor">destructor</link>| <link linkend="api.grammar.method-group">method-group</link>| <link linkend="api.grammar.free-function-group">free-function-group</link>| <link linkend="api.grammar.function">function</link>| <link linkend="api.grammar.method">method</link>| <link linkend="api.grammar.overloaded-function">overloaded-function</link>| <link linkend="api.grammar.overloaded-method">overloaded-method</link>| <link linkend="api.grammar.data-member">data-member</link>| <link linkend="api.grammar.class">class</link>| <link linkend="api.grammar.class-specialization">class-specialization</link>| <link linkend="api.grammar.struct">struct</link>| <link linkend="api.grammar.struct-specialization">struct-specialization</link>| <link linkend="api.grammar.union">union</link>| <link linkend="api.grammar.union-specialization">union-specialization</link>)*)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.inherit">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>inherit</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>inherit</refname>
+ <refpurpose>Declares a base class of the enclosing class or struct</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>inherit ::=
+ (<link linkend="api.grammar.type">type</link>, <link linkend="api.grammar.purpose">purpose</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>This element contains the type of the class inherited.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>access</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The access specifier ("public", "private", or "protected") of the inheritance.</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>pack</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to '1' if this is a pack exapansion.</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.template-varargs">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>template-varargs</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>template-varargs</refname>
+ <refpurpose>Declares a variable-length list of template parameters</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>template-varargs ::=
+ EMPTY
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>Variable-length template parameter lists are not allowed in
+ C++, but because they are sometimes needed in documentation they are
+ allowed in api. This element generally expands to "..." and
+ can be used anywhere any other template parameter can be
+ used.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.source">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>source</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>source</refname>
+ <refpurpose>Defines source code for a test</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>source ::=
+ (#PCDATA| <link linkend="api.grammar.snippet">snippet</link>)*
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>This element will contain the source code for a testcase that
+ will be generated from the documentation. To reduce the amount of escaping in the text, it is recommended to use CDATA sections, which look like this:
+
+ <programlisting><![CDATA[
+<your program text here: no escaping needed!>
+]]></programlisting>
+ </para>
+
+ <para>In addition to CDATA sections, code snippets can be pulled in
+ from <tag>programlisting</tag> elements using the <link linkend="api.grammar.snippet"><tag>snippet</tag></link>
+ element.</para>
+</refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.function">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>function</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>function</refname>
+ <refpurpose>Declares a function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>function ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.type">type</link>, <link linkend="api.grammar.parameter">parameter</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, <link linkend="api.grammar.requires">requires</link>?, <link linkend="api.grammar.effects">effects</link>?, <link linkend="api.grammar.postconditions">postconditions</link>?, <link linkend="api.grammar.returns">returns</link>?, <link linkend="api.grammar.throws">throws</link>?, <link linkend="api.grammar.complexity">complexity</link>?, <link linkend="api.grammar.notes">notes</link>?, <link linkend="api.grammar.rationale">rationale</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>api functions are documented by specifying the
+ function's interface (e.g., its C++ signature) and its
+ behavior. Constructors, destructors, member functions, and free
+ functions all use the same documentation method, although the
+ top-level tags differ.</para>
+
+ <para>The behavior of functions in api is documenting using a
+ style similar to that of the C++ standard, with clauses describing
+ the requirements, effects, postconditions, exception behavior, and
+ return values of functions.</para>
+
+ <para>The following example illustrates some constructors and a
+ destructor for <classname>boost::any</classname>. Note that one of
+ the constructors takes a single parameter whose name is "other" and
+ whose type, <code>const any&</code> is contained in the
+ <paramtype> element; any number of parameters may be specified
+ in this way.</para>
+
+ <programlisting><class name="any">
+ <constructor>
+ <postconditions><para><this->empty()></para></postconditions>
+ </constructor>
+
+ <constructor>
+ <parameter name="other">
+ <paramtype>const <classname>any</classname>&amp;</paramtype>
+ </parameter>
+
+ <effects>
+ <simpara> Copy constructor that copies
+ content of <code>other</code> into the new instance,
+ so that any content is equivalent in both type and value to the
+ content of <code>other</code>, or empty if
+ <code>other</code> is
+ empty.
+ </simpara>
+ </effects>
+
+ <throws>
+ <simpara>May fail with a
+ <classname>std::bad_alloc</classname> exception or any
+ exceptions arising from the copy constructor of the
+ contained type.
+ </simpara>
+ </throws>
+ </constructor>
+
+ <destructor>
+ <effects><simpara>Releases any and all resources used in
+ management of instance.</simpara></effects>
+
+ <throws><simpara>Nothing.</simpara></throws>
+ </destructor>
+</class></programlisting>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>specifiers</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The specifiers for this function, e.g., inline, static, etc.</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.macroname">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>macroname</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>macroname</refname>
+ <refpurpose/>
+ </refnamediv>
+ <refsynopsisdiv>macroname ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>alt</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry/></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.postconditions">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>postconditions</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>postconditions</refname>
+ <refpurpose>Conditions that must hold after the function returns</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>postconditions ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.compile-test">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>compile-test</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>compile-test</refname>
+ <refpurpose>A testcase that should compile correctly</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>compile-test ::=
+ (<link linkend="api.grammar.source">source</link>*, <link linkend="api.grammar.lib">lib</link>*, <link linkend="api.grammar.requirement">requirement</link>*, <link linkend="api.grammar.purpose">purpose</link>, <link linkend="api.grammar.if-fails">if-fails</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>filename</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the file associated with this element</entry></row>
+<row><entry>name</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.method">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>method</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>method</refname>
+ <refpurpose>Declares a method, i.e., a member function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>method ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.type">type</link>, <link linkend="api.grammar.parameter">parameter</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, <link linkend="api.grammar.requires">requires</link>?, <link linkend="api.grammar.effects">effects</link>?, <link linkend="api.grammar.postconditions">postconditions</link>?, <link linkend="api.grammar.returns">returns</link>?, <link linkend="api.grammar.throws">throws</link>?, <link linkend="api.grammar.complexity">complexity</link>?, <link linkend="api.grammar.notes">notes</link>?, <link linkend="api.grammar.rationale">rationale</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>General documentation on functions in api is provided in
+ the <link linkend="api.grammar.function"><tag>function</tag></link>
+ element documentation.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>cv</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>cv-qualifiers for this method, e.g., const volatile</entry></row>
+<row><entry>specifiers</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The specifiers for this function, e.g., inline, static, etc.</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.snippet">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>snippet</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>snippet</refname>
+ <refpurpose>Pulls in a code snippet from a <tag>programlisting</tag> element</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>snippet ::=
+ EMPTY
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the <tag>programlisting</tag> element to insert</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.constructor">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>constructor</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>constructor</refname>
+ <refpurpose>Declares a constructor of the enclosing class</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>constructor ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.parameter">parameter</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, <link linkend="api.grammar.requires">requires</link>?, <link linkend="api.grammar.effects">effects</link>?, <link linkend="api.grammar.postconditions">postconditions</link>?, <link linkend="api.grammar.returns">returns</link>?, <link linkend="api.grammar.throws">throws</link>?, <link linkend="api.grammar.complexity">complexity</link>?, <link linkend="api.grammar.notes">notes</link>?, <link linkend="api.grammar.rationale">rationale</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>General documentation on functions in api is provided in
+ the <link linkend="api.grammar.function"><tag>function</tag></link>
+ element documentation.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>specifiers</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The specifiers for this function, e.g., inline, static, etc.</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.namespace">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>namespace</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>namespace</refname>
+ <refpurpose>Declares a namespace</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>namespace ::=
+ (<link linkend="api.grammar.class">class</link>| <link linkend="api.grammar.class-specialization">class-specialization</link>| <link linkend="api.grammar.struct">struct</link>| <link linkend="api.grammar.struct-specialization">struct-specialization</link>| <link linkend="api.grammar.union">union</link>| <link linkend="api.grammar.union-specialization">union-specialization</link>| <link linkend="api.grammar.typedef">typedef</link>| <link linkend="api.grammar.enum">enum</link>| <link linkend="api.grammar.free-function-group">free-function-group</link>| <link linkend="api.grammar.function">function</link>| <link linkend="api.grammar.overloaded-function">overloaded-function</link>| <link linkend="api.grammar.namespace">namespace</link>)*
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>api namespaces are declared via the <namespace>
+ element. As in C++, namespaces can be nested and contain other C++
+ constructs, such as classes or functions. The <code>name</code>
+ attribute of a <namespace> element gives the namespace name
+ (e.g., "boost"). The <libraryname>Any</libraryname> library is
+ defined entirely within namespace boost by:</para>
+
+ <programlisting><library-reference>
+ <header name="boost/any.hpp">
+ <namespace name="boost">
+ <!-- C++ constructs in the boost namespace -->
+ </namespace>
+ </header>
+</library-reference></programlisting>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.if-fails">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>if-fails</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>if-fails</refname>
+ <refpurpose>What it means when a testcase fails</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>if-fails ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>
+ Describes to the user the effect a certain failing testcase will
+ have on the usefulness of a library. This field is useful in cases
+ where a failed testcase does not mean that the library won't be
+ useful, but may mean that certain library features will not be
+ available.
+ </para>
+</refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.headername">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>headername</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>headername</refname>
+ <refpurpose/>
+ </refnamediv>
+ <refsynopsisdiv>headername ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>alt</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry/></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.free-function-group">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>free-function-group</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>free-function-group</refname>
+ <refpurpose>A set of functions that are grouped together under one name</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>free-function-group ::=
+ (<link linkend="api.grammar.function">function</link>| <link linkend="api.grammar.overloaded-function">overloaded-function</link>)*
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.functionname">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>functionname</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>functionname</refname>
+ <refpurpose>References a function with the given name</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>functionname ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>If a function (or overloaded function) with the given,
+ possibly-qualified name is found, this generates a link to that
+ function. Lookups obey currently-active <link linkend="api.grammar.using-class"><tag>using-class</tag></link>
+ and <link linkend="api.grammar.using-namespace"><tag>using-namespace</tag></link>
+ directives to aid in the search, along with searching within the
+ current scope.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>alt</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry/></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.librarycategory">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>librarycategory</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>librarycategory</refname>
+ <refpurpose>Declares that the enclosing library is in this category</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>librarycategory ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.notes">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>notes</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>notes</refname>
+ <refpurpose>Non-normative notes about a function's semantics</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>notes ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.data-member">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>data-member</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>data-member</refname>
+ <refpurpose>Declares a data member of a class</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>data-member ::=
+ (<link linkend="api.grammar.type">type</link>, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>specifiers</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The specifiers for this function, e.g., inline, static, etc.</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.specialization">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>specialization</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>specialization</refname>
+ <refpurpose>Defines the specialization arguments for a class specialization</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>specialization ::=
+ (<link linkend="api.grammar.template-arg">template-arg</link>)*
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.union-specialization">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>union-specialization</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>union-specialization</refname>
+ <refpurpose>A specialization (full or partial) of a union template</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>union-specialization ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.specialization">specialization</link>?, <link linkend="api.grammar.inherit">inherit</link>?, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, (<link linkend="api.grammar.access">access</link>| <link linkend="api.grammar.static-constant">static-constant</link>| <link linkend="api.grammar.typedef">typedef</link>| <link linkend="api.grammar.enum">enum</link>| <link linkend="api.grammar.copy-assignment">copy-assignment</link>| <link linkend="api.grammar.constructor">constructor</link>| <link linkend="api.grammar.destructor">destructor</link>| <link linkend="api.grammar.method-group">method-group</link>| <link linkend="api.grammar.free-function-group">free-function-group</link>| <link linkend="api.grammar.function">function</link>| <link linkend="api.grammar.method">method</link>| <link linkend="api.grammar.overloaded-function">overloaded-function</link>| <link linkend="api.grammar.overloaded-method">overloaded-method</link>| <link linkend="api.grammar.data-member">data-member</link>| <link linkend="api.grammar.class">class</link>| <link linkend="api.grammar.class-specialization">class-specialization</link>| <link linkend="api.grammar.struct">struct</link>| <link linkend="api.grammar.struct-specialization">struct-specialization</link>| <link linkend="api.grammar.union">union</link>| <link linkend="api.grammar.union-specialization">union-specialization</link>)*)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.throws">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>throws</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>throws</refname>
+ <refpurpose>Description of the exceptions thrown by a function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>throws ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.template-arg">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>template-arg</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>template-arg</refname>
+ <refpurpose>A template argument in a specialization</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>template-arg ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>pack</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to '1' if this is a pack exapansion.</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.globalname">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>globalname</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>globalname</refname>
+ <refpurpose/>
+ </refnamediv>
+ <refsynopsisdiv>globalname ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>alt</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry/></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.method-group">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>method-group</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>method-group</refname>
+ <refpurpose>A set of methods that are grouped together under one name</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>method-group ::=
+ (<link linkend="api.grammar.method">method</link>| <link linkend="api.grammar.overloaded-method">overloaded-method</link>)*
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.requirement">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>requirement</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>requirement</refname>
+ <refpurpose>A requirement/property in the Jamfile for a testcase</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>requirement ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>A requirement is part of the dependencies of a target in a
+ Jamfile. The <code>name</code> attribute of a requirement element
+ gives the name of the Boost.Build feature and the content of the
+ requirement gives the value of that feature. A requirement such as
+ <code><includes>foo.hpp</code> would be encoded as
+ <code><requirement
+ name="includes">foo.hpp</requirement></code>.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.precondition">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>precondition</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>precondition</refname>
+ <refpurpose>Conditions that must be met prior to executing a function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>precondition ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.paramtype">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>paramtype</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>paramtype</refname>
+ <refpurpose>The type of a function parameter</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>paramtype ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.using-class">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>using-class</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>using-class</refname>
+ <refpurpose>Injects the method and function names of a class into the local scope</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>using-class ::=
+ EMPTY
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.run-test">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>run-test</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>run-test</refname>
+ <refpurpose>A testcase that should compile, link, and execute</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>run-test ::=
+ (<link linkend="api.grammar.source">source</link>*, <link linkend="api.grammar.lib">lib</link>*, <link linkend="api.grammar.requirement">requirement</link>*, <link linkend="api.grammar.purpose">purpose</link>, <link linkend="api.grammar.if-fails">if-fails</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>filename</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the file associated with this element</entry></row>
+<row><entry>name</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.librarypurpose">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>librarypurpose</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>librarypurpose</refname>
+ <refpurpose>Describes in one short sentence or phrase the purpose of a library</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>librarypurpose ::=
+ (#PCDATA| <link linkend="api.grammar.code">code</link>| ulink| <link linkend="api.grammar.functionname">functionname</link>| methodname| classname| <link linkend="api.grammar.macroname">macroname</link>| <link linkend="api.grammar.headername">headername</link>| <link linkend="api.grammar.enumname">enumname</link>| <link linkend="api.grammar.globalname">globalname</link>)*
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.copy-assignment">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>copy-assignment</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>copy-assignment</refname>
+ <refpurpose>Declares a copy-assignment operator</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>copy-assignment ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.type">type</link>?, <link linkend="api.grammar.parameter">parameter</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, <link linkend="api.grammar.requires">requires</link>?, <link linkend="api.grammar.effects">effects</link>?, <link linkend="api.grammar.postconditions">postconditions</link>?, <link linkend="api.grammar.returns">returns</link>?, <link linkend="api.grammar.throws">throws</link>?, <link linkend="api.grammar.complexity">complexity</link>?, <link linkend="api.grammar.notes">notes</link>?, <link linkend="api.grammar.rationale">rationale</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>The return type of the copy-assignment operator does not need
+ to be specified. If left unspecified, it will default to an
+ unqualified reference to the enclosing class type.</para>
+
+ <para>General documentation on functions in api is provided in
+ the <link linkend="api.grammar.function"><tag>function</tag></link>
+ element documentation.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>cv</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>cv-qualifiers for this method, e.g., const volatile</entry></row>
+<row><entry>specifiers</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The specifiers for this function, e.g., inline, static, etc.</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.run-fail-test">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>run-fail-test</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>run-fail-test</refname>
+ <refpurpose>A testcase that should compile and link, but fail on execution</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>run-fail-test ::=
+ (<link linkend="api.grammar.source">source</link>*, <link linkend="api.grammar.lib">lib</link>*, <link linkend="api.grammar.requirement">requirement</link>*, <link linkend="api.grammar.purpose">purpose</link>, <link linkend="api.grammar.if-fails">if-fails</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>filename</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the file associated with this element</entry></row>
+<row><entry>name</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.template">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>template</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>template</refname>
+ <refpurpose>Declares the template parameters of a class or function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>template ::=
+ (<link linkend="api.grammar.template-type-parameter">template-type-parameter</link>| <link linkend="api.grammar.template-nontype-parameter">template-nontype-parameter</link>| <link linkend="api.grammar.template-varargs">template-varargs</link>)*
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.compile-fail-test">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>compile-fail-test</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>compile-fail-test</refname>
+ <refpurpose>A testcase that should fail to compile</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>compile-fail-test ::=
+ (<link linkend="api.grammar.source">source</link>*, <link linkend="api.grammar.lib">lib</link>*, <link linkend="api.grammar.requirement">requirement</link>*, <link linkend="api.grammar.purpose">purpose</link>, <link linkend="api.grammar.if-fails">if-fails</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>filename</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the file associated with this element</entry></row>
+<row><entry>name</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.returns">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>returns</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>returns</refname>
+ <refpurpose>Description of the return value of a function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>returns ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.default">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>default</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>default</refname>
+ <refpurpose>The default value of a function or template parameter</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>default ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.parameter">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>parameter</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>parameter</refname>
+ <refpurpose>A function parameter</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>parameter ::=
+ (<link linkend="api.grammar.paramtype">paramtype</link>, <link linkend="api.grammar.default">default</link>?, <link linkend="api.grammar.description">description</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>name</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>pack</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to '1' if the parameter is a parameter pack.</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.signature">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>signature</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>signature</refname>
+ <refpurpose>One signature of an overloaded function or method</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>signature ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.type">type</link>, <link linkend="api.grammar.parameter">parameter</link>*)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>
+ A signature refers to one declaration of an overloaded function or
+ method. The signature itself has no name, because the name of the
+ overloaded function or method is used. An overloaded function or
+ method will have several signatures that will generally be typeset
+ together.
+ </para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>cv</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>cv-qualifiers for this method, e.g., const volatile</entry></row>
+<row><entry>specifiers</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The specifiers for this function, e.g., inline, static, etc.</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.overloaded-function">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>overloaded-function</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>overloaded-function</refname>
+ <refpurpose>An overloaded function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>overloaded-function ::=
+ (<link linkend="api.grammar.signature">signature</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, <link linkend="api.grammar.requires">requires</link>?, <link linkend="api.grammar.effects">effects</link>?, <link linkend="api.grammar.postconditions">postconditions</link>?, <link linkend="api.grammar.returns">returns</link>?, <link linkend="api.grammar.throws">throws</link>?, <link linkend="api.grammar.complexity">complexity</link>?, <link linkend="api.grammar.notes">notes</link>?, <link linkend="api.grammar.rationale">rationale</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>General documentation on functions in api is provided in
+ the <link linkend="api.grammar.function"><tag>function</tag></link>
+ element documentation.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.access">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>access</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>access</refname>
+ <refpurpose>Declares an access specification for class members</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>access ::=
+ (<link linkend="api.grammar.static-constant">static-constant</link>| <link linkend="api.grammar.typedef">typedef</link>| <link linkend="api.grammar.enum">enum</link>| <link linkend="api.grammar.copy-assignment">copy-assignment</link>| <link linkend="api.grammar.constructor">constructor</link>| <link linkend="api.grammar.destructor">destructor</link>| <link linkend="api.grammar.method-group">method-group</link>| <link linkend="api.grammar.method">method</link>| <link linkend="api.grammar.overloaded-method">overloaded-method</link>| <link linkend="api.grammar.data-member">data-member</link>| <link linkend="api.grammar.class">class</link>| <link linkend="api.grammar.class-specialization">class-specialization</link>| <link linkend="api.grammar.struct">struct</link>| <link linkend="api.grammar.struct-specialization">struct-specialization</link>| <link linkend="api.grammar.union">union</link>| <link linkend="api.grammar.union-specialization">union-specialization</link>)+
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>The access specifications of class members (public, private, or protected) may be determined by enclosing them in an <access> element.</para>
+ </refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the access specification, e.g. "public", "private", or "protected".</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.class">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>class</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>class</refname>
+ <refpurpose>Declares a class or class template</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>class ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.inherit">inherit</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, (<link linkend="api.grammar.access">access</link>| <link linkend="api.grammar.static-constant">static-constant</link>| <link linkend="api.grammar.typedef">typedef</link>| <link linkend="api.grammar.enum">enum</link>| <link linkend="api.grammar.copy-assignment">copy-assignment</link>| <link linkend="api.grammar.constructor">constructor</link>| <link linkend="api.grammar.destructor">destructor</link>| <link linkend="api.grammar.method-group">method-group</link>| <link linkend="api.grammar.free-function-group">free-function-group</link>| <link linkend="api.grammar.function">function</link>| <link linkend="api.grammar.method">method</link>| <link linkend="api.grammar.overloaded-function">overloaded-function</link>| <link linkend="api.grammar.overloaded-method">overloaded-method</link>| <link linkend="api.grammar.data-member">data-member</link>| <link linkend="api.grammar.class">class</link>| <link linkend="api.grammar.class-specialization">class-specialization</link>| <link linkend="api.grammar.struct">struct</link>| <link linkend="api.grammar.struct-specialization">struct-specialization</link>| <link linkend="api.grammar.union">union</link>| <link linkend="api.grammar.union-specialization">union-specialization</link>)*)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>C++ classes and class templates are described via the
+ <class> element. Each class has a name (e.g., "any") given by
+ the <code>name</code> attribute, a purpose given by the
+ <purpose> element, documentation, and a set of types,
+ functions, base classes, and data members. Here is a minimal
+ definition of the <classname>boost::any</classname> class:</para>
+
+ <programlisting><namespace name="boost">
+ <class name="any">
+ <purpose>
+ A class whose instances can hold instances of any type that satisfies
+ ValueType requirements.
+ </purpose>
+ </class>
+</namespace></programlisting>
+
+ <para>Additional class documentation can be contained in a
+ <tag>description</tag> element following the <purpose>
+ element. This documentation will be typeset prior to documentation
+ for specific elements in the class (e.g., constructors or
+ methods).</para>
+
+ <para>Class inheritance is described via the <inherit>
+ element. The <inherit> element requires an <code>access</code>
+ attribute which must be one of <emphasis>public</emphasis>,
+ <emphasis>protected</emphasis>, or <emphasis>private</emphasis>. The
+ content of the <inherited> element in C++ code that names the
+ class inherited, and may contain markup to link to the class. The
+ following description of the class
+ <classname>boost::bad_any_cast</classname> describes public
+ inheritance from the class <classname>std::bad_cast</classname>. It
+ also defines the <purpose> element, which contains a short
+ description of the use of the class.</para>
+
+ <programlisting><class name="bad_any_cast">
+ <inherit access="public"><classname>std::bad_cast</classname></inherit>
+ <purpose><para>The exception thrown in the event of a failed
+ <functionname>any_cast</functionname> of an
+ <classname>any</classname> value.</para></purpose>
+</class></programlisting>
+
+ <para>Class templates are defined by <class> elements with a
+ <template> child element at the beginning.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.librarycategorydef">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>librarycategorydef</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>librarycategorydef</refname>
+ <refpurpose>Defines a new library category</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>librarycategorydef ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>All library category definitions should be in <filename>doc/src/boost.xml</filename>, and the names of categories must be prefixed with "<code>category:</code>".</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.type">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>type</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>type</refname>
+ <refpurpose>The type of an element or return type of a function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>type ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.enumvalue">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>enumvalue</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>enumvalue</refname>
+ <refpurpose>A single value of an enumeration</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>enumvalue ::=
+ (<link linkend="api.grammar.default">default</link>?, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.overloaded-method">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>overloaded-method</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>overloaded-method</refname>
+ <refpurpose>An overloaded method</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>overloaded-method ::=
+ (<link linkend="api.grammar.signature">signature</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, <link linkend="api.grammar.requires">requires</link>?, <link linkend="api.grammar.effects">effects</link>?, <link linkend="api.grammar.postconditions">postconditions</link>?, <link linkend="api.grammar.returns">returns</link>?, <link linkend="api.grammar.throws">throws</link>?, <link linkend="api.grammar.complexity">complexity</link>?, <link linkend="api.grammar.notes">notes</link>?, <link linkend="api.grammar.rationale">rationale</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>General documentation on functions in api is provided in
+ the <link linkend="api.grammar.function"><tag>function</tag></link>
+ element documentation.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.programlisting">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>programlisting</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>programlisting</refname>
+ <refpurpose>A sample of program code</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>programlisting ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>name</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.complexity">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>complexity</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>complexity</refname>
+ <refpurpose>The time/space/etc. complexity of a function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>complexity ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.purpose">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>purpose</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>purpose</refname>
+ <refpurpose>A short description of an entity's use</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>purpose ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.template-nontype-parameter">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>template-nontype-parameter</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>template-nontype-parameter</refname>
+ <refpurpose>A nontype template parameter</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>template-nontype-parameter ::=
+ (<link linkend="api.grammar.type">type</link>, <link linkend="api.grammar.default">default</link>?, <link linkend="api.grammar.purpose">purpose</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>pack</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to '1' if the parameter is a parameter pack.</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.library">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>library</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>library</refname>
+ <refpurpose>Top-level element for a library</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>library ::=
+ (<link linkend="api.grammar.libraryinfo">libraryinfo</link>, (title, ((section| <link linkend="api.grammar.library-reference">library-reference</link>| <link linkend="api.grammar.testsuite">testsuite</link>))+)?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>dirname</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry/></row>
+<row><entry>url</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry/></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+<row><entry>html-only</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry/></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.librarycategorylist">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>librarycategorylist</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>librarycategorylist</refname>
+ <refpurpose>Categorized listing of libraries</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>librarycategorylist ::=
+ (<link linkend="api.grammar.librarycategorydef">librarycategorydef</link>)*
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>This element is not intended for use by developers, but is
+ used by <filename>doc/src/boost.xml</filename> as a
+ placeholder.</para>
+</refsection>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.using-namespace">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>using-namespace</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>using-namespace</refname>
+ <refpurpose>Injects the declared names from a namespace into the local scope</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>using-namespace ::=
+ EMPTY
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.enumname">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>enumname</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>enumname</refname>
+ <refpurpose/>
+ </refnamediv>
+ <refsynopsisdiv>enumname ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>alt</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry/></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.struct-specialization">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>struct-specialization</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>struct-specialization</refname>
+ <refpurpose>A specialization (full or partial) of a struct template</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>struct-specialization ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.specialization">specialization</link>?, <link linkend="api.grammar.inherit">inherit</link>?, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, (<link linkend="api.grammar.access">access</link>| <link linkend="api.grammar.static-constant">static-constant</link>| <link linkend="api.grammar.typedef">typedef</link>| <link linkend="api.grammar.enum">enum</link>| <link linkend="api.grammar.copy-assignment">copy-assignment</link>| <link linkend="api.grammar.constructor">constructor</link>| <link linkend="api.grammar.destructor">destructor</link>| <link linkend="api.grammar.method-group">method-group</link>| <link linkend="api.grammar.free-function-group">free-function-group</link>| <link linkend="api.grammar.function">function</link>| <link linkend="api.grammar.method">method</link>| <link linkend="api.grammar.overloaded-function">overloaded-function</link>| <link linkend="api.grammar.overloaded-method">overloaded-method</link>| <link linkend="api.grammar.data-member">data-member</link>| <link linkend="api.grammar.class">class</link>| <link linkend="api.grammar.class-specialization">class-specialization</link>| <link linkend="api.grammar.struct">struct</link>| <link linkend="api.grammar.struct-specialization">struct-specialization</link>| <link linkend="api.grammar.union">union</link>| <link linkend="api.grammar.union-specialization">union-specialization</link>)*)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.struct">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>struct</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>struct</refname>
+ <refpurpose>Declares a C++ struct</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>struct ::=
+ (<link linkend="api.grammar.template">template</link>?, <link linkend="api.grammar.inherit">inherit</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?, (<link linkend="api.grammar.access">access</link>| <link linkend="api.grammar.static-constant">static-constant</link>| <link linkend="api.grammar.typedef">typedef</link>| <link linkend="api.grammar.enum">enum</link>| <link linkend="api.grammar.copy-assignment">copy-assignment</link>| <link linkend="api.grammar.constructor">constructor</link>| <link linkend="api.grammar.destructor">destructor</link>| <link linkend="api.grammar.method-group">method-group</link>| <link linkend="api.grammar.free-function-group">free-function-group</link>| <link linkend="api.grammar.function">function</link>| <link linkend="api.grammar.method">method</link>| <link linkend="api.grammar.overloaded-function">overloaded-function</link>| <link linkend="api.grammar.overloaded-method">overloaded-method</link>| <link linkend="api.grammar.data-member">data-member</link>| <link linkend="api.grammar.class">class</link>| <link linkend="api.grammar.class-specialization">class-specialization</link>| <link linkend="api.grammar.struct">struct</link>| <link linkend="api.grammar.struct-specialization">struct-specialization</link>| <link linkend="api.grammar.union">union</link>| <link linkend="api.grammar.union-specialization">union-specialization</link>)*)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.lib">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>lib</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>lib</refname>
+ <refpurpose>A library dependency</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>lib ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Description</title></info>
+ <para>Declares a library dependency on the library named by the content of this element, to be emitted in a Jamfile.</para>
+</refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.enum">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>enum</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>enum</refname>
+ <refpurpose>Declares an enumeration type</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>enum ::=
+ (<link linkend="api.grammar.enumvalue">enumvalue</link>*, <link linkend="api.grammar.purpose">purpose</link>?, <link linkend="api.grammar.description">description</link>?)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.requires">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>requires</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>requires</refname>
+ <refpurpose>Declares the requirements of a function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>requires ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.effects">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>effects</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>effects</refname>
+ <refpurpose>Declares the side effects of a function</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>effects ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.libraryname">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>libraryname</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>libraryname</refname>
+ <refpurpose>References a library of the given name</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>libraryname ::=
+ (#PCDATA)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.libraryinfo">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>libraryinfo</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>libraryinfo</refname>
+ <refpurpose>Provides information about a library</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>libraryinfo ::=
+ (author+, copyright*, legalnotice*, <link linkend="api.grammar.librarypurpose">librarypurpose</link>, <link linkend="api.grammar.librarycategory">librarycategory</link>*)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.testsuite">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>testsuite</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>testsuite</refname>
+ <refpurpose>Describes a library testsuite</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>testsuite ::=
+ ((<link linkend="api.grammar.compile-test">compile-test</link>| <link linkend="api.grammar.link-test">link-test</link>| <link linkend="api.grammar.run-test">run-test</link>| <link linkend="api.grammar.compile-fail-test">compile-fail-test</link>| <link linkend="api.grammar.link-fail-test">link-fail-test</link>| <link linkend="api.grammar.run-fail-test">run-fail-test</link>)+)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.header">
+ <refmeta>
+ <refentrytitle>
+ DocBook API Element <tag>header</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>header</refname>
+ <refpurpose>Declares a C++ header with the given name</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>header ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>name</entry><entry>#REQUIRED</entry><entry>CDATA</entry><entry>The name of the element being declared to referenced</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+ <refentry xml:id="api.grammar.rationale">
+ <refmeta>
+ <refentrytitle>
+ DocBook API element <tag>rationale</tag></refentrytitle>
+ <manvolnum>9</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>rationale</refname>
+ <refpurpose>Describes the rationale for a particular function's design</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv>rationale ::=
+ (ANY)
+</refsynopsisdiv>
+ <refsection><info><title>Attributes</title></info>
+
+ <informaltable>
+ <tgroup cols="4">
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Type</entry>
+ <entry>Value</entry>
+ <entry>Purpose</entry>
+ </row>
+ </thead>
+ <tbody>
+
+<row><entry>last-revision</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Set to $Date: 2009-10-10 14:01:30 +0100 (Sat, 10 Oct 2009) $ to keep "last revised" information in sync with CVS changes</entry></row>
+<row><entry>id</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>A global identifier for this element</entry></row>
+<row><entry>xml:base</entry><entry>#IMPLIED</entry><entry>CDATA</entry><entry>Implementation detail used by XIncludes</entry></row>
+</tbody>
+ </tgroup>
+ </informaltable>
+ </refsection>
+ </refentry>
+</article>
default namespace = "http://docbook.org/ns/docbook"
# ========== Import DocBook Grammar ==========
-include "http://docbook.org/xml/5.0/rng/docbook.rnc"
-start |= header | library | boostbook | precondition
+include "../../../../../../../../docbook.rnc"
+start |= header | library | api | precondition
local.common.attrib = attribute last-revision { text }?
# ========== Define the API extensions ==========
-api.common.attrib = local.common.attrib, db.xml.id.attribute?
+api.common.attrib = local.common.attrib, db.common.attributes
api.namespace.mix =
class
| class-specialization
attribute html-only { text }?,
attribute url { text }?,
api.common.attrib
-boostbook =
- element boostbook { api.attlist, db.title, (db.chapter | library)* }
+api =
+ element api { api.attlist, db.title, (db.chapter | library)* }
api.attlist &= api.common.attrib
libraryinfo =
element libraryinfo {
libraryinfo.attlist,
- db.author+,
+ db.author+,
db.copyright*,
db.legalnotice*,
librarypurpose,
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+<xsl:stylesheet exclude-result-prefixes="d"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
- xmlns:exsl="http://exslt.org/common"
- exclude-result-prefixes="exsl d"
- version="1.0">
+version="1.0">
-<xsl:import href="http://docbook.sourceforge.net/release/xsl-ns/current/html/admon.xsl"/>
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/admon.xsl"/>
<!-- Already included in the main style sheet -->
<!-- <xsl:import href="relative-href.xsl"/> -->
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:variable name="uppercase-letters" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
- <xsl:variable name="lowercase-letters" select="'abcdefghijklmnopqrstuvwxyz'"/>
-
- <xsl:key name="classes" match="class|struct|union|typedef" use="@name"/>
- <xsl:key name="methods" match="method|overloaded-method" use="@name"/>
- <xsl:key name="functions" match="function|overloaded-function" use="@name"/>
- <xsl:key name="enums" match="enum" use="@name"/>
- <xsl:key name="concepts" match="concept" use="@name"/>
- <xsl:key name="libraries" match="library" use="@name"/>
- <xsl:key name="macros" match="macro" use="@name"/>
- <xsl:key name="headers" match="header" use="@name"/>
- <xsl:key name="globals" match="namespace/data-member|header/data-member" use="@name"/>
- <xsl:key name="named-entities" match="class|struct|union|concept|function|overloaded-function|macro|library|namespace/data-member|header/data-member|*[attribute::id]" use="translate(@name|@id, $uppercase-letters, $lowercase-letters)"/>
-
- <xsl:template match="function|overloaded-function" mode="generate.id">
- <xsl:call-template name="fully-qualified-id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="classname" mode="annotation">
- <!-- Determine the (possibly qualified) class name we are looking for -->
- <xsl:variable name="fullname">
- <xsl:choose>
- <xsl:when test="@alt">
- <xsl:value-of select="@alt"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string(.)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Strip off any instantiation -->
- <xsl:variable name="name">
- <xsl:choose>
- <xsl:when test="contains($fullname, '<')">
- <xsl:value-of select="substring-before($fullname, '<')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$fullname"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Determine the unqualified name -->
- <xsl:variable name="unqualified-name">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="cxx-link-name">
- <xsl:with-param name="lookup" select="."/>
- <xsl:with-param name="type" select="'class'"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="display-name" select="string(.)"/>
- <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
- <xsl:with-param name="nodes" select="key('classes', $unqualified-name)"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="globalname" mode="annotation">
- <!-- Determine the (possibly qualified) global name we are looking for -->
- <xsl:variable name="name">
- <xsl:choose>
- <xsl:when test="@alt">
- <xsl:value-of select="@alt"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string(.)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Determine the unqualified name -->
- <xsl:variable name="unqualified-name">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="cxx-link-name">
- <xsl:with-param name="lookup" select="."/>
- <xsl:with-param name="type" select="'data-member'"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="display-name" select="string(.)"/>
- <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
- <xsl:with-param name="nodes" select="key('globals', $unqualified-name)"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="methodname" mode="annotation">
- <!-- Determine the (possibly qualified) method name we are looking for -->
- <xsl:variable name="fullname">
- <xsl:choose>
- <xsl:when test="@alt">
- <xsl:value-of select="@alt"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string(.)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Strip off any call -->
- <xsl:variable name="name">
- <xsl:choose>
- <xsl:when test="contains($fullname, '(')">
- <xsl:value-of select="substring-before($fullname, '(')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$fullname"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Determine the unqualified name -->
- <xsl:variable name="unqualified-name">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="cxx-link-name">
- <xsl:with-param name="lookup" select="."/>
- <xsl:with-param name="type" select="'method'"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="display-name" select="string(.)"/>
- <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
- <xsl:with-param name="nodes" select="key('methods', $unqualified-name)"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="functionname" mode="annotation">
- <!-- Determine the (possibly qualified) function name we are
- looking for -->
- <xsl:variable name="fullname">
- <xsl:choose>
- <xsl:when test="@alt">
- <xsl:value-of select="@alt"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string(.)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Strip off any call -->
- <xsl:variable name="name">
- <xsl:choose>
- <xsl:when test="contains($fullname, '(')">
- <xsl:value-of select="substring-before($fullname, '(')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$fullname"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Determine the unqualified name -->
- <xsl:variable name="unqualified-name">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="cxx-link-name">
- <xsl:with-param name="lookup" select="."/>
- <xsl:with-param name="type" select="'function'"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="display-name" select="string(.)"/>
- <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
- <xsl:with-param name="nodes"
- select="key('functions', $unqualified-name)"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="enumname" mode="annotation">
- <!-- Determine the (possibly qualified) enum name we are
- looking for -->
- <xsl:variable name="fullname">
- <xsl:choose>
- <xsl:when test="@alt">
- <xsl:value-of select="@alt"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string(.)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Strip off any call -->
- <xsl:variable name="name">
- <xsl:choose>
- <xsl:when test="contains($fullname, '(')">
- <xsl:value-of select="substring-before($fullname, '(')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$fullname"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Determine the unqualified name -->
- <xsl:variable name="unqualified-name">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:call-template name="cxx-link-name">
- <xsl:with-param name="lookup" select="."/>
- <xsl:with-param name="type" select="'enum'"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="display-name" select="string(.)"/>
- <xsl:with-param name="unqualified-name" select="$unqualified-name"/>
- <xsl:with-param name="nodes"
- select="key('enums', $unqualified-name)"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="libraryname" mode="annotation">
- <xsl:variable name="name">
- <xsl:choose>
- <xsl:when test="@alt">
- <xsl:value-of select="@alt"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="text()"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="node" select="key('libraries', $name)"/>
-
- <xsl:choose>
- <xsl:when test="count($node)=0">
- <xsl:message>
- <xsl:text>warning: Cannot find library '</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>'</xsl:text>
- </xsl:message>
- <xsl:value-of select="$name"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="library.link">
- <xsl:with-param name="node" select="$node"/>
- <xsl:with-param name="name" select="text()"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="conceptname" mode="annotation">
- <xsl:param name="name" select="text()"/>
-
- <xsl:call-template name="concept.link">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="macroname" mode="annotation">
- <xsl:param name="name">
- <xsl:choose>
- <xsl:when test="@alt">
- <xsl:value-of select="@alt"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string(.)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
-
- <xsl:variable name="node" select="key('macros', $name)"/>
- <xsl:choose>
- <xsl:when test="count($node) = 0">
- <xsl:message>
- <xsl:text>warning: cannot find macro `</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>'</xsl:text>
- </xsl:message>
- <xsl:value-of select="$name"/>
- </xsl:when>
-
- <xsl:when test="count($node) = 1">
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text" select="string(.)"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:message>
- <xsl:text>error: macro `</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>' is multiply defined.</xsl:text>
- </xsl:message>
- <xsl:value-of select="$node"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="headername" mode="annotation">
- <xsl:variable name="name">
- <xsl:choose>
- <xsl:when test="@alt">
- <xsl:value-of select="@alt"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string(.)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="node" select="key('headers', $name)"/>
- <xsl:choose>
- <xsl:when test="count($node) = 0">
- <xsl:message>
- <xsl:text>warning: cannot find header `</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>'</xsl:text>
- </xsl:message>
- <xsl:value-of select="$name"/>
- </xsl:when>
-
- <xsl:when test="count($node) = 1">
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text" select="string(.)"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:message>
- <xsl:text>error: header `</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>' is multiply defined.</xsl:text>
- </xsl:message>
- <xsl:value-of select="$node"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="text()" mode="annotation">
- <xsl:param name="highlight" select="false()"/>
- <xsl:choose>
- <xsl:when test="$highlight">
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="."/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="code" mode="annotation">
- <computeroutput>
- <xsl:apply-templates mode="annotation"/>
- </computeroutput>
- </xsl:template>
-
- <xsl:template match="bold" mode="annotation">
- <emphasis role="bold">
- <xsl:apply-templates mode="annotation"/>
- </emphasis>
- </xsl:template>
-
- <xsl:template match="description" mode="annotation">
- <xsl:apply-templates mode="annotation"/>
- </xsl:template>
-
- <xsl:template match="comment()" mode="annotation">
- <xsl:copy/>
- </xsl:template>
-
- <xsl:template match="node()" mode="annotation">
- <xsl:param name="highlight" select="false()"/>
-
- <xsl:element name="{name(.)}">
- <xsl:for-each select="./@*">
- <xsl:attribute name="{name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:for-each>
- <xsl:apply-templates select="./*|./text()" mode="annotation">
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:apply-templates>
- </xsl:element>
- </xsl:template>
-
- <!-- The "purpose" mode strips simpara/para elements so that we can
- place the resulting text into a comment in the synopsis. -->
- <xsl:template match="para|simpara" mode="purpose">
- <xsl:apply-templates mode="annotation"/>
- </xsl:template>
-
- <xsl:template match="*" mode="purpose">
- <xsl:apply-templates select="." mode="annotation"/>
- </xsl:template>
-
- <xsl:template match="text()" mode="purpose">
- <xsl:apply-templates select="." mode="annotation"/>
- </xsl:template>
-</xsl:stylesheet>
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+<xsl:stylesheet exclude-result-prefixes="d"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
- xmlns:exsl="http://exslt.org/common"
- exclude-result-prefixes="exsl d"
- version="1.0">
+version="1.0">
-<xsl:import href="http://docbook.sourceforge.net/release/xsl-ns/current/html/callout.xsl"/>
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/callout.xsl"/>
<!-- Already included in the main style sheet -->
<!-- <xsl:import href="relative-href.xsl"/> -->
+++ /dev/null
-Software License, Version 1.0
-
-Copyright 2002-2003, Trustees of Indiana University.
-Copyright 2000-2001, University of Notre Dame.
-All rights reserved.
-
-Indiana University has the exclusive rights to license this product under the
-following license.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * All redistributions of source code must retain the above copyright notice,
- the list of authors in the original source code, this list of conditions
- and the disclaimer listed in this license;
-
- * All redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the disclaimer listed in this license
- in the documentation and/or other materials provided with the distribution;
-
- * Any documentation included with all redistributions must include the
- following acknowledgement:
-
- "This product includes software developed at the University of Notre Dame
- and the Pervasive Technology Labs at Indiana University. For technical
- information contact Andrew Lumsdaine at the Pervasive Technology Labs at
- Indiana University. For administrative and license questions contact the
- Advanced Research and Technology Institute at 351 West 10th Street.
- Indianapolis, Indiana 46202, phone 317-278-4100, fax 317-274-5902."
-
- Alternatively, this acknowledgement may appear in the software itself, and
- wherever such third-party acknowledgments normally appear.
-
- * The name Indiana University, the University of Notre Dame or "Caramel"
- shall not be used to endorse or promote products derived from this software
- without prior written permission from Indiana University. For written
- permission, please contact Indiana University Advanced Research &
- Technology Institute.
-
- * Products derived from this software may not be called "Caramel", nor may
- Indiana University, the University of Notre Dame or "Caramel" appear in
- their name, without prior written permission of Indiana University Advanced
- Research & Technology Institute.
-
-Indiana University provides no reassurances that the source code provided does
-not infringe the patent or any other intellectual property rights of any other
-entity. Indiana University disclaims any liability to any recipient for claims
-brought by any other entity based on infringement of intellectual property
-rights or otherwise.
-
-LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH NO WARRANTIES
-AS TO CAPABILITIES OR ACCURACY ARE MADE. INDIANA UNIVERSITY GIVES NO WARRANTIES
-AND MAKES NO REPRESENTATION THAT SOFTWARE IS FREE OF INFRINGEMENT OF THIRD
-PARTY PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS. INDIANA UNIVERSITY MAKES
-NO WARRANTIES THAT SOFTWARE IS FREE FROM "BUGS", "VIRUSES", "TROJAN HORSES",
-"TRAP DOORS", "WORMS", OR OTHER HARMFUL CODE. LICENSEE ASSUMES THE ENTIRE RISK
-AS TO THE PERFORMANCE OF SOFTWARE AND/OR ASSOCIATED MATERIALS, AND TO THE
-PERFORMANCE AND VALIDITY OF INFORMATION GENERATED USING SOFTWARE.
+++ /dev/null
-<?xml version="1.0" ?>
-
-<!--
-Copyright (c) 2002-2003 The Trustees of Indiana University.
- All rights reserved.
-Copyright (c) 2000-2001 University of Notre Dame. All rights reserved.
-
- 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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:strip-space elements="* xsl:*"/>
-
- <xsl:include href="unparser.xsl"/>
-
- <xsl:key name="concepts" match="concept" use="@name"/>
-
- <!-- The layout type to use for concept descriptions. Can be one of:
- sgi: simulate the SGI STL documentation
- austern: simulate the documentation in Generic Programming and the STL,
- by Matthew H. Austern
- caramel: simulate the formatting from Caramel
- -->
- <xsl:param name="boost.concept.layout" select="'austern'"/>
-
- <xsl:template match="concept">
- <refentry>
- <xsl:attribute name="id">
- <xsl:call-template name="generate.id"/>
- </xsl:attribute>
-
- <refmeta>
- <refentrytitle>Concept <xsl:value-of select="@name"/></refentrytitle>
- <manvolnum>7</manvolnum>
- </refmeta>
-
- <refnamediv>
- <refname><xsl:value-of select="@name"/></refname>
- <xsl:if test="purpose">
- <refpurpose>
- <xsl:apply-templates select="purpose/*|purpose/text()"/>
- </refpurpose>
- </xsl:if>
- </refnamediv>
-
- <!--
- <refentryinfo>
- <xsl:for-each select="copyright | copyright-include | legalnotice">
- <xsl:choose>
- <xsl:when test="name(.)='copyright'">
- <copyright><xsl:copy-of select="./node()"/></copyright>
- </xsl:when>
- <xsl:when test="name(.)='legalnotice'">
- <legalnotice><xsl:copy-of select="./node()"/></legalnotice>
- </xsl:when>
- <xsl:when test="name(.)='copyright-include'">
- <copyright><xsl:copy-of select="document(concat('../concepts/', @file))/copyright/node()"/></copyright>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </refentryinfo>
--->
-
- <xsl:if test="description">
- <xsl:if test="description">
- <refsect1>
- <title>Description</title>
- <xsl:for-each select="description">
- <xsl:apply-templates/>
- </xsl:for-each>
- </refsect1>
- </xsl:if>
- </xsl:if>
-
- <xsl:if test="refines | refines-when-mutable">
- <refsect1>
- <title>Refinement of</title>
- <itemizedlist>
- <xsl:if test="refines">
- <xsl:for-each select="refines">
- <listitem>
- <para>
- <xsl:call-template name="concept.link">
- <xsl:with-param name="name" select="@concept"/>
- </xsl:call-template>
- </para>
- </listitem>
- </xsl:for-each>
- </xsl:if>
- <xsl:if test="refines-when-mutable">
- <xsl:for-each select="refines-when-mutable">
- <listitem>
- <para>
- <xsl:text>When mutable: </xsl:text>
- <xsl:call-template name="concept.link">
- <xsl:with-param name="name" select="@concept"/>
- </xsl:call-template>
- </para>
- </listitem>
- </xsl:for-each>
- </xsl:if>
- </itemizedlist>
- </refsect1>
- </xsl:if>
-
- <!-- This part must be run even if there are no associated types to print out, so the hidden type definitions can be found -->
- <xsl:variable name="definition_list">
- <xsl:call-template name="make-definition-list">
- <xsl:with-param name="typedefs" select="define-type | associated-type"/>
- <xsl:with-param name="definition_list">
- <xsl:for-each select="param/@name">
- @(@<xsl:value-of select="."/>=<xsl:value-of select="."/>@)@
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:variable>
-
- <!-- <xsl:message>Definition list: <xsl:value-of select="$definition_list"/></xsl:message> -->
-
- <xsl:call-template name="print-associated-types">
- <xsl:with-param name="typedefs" select="associated-type"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- </xsl:call-template>
-
- <xsl:call-template name="concept.notation">
- <xsl:with-param name="definition_list" select="$definition_list"/>
- </xsl:call-template>
-
- <xsl:variable name="notations">
- <xsl:for-each select="notation">
- @@(@@<xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="*[1]"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="ignore-cv" select="true()"/>
- <xsl:with-param name="ignore-references" select="true()"/>
- </xsl:call-template>@@=@@<xsl:value-of select="normalize-space(@variables)"/>@@)@@
- </xsl:for-each>
- </xsl:variable>
-
- <!-- <xsl:message>Notations: <xsl:value-of select="normalize-space($notations)"/> End notations</xsl:message> -->
-
- <xsl:if test="definition">
- <refsect1>
- <title>Definitions</title>
- <xsl:for-each select="definition">
- <p><xsl:apply-templates/></p>
- </xsl:for-each>
- </refsect1>
- </xsl:if>
-
- <xsl:if test="valid-type-expression | models | models-when-mutable">
- <refsect1>
- <title>Type expressions</title>
- <variablelist>
- <xsl:for-each select="models">
- <varlistentry>
- <term/>
- <listitem>
- <para>
- <xsl:call-template name="unparse-operator-definition">
- <xsl:with-param name="typeref" select="."/>
- <xsl:with-param name="operator_nodeset" select="key('concepts', @concept)/models-sentence/node()"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="ignore-cv" select="false()"/>
- <xsl:with-param name="self" select="@concept"/>
- <xsl:with-param name="use-code-block" select="true()"/>
- </xsl:call-template>
- </para>
- </listitem>
- </varlistentry>
- </xsl:for-each>
- <xsl:for-each select="models-when-mutable">
- <varlistentry>
- <term>Only when mutable</term>
- <listitem>
- <para>
- <xsl:call-template name="unparse-operator-definition">
- <xsl:with-param name="typeref" select="."/>
- <xsl:with-param name="operator_nodeset" select="key('concepts', @concept)/models-sentence/node()"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="ignore-cv" select="false()"/>
- <xsl:with-param name="self" select="@concept"/>
- <xsl:with-param name="use-code-block" select="true()"/>
- </xsl:call-template>
- </para>
- </listitem>
- </varlistentry>
- </xsl:for-each>
- <xsl:for-each select="valid-type-expression">
- <varlistentry>
- <term><xsl:value-of select="@name"/></term>
- <listitem>
- <para>
- <type>
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="*[2]"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="normalize-space($notations)"/>
- </xsl:call-template>
- </type>
-
- <xsl:comment/> must be
- <xsl:for-each select="return-type/*">
- <xsl:if test="position()!=1 and last()!=2">, </xsl:if>
- <xsl:if test="position()=last() and last()!=1"> and </xsl:if>
- <xsl:call-template name="unparse-constraint">
- <xsl:with-param name="constraint" select="."/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="type-expr-mode" select="true()"/>
- </xsl:call-template>
- </xsl:for-each><xsl:comment/>.
- </para>
-
- <xsl:if test="description">
- <xsl:for-each select="description">
- <xsl:apply-templates/>
- </xsl:for-each>
- </xsl:if>
- </listitem>
- </varlistentry>
- </xsl:for-each>
- </variablelist>
- </refsect1>
- </xsl:if>
-
- <xsl:if test="valid-expression">
- <refsect1>
- <title>Valid expressions</title>
-
- <xsl:variable name="columns">
- <xsl:if test="valid-expression/return-type">
- <xsl:text>T</xsl:text>
- </xsl:if>
- <xsl:if test="valid-expression/precondition">
- <xsl:text>P</xsl:text>
- </xsl:if>
- <xsl:if test="valid-expression/semantics">
- <xsl:text>S</xsl:text>
- </xsl:if>
- <xsl:if test="valid-expression/postcondition">
- <xsl:text>O</xsl:text>
- </xsl:if>
- </xsl:variable>
-
- <informaltable>
- <tgroup>
- <xsl:attribute name="cols">
- <xsl:value-of select="string-length($columns) + 2"/>
- </xsl:attribute>
- <thead>
- <row>
- <entry>Name</entry>
- <entry>Expression</entry>
- <xsl:if test="contains($columns, 'T')">
- <entry>Type</entry>
- </xsl:if>
- <xsl:if test="contains($columns, 'P')">
- <entry>Precondition</entry>
- </xsl:if>
- <xsl:if test="contains($columns, 'S')">
- <entry>Semantics</entry>
- </xsl:if>
- <xsl:if test="contains($columns, 'O')">
- <entry>Postcondition</entry>
- </xsl:if>
- </row>
- </thead>
- <tbody>
- <xsl:apply-templates select="valid-expression">
- <xsl:with-param name="definition_list"
- select="$definition_list"/>
- <xsl:with-param name="notations"
- select="normalize-space($notations)"/>
- <xsl:with-param name="columns" select="$columns"/>
- </xsl:apply-templates>
- </tbody>
- </tgroup>
- </informaltable>
- <!-- Doug prefers the table
- <variablelist>
- <xsl:for-each select="valid-expression">
- <xsl:variable name="as-cxx-value">
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="*[1]"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="normalize-space($notations)"/>
- </xsl:call-template>
- </xsl:variable>
- <varlistentry>
- <term><xsl:value-of select="@name"/>: <literal><xsl:value-of select="$as-cxx-value"/></literal></term>
- <listitem><variablelist>
- <xsl:if test="return-type/*">
- <varlistentry><term>Return value</term><listitem><para>
- <xsl:for-each select="return-type/*">
- <xsl:if test="position()!=1 and last()!=2">, </xsl:if>
- <xsl:if test="position()=last() and last()!=1"> and </xsl:if>
- <xsl:call-template name="unparse-constraint">
- <xsl:with-param name="constraint" select="."/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="capitalize" select="position()=1"/>
- </xsl:call-template>
- </xsl:for-each>
- </para></listitem></varlistentry>
- </xsl:if>
-
- <xsl:for-each select="precondition">
- <varlistentry><term>Precondition</term><listitem><para>
- <xsl:apply-templates/>
- </para></listitem></varlistentry>
- </xsl:for-each>
-
- <xsl:for-each select="semantics">
- <varlistentry><term>Semantics</term><listitem><para>
- <xsl:apply-templates/>
- </para></listitem></varlistentry>
- </xsl:for-each>
-
- <xsl:for-each select="postcondition">
- <varlistentry><term>Postcondition</term><listitem><para>
- <xsl:apply-templates/>
- </para></listitem></varlistentry>
- </xsl:for-each>
-
- </variablelist></listitem>
- </varlistentry>
-
- </xsl:for-each>
- </variablelist>
--->
- </refsect1>
- </xsl:if>
-
- <xsl:if test="complexity">
- <refsect1>
- <title>Complexity</title>
- <xsl:for-each select="complexity">
- <para><xsl:apply-templates/></para>
- </xsl:for-each>
- </refsect1>
- </xsl:if>
-
- <xsl:if test="invariant">
- <refsect1>
- <title>Invariants</title>
- <variablelist>
- <xsl:for-each select="invariant">
- <varlistentry>
- <term><xsl:value-of select="@name"/></term>
- <listitem>
- <para><xsl:apply-templates/></para>
- </listitem>
- </varlistentry>
- </xsl:for-each>
- </variablelist>
- </refsect1>
- </xsl:if>
-
- <xsl:if test="example-model">
- <refsect1>
- <title>Models</title>
- <itemizedlist>
- <xsl:for-each select="example-model">
- <listitem>
- <simplelist type="inline">
- <xsl:for-each select="*">
- <xsl:variable name="example-value">
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="."/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- </xsl:call-template>
- </xsl:variable>
- <member><type><xsl:value-of select="$example-value"/></type></member>
- </xsl:for-each>
- </simplelist>
- </listitem>
- </xsl:for-each>
- </itemizedlist>
- </refsect1>
- </xsl:if>
-
- <xsl:variable name="see-also-list-0" select="concept-ref | see-also | refines | refines-when-mutable | models-as-first-arg | models | models-when-mutable"/>
- <xsl:variable name="see-also-list-1" select="$see-also-list-0[string(@name | @concept) != string(../@name)]"/>
- <xsl:variable name="see-also-list" select="$see-also-list-1[not(string(@name|@concept) = (preceding::*/@name | preceding::*/@concept | ancestor::*/@name | ancestor::*/@concept))]"/>
- <xsl:if test="$see-also-list">
- <refsect1>
- <title>See also</title>
- <itemizedlist>
- <xsl:for-each select="$see-also-list">
- <xsl:sort select="string(@name|@concept)" data-type="text"/>
- <listitem>
- <para>
- <xsl:call-template name="concept.link">
- <xsl:with-param name="name" select="@name|@concept"/>
- </xsl:call-template>
- </para>
- </listitem>
- </xsl:for-each>
- </itemizedlist>
- </refsect1>
- </xsl:if>
-
- </refentry>
- </xsl:template>
-
- <xsl:template name="unparse-constraint">
- <xsl:param name="constraint"/>
- <xsl:param name="definition_list"/>
- <xsl:param name="type-expr-mode" select="false()"/>
- <xsl:param name="capitalize" select="true()"/>
-
- <xsl:choose>
-
- <xsl:when test="name($constraint)='require-same-type'">
- <xsl:if test="$type-expr-mode">identical to </xsl:if>
- <type>
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="$constraint/*[1]"/>
- <xsl:with-param name="definition_list" select="definition_list"/>
- </xsl:call-template>
- </type>
- </xsl:when>
-
- <xsl:when test="name($constraint)='convertible-to'">
- <xsl:choose>
- <xsl:when test="$type-expr-mode">convertible to </xsl:when>
- <xsl:when test="not($type-expr-mode) and $capitalize">Convertible to </xsl:when>
- <xsl:when test="not($type-expr-mode) and not($capitalize)">convertible to </xsl:when>
- </xsl:choose>
- <type>
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="$constraint/*[1]"/>
- <xsl:with-param name="definition_list" select="definition_list"/>
- </xsl:call-template>
- </type>
- </xsl:when>
-
- <xsl:when test="name($constraint)='derived-from'">
- <xsl:choose>
- <xsl:when test="$type-expr-mode">derived from </xsl:when>
- <xsl:when test="not($type-expr-mode) and $capitalize">Derived from </xsl:when>
- <xsl:when test="not($type-expr-mode) and not($capitalize)">derived from </xsl:when>
- </xsl:choose>
- <type>
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="$constraint/*[1]"/>
- <xsl:with-param name="definition_list" select="definition_list"/>
- </xsl:call-template>
- </type>
- </xsl:when>
-
- <xsl:when test="name($constraint)='assignable-to'">
- <xsl:choose>
- <xsl:when test="$type-expr-mode">assignable to </xsl:when>
- <xsl:when test="not($type-expr-mode) and $capitalize">Assignable to </xsl:when>
- <xsl:when test="not($type-expr-mode) and not($capitalize)">assignable to </xsl:when>
- </xsl:choose>
- <type>
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="$constraint/*[1]"/>
- <xsl:with-param name="definition_list" select="definition_list"/>
- </xsl:call-template>
- </type>
- </xsl:when>
-
- <xsl:when test="name($constraint)='models-as-first-arg'">
- <xsl:choose>
- <xsl:when test="$type-expr-mode"> a model </xsl:when>
- <xsl:when test="not($type-expr-mode) and $capitalize"> Models </xsl:when>
- <xsl:when test="not($type-expr-mode) and not($capitalize)"> models </xsl:when>
- </xsl:choose>
- <xsl:if test="$constraint/*"><xsl:comment/>
- (along with <xsl:for-each select="$constraint/*"><type>
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="."/>
- <xsl:with-param name="definition_list" select="definition_list"/>
- </xsl:call-template>
- </type>
- <xsl:choose>
- <xsl:when test="position()=last()"/>
- <xsl:when test="position()=last()-1 and last()=2"> and </xsl:when>
- <xsl:when test="position()=last()-1 and last()!=2">, and </xsl:when>
- <xsl:otherwise>, </xsl:otherwise>
- </xsl:choose><xsl:comment/>
- </xsl:for-each><xsl:comment/>) <xsl:comment/>
- </xsl:if><xsl:comment/>
- <xsl:if test="$type-expr-mode"> of </xsl:if>
- <xsl:call-template name="concept.link">
- <xsl:with-param name="name" select="$constraint/@concept"/>
- </xsl:call-template>
- </xsl:when>
-
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="make-definition-list">
- <xsl:param name="typedefs"/>
- <xsl:param name="definition_list"/>
-
- <xsl:choose>
- <xsl:when test="$typedefs">
- <xsl:variable name="type_definition">
- <xsl:if test="name($typedefs[1]/*[1])!='description'">
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="$typedefs[1]/*[1]"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:variable>
-
- <xsl:variable name="new_type_definition">
- <xsl:choose>
- <xsl:when test="name($typedefs[1])='associated-type'">
- <xsl:value-of select="$typedefs[1]/@name"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$type_definition"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:call-template name="make-definition-list">
- <xsl:with-param name="typedefs" select="$typedefs[position()!=1]"/>
- <xsl:with-param name="definition_list" select="concat($definition_list, ' @(@', $typedefs[1]/@name, '=', $new_type_definition, '@)@')"/>
- </xsl:call-template>
-
- </xsl:when>
-
- <xsl:otherwise> <!-- End of expression list, emit the results that have accumulated -->
- <xsl:value-of select="$definition_list"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="print-associated-types">
- <xsl:param name="typedefs"/>
- <xsl:param name="definition_list"/>
-
- <xsl:if test="$typedefs">
- <refsect1>
- <title>Associated types</title>
-
- <xsl:choose>
- <xsl:when test="$boost.concept.layout='sgi'">
- <informaltable>
- <tgroup cols="2">
- <tbody>
- <xsl:apply-templates select="associated-type" mode="sgi">
- <xsl:with-param name="definition_list"
- select="$definition_list"/>
- </xsl:apply-templates>
- </tbody>
- </tgroup>
- </informaltable>
- </xsl:when>
- <xsl:when test="$boost.concept.layout='austern'">
- <itemizedlist>
- <xsl:apply-templates select="associated-type" mode="austern">
- <xsl:with-param name="definition_list"
- select="$definition_list"/>
- </xsl:apply-templates>
- </itemizedlist>
- </xsl:when>
- <xsl:when test="$boost.concept.layout='caramel'">
- <segmentedlist>
- <segtitle>Name</segtitle>
- <segtitle>Code</segtitle>
- <segtitle>Description</segtitle>
- <xsl:for-each select="$typedefs">
- <xsl:variable name="type_definition">
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="*[1]"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- </xsl:call-template>
- </xsl:variable>
- <seglistitem>
- <seg><xsl:value-of select="@name"/></seg>
- <seg><xsl:value-of select="$type_definition"/></seg>
- <seg>
- <xsl:for-each select="description">
- <xsl:call-template name="description"/>
- </xsl:for-each>
- </seg>
- </seglistitem>
- </xsl:for-each>
- </segmentedlist>
- </xsl:when>
- </xsl:choose>
- </refsect1>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="comma-list">
- <xsl:param name="list"/>
-
- <xsl:if test="$list!=''">
- <term><varname>
- <xsl:if test="substring-before($list,' ')=''"><xsl:value-of select="$list"/></xsl:if>
- <xsl:value-of select="substring-before($list,' ')"/>
- </varname></term>
- <xsl:call-template name="comma-list">
- <xsl:with-param name="list" select="substring-after($list,' ')"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="associated-type" mode="sgi">
- <row>
- <entry><simpara><xsl:value-of select="@name"/></simpara></entry>
-
- <entry>
- <para>
- <xsl:for-each select="description">
- <xsl:apply-templates/>
- </xsl:for-each>
- </para>
- </entry>
- </row>
- </xsl:template>
-
- <xsl:template match="associated-type" mode="austern">
- <xsl:param name="definition_list" select="''"/>
-
- <listitem>
- <para>
- <emphasis role="bold"><xsl:value-of select="@name"/></emphasis>
-
- <xsl:call-template name="preformatted">
- <xsl:with-param name="text">
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="*[1]"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
-
- <xsl:for-each select="description">
- <xsl:apply-templates/>
- </xsl:for-each>
- </para>
- </listitem>
- </xsl:template>
-
- <xsl:template match="valid-expression">
- <xsl:param name="definition_list"/>
- <xsl:param name="notations"/>
- <xsl:param name="columns"/>
-
- <row>
- <entry><simpara><xsl:value-of select="@name"/></simpara></entry>
-
- <entry>
- <simpara>
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="*[1]"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$notations"/>
- </xsl:call-template>
- </simpara>
- </entry>
-
- <xsl:if test="contains($columns, 'T')">
- <entry>
- <simpara>
- <xsl:for-each select="return-type/*">
- <xsl:if test="position()!=1 and last()!=2">, </xsl:if>
- <xsl:if test="position()=last() and last()!=1"> and </xsl:if>
- <xsl:call-template name="unparse-constraint">
- <xsl:with-param name="constraint" select="."/>
- <xsl:with-param name="definition_list"
- select="$definition_list"/>
- <xsl:with-param name="capitalize" select="position()=1"/>
- </xsl:call-template>
- </xsl:for-each>
- </simpara>
- </entry>
- </xsl:if>
-
- <xsl:if test="contains($columns, 'P')">
- <entry>
- <xsl:for-each select="precondition">
- <simpara><xsl:apply-templates/></simpara>
- </xsl:for-each>
- </entry>
- </xsl:if>
-
- <xsl:if test="contains($columns, 'S')">
- <entry>
- <xsl:for-each select="semantics">
- <simpara><xsl:apply-templates/></simpara>
- </xsl:for-each>
- </entry>
- </xsl:if>
-
- <xsl:if test="contains($columns, 'O')">
- <entry>
- <xsl:for-each select="postcondition">
- <simpara><xsl:apply-templates/></simpara>
- </xsl:for-each>
- </entry>
- </xsl:if>
- </row>
- </xsl:template>
-
- <xsl:template name="concept.notation">
- <xsl:param name="definition_list"/>
-
- <refsect1>
- <title>Notation</title>
- <variablelist>
- <xsl:for-each select="param">
- <varlistentry>
- <term><xsl:value-of select="@name"/></term>
- <listitem>
- <simpara>
- <xsl:text>A type playing the role of </xsl:text>
- <xsl:value-of select="@role"/>
- <xsl:text> in the </xsl:text>
- <xsl:call-template name="concept.link">
- <xsl:with-param name="name" select="../@name"/>
- </xsl:call-template>
- <xsl:text> concept.</xsl:text>
- </simpara>
- </listitem>
- </varlistentry>
- </xsl:for-each>
- <xsl:for-each select="notation">
- <xsl:variable name="notation_name">
- <xsl:call-template name="comma-list">
- <xsl:with-param name="list"
- select="normalize-space(@variables)"/>
- </xsl:call-template>
- </xsl:variable>
-
- <varlistentry>
- <xsl:copy-of select="$notation_name"/>
- <listitem>
- <simpara>
- <xsl:variable name="output-plural" select="substring-before(normalize-space(@variables),' ')!=''"/>
- <xsl:if test="name(*[1])='sample-value'">Object<xsl:if test="$output-plural">s</xsl:if> of type </xsl:if>
- <xsl:variable name="typeref-to-print" select="*[name()!='sample-value'] | sample-value/*[name()!='sample-value']"/>
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="$typeref-to-print"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="ignore-cv" select="true()"/>
- <xsl:with-param name="ignore-references" select="true()"/>
- </xsl:call-template>
- </simpara>
- </listitem>
- </varlistentry>
- </xsl:for-each>
- </variablelist>
- </refsect1>
- </xsl:template>
-
- <xsl:template name="concept.link">
- <xsl:param name="name" select="text()"/>
- <xsl:param name="warn" select="true()"/>
- <xsl:param name="text" select="$name"/>
- <xsl:variable name="node" select="key('concepts', $name)"/>
-
- <xsl:choose>
- <xsl:when test="count($node)=0">
- <xsl:if test="$warn">
- <xsl:message>
- <xsl:text>warning: cannot find concept '</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>'</xsl:text>
- </xsl:message>
- </xsl:if>
- <xsl:value-of select="$text"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text" select="$text"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="remove-whitespace">
- <xsl:param name="text" select="text()"/>
-
- <xsl:variable name="normalized" select="normalize-space($text)"/>
- <xsl:choose>
- <xsl:when test="contains($normalized, ' ')">
- <xsl:value-of select="substring-before($normalized, ' ')"/>
- <xsl:call-template name="remove-whitespace">
- <xsl:with-param name="text"
- select="substring-after($normalized, ' ')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$normalized"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="concept" mode="generate.id">
- <xsl:call-template name="remove-whitespace">
- <xsl:with-param name="text" select="@name"/>
- </xsl:call-template>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" ?>
-
-<!--
-Copyright (c) 2002-2003 The Trustees of Indiana University.
- All rights reserved.
-Copyright (c) 2000-2001 University of Notre Dame. All rights reserved.
-
- 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) -->
-
-<operator-list>
- <!-- This list is from Pohl's book, and needs to be checked for accuracy -->
-
- <op name="postincrement">
- <apply priority="100"><arg num="1"/>++</apply> <!-- No assoc - always use parentheses -->
- <impl position="method">operator++(int)</impl>
- </op>
-
- <op name="postdecrement">
- <apply priority="100"><arg num="1"/>--</apply>
- <impl position="method">operator--(int)</impl>
- </op>
-
- <op name="apply-function">
- <apply priority="100"><name/>(<arg-list start="1" priority="30"/>)</apply>
- <impl position="freestanding"><name/>(<arg-list/>)</impl>
- </op>
-
- <op name="apply-method">
- <apply priority="100" assoc="1"><arg num="1"/>.<name/>(<arg-list start="2" priority="30"/>)</apply>
- <impl position="method"><name/>(<arg-list/>)</impl>
- </op>
-
- <op name="pointer-apply-method">
- <apply priority="100" assoc="1"><arg num="1"/>-><name/>(<arg-list start="2" priority="30"/>)</apply>
- <impl>Error</impl>
- </op>
-
- <op name="apply-funcobj">
- <apply priority="100" assoc="1"><arg num="1"/>(<arg-list start="2" priority="30"/>)</apply>
- <impl position="method">operator()(<arg-list/>)</impl>
- </op>
-
- <op name="construct">
- <apply priority="100"><arg num="1"/>(<arg-list start="2" priority="30"/>)</apply>
- <impl position="method"><self/>(<arg-list/>)</impl>
- </op>
-
- <op name="subscript">
- <apply priority="100" assoc="1"><arg num="1"/>[<arg num="2" priority="0"/>]</apply>
- <impl position="method">operator[](<arg-list/>)</impl>
- </op>
-
- <op name="class-member">
- <apply priority="100" assoc="1"><arg num="1"/>.<name/></apply>
- <impl>Error</impl>
- </op>
-
- <op name="pointer-member">
- <!-- Note: non-testable constraint -->
- <apply priority="100"><arg num="1" assoc="1"/>->{member-name} (return type is pointer-to-object type)</apply>
- <impl>operator->(<arg-list/>)</impl>
- </op>
-
- <op name="preincrement">
- <apply priority="95">++<arg num="1"/></apply>
- <impl position="method">operator++(<arg-list/>)</impl>
- </op>
-
- <op name="predecrement">
- <apply priority="95">--<arg num="1"/></apply>
- <impl position="method">operator--(<arg-list/>)</impl>
- </op>
-
- <op name="logical-not">
- <apply priority="95" assoc="1">!<arg num="1"/></apply>
- <impl position="method">operator!(<arg-list/>)</impl>
- </op>
-
- <op name="bitwise-not">
- <apply priority="95" assoc="1">~<arg num="1"/></apply>
- <impl position="method">operator~(<arg-list/>)</impl>
- </op>
-
- <op name="address-of">
- <apply priority="95">&<arg num="1"/></apply>
- <impl position="method">operator&(<arg-list/>)</impl>
- </op>
-
- <op name="dereference">
- <apply priority="95" assoc="1">*<arg num="1"/></apply>
- <impl position="method">operator*(<arg-list/>)</impl>
- </op>
-
- <op name="unary-plus">
- <apply priority="95">+<arg num="1"/></apply>
- <impl position="method">operator+(<arg-list/>)</impl>
- </op>
-
- <op name="unary-minus">
- <apply priority="95">-<arg num="1"/></apply>
- <impl position="method">operator-(<arg-list/>)</impl>
- </op>
-
- <op name="class-member-ptr">
- <apply priority="90" assoc="1"><arg num="1"/>.*<arg num="2"/></apply>
- <impl>Error</impl>
- </op>
-
- <op name="pointer-member-ptr">
- <apply priority="90" assoc="1"><arg num="1"/>->*<arg num="2"/></apply>
- <impl position="method">operator->*(<arg-list/>)</impl>
- </op>
-
- <op name="multiply">
- <apply priority="90" assoc="1"><arg num="1"/> * <arg num="2"/></apply>
- <impl position="freestanding">operator * (<arg-list/>)</impl>
- </op>
-
- <op name="divide">
- <apply priority="90" assoc="1"><arg num="1"/> / <arg num="2"/></apply>
- <impl position="freestanding">operator / (<arg-list/>)</impl>
- </op>
-
- <op name="modulus">
- <apply priority="90" assoc="1"><arg num="1"/> % <arg num="2"/></apply>
- <impl position="freestanding">operator % (<arg-list/>)</impl>
- </op>
-
- <op name="add">
- <apply priority="85" assoc="1"><arg num="1"/> + <arg num="2"/></apply>
- <impl position="freestanding">operator + (<arg-list/>)</impl>
- </op>
-
- <op name="subtract">
- <apply priority="85" assoc="1"><arg num="1"/> - <arg num="2"/></apply>
- <impl position="freestanding">operator - (<arg-list/>)</impl>
- </op>
-
- <op name="shift-left">
- <apply priority="80" assoc="1"><arg num="1"/> << <arg num="2"/></apply>
- <impl position="freestanding">operator << (<arg-list/>)</impl>
- </op>
-
- <op name="shift-right">
- <apply priority="80" assoc="1"><arg num="1"/> >> <arg num="2"/></apply>
- <impl position="freestanding">operator >> (<arg-list/>)</impl>
- </op>
-
- <op name="less-than">
- <apply priority="75"><arg num="1"/> < <arg num="2"/></apply>
- <impl position="freestanding">operator < (<arg-list/>)</impl>
- </op>
-
- <op name="greater-than">
- <apply priority="75"><arg num="1"/> > <arg num="2"/></apply>
- <impl position="freestanding">operator > (<arg-list/>)</impl>
- </op>
-
- <op name="less-than-or-equal">
- <apply priority="75"><arg num="1"/> <= <arg num="2"/></apply>
- <impl position="freestanding">operator <= (<arg-list/>)</impl>
- </op>
-
- <op name="greater-than-or-equal">
- <apply priority="75"><arg num="1"/> >= <arg num="2"/></apply>
- <impl position="freestanding">operator >= (<arg-list/>)</impl>
- </op>
-
- <op name="equal-to">
- <apply priority="70"><arg num="1"/> == <arg num="2"/></apply>
- <impl position="freestanding">operator == (<arg-list/>)</impl>
- </op>
-
- <op name="not-equal-to">
- <apply priority="70"><arg num="1"/> != <arg num="2"/></apply>
- <impl position="freestanding">operator != (<arg-list/>)</impl>
- </op>
-
- <op name="bitwise-and">
- <apply priority="65" assoc="1"><arg num="1"/> & <arg num="2"/></apply>
- <impl position="freestanding">operator & (<arg-list/>)</impl>
- </op>
-
- <op name="bitwise-or">
- <apply priority="60" assoc="1"><arg num="1"/> | <arg num="2"/></apply>
- <impl position="freestanding">operator | (<arg-list/>)</impl>
- </op>
-
- <op name="bitwise-xor">
- <apply priority="55" assoc="1"><arg num="1"/> ^ <arg num="2"/></apply>
- <impl position="freestanding">operator ^ (<arg-list/>)</impl>
- </op>
-
- <op name="logical-and">
- <apply priority="50" assoc="1"><arg num="1"/> && <arg num="2"/></apply>
- <impl position="freestanding">operator && (<arg-list/>)</impl>
- </op>
-
- <op name="logical-or">
- <apply priority="45" assoc="1"><arg num="1"/> || <arg num="2"/></apply>
- <impl position="freestanding">operator || (<arg-list/>)</impl>
- </op>
-
- <op name="conditional">
- <apply priority="40" assoc="3"><arg num="1"/> ? <arg num="2"/> : <arg num="3"/></apply>
- <impl>Error</impl>
- </op>
-
- <op name="assign">
- <apply priority="35" assoc="2"><arg num="1"/> = <arg num="2"/></apply>
- <impl position="method">operator = (<arg-list/>)</impl>
- </op>
-
- <op name="add-assign">
- <apply priority="35" assoc="2"><arg num="1"/> += <arg num="2"/></apply>
- <impl position="method">operator += (<arg-list/>)</impl>
- </op>
-
- <op name="subtract-assign">
- <apply priority="35" assoc="2"><arg num="1"/> -= <arg num="2"/></apply>
- <impl position="method">operator -= (<arg-list/>)</impl>
- </op>
-
- <op name="multiply-assign">
- <apply priority="35" assoc="2"><arg num="1"/> *= <arg num="2"/></apply>
- <impl position="method">operator *= (<arg-list/>)</impl>
- </op>
-
- <op name="divide-assign">
- <apply priority="35" assoc="2"><arg num="1"/> /= <arg num="2"/></apply>
- <impl position="method">operator /= (<arg-list/>)</impl>
- </op>
-
- <op name="modulus-assign">
- <apply priority="35" assoc="2"><arg num="1"/> %= <arg num="2"/></apply>
- <impl position="method">operator %= (<arg-list/>)</impl>
- </op>
-
- <op name="shift-left-assign">
- <apply priority="35" assoc="2"><arg num="1"/> <<= <arg num="2"/></apply>
- <impl position="method">operator <<= (<arg-list/>)</impl>
- </op>
-
- <op name="shift-right-assign">
- <apply priority="35" assoc="2"><arg num="1"/> >>= <arg num="2"/></apply>
- <impl position="method">operator >>= (<arg-list/>)</impl>
- </op>
-
- <op name="bitwise-and-assign">
- <apply priority="35" assoc="2"><arg num="1"/> &= <arg num="2"/></apply>
- <impl position="method">operator &= (<arg-list/>)</impl>
- </op>
-
- <op name="bitwise-or-assign">
- <apply priority="35" assoc="2"><arg num="1"/> |= <arg num="2"/></apply>
- <impl position="method">operator |= (<arg-list/>)</impl>
- </op>
-
- <op name="bitwise-xor-assign">
- <apply priority="35" assoc="2"><arg num="1"/> ^= <arg num="2"/></apply>
- <impl position="method">operator ^= (<arg-list/>)</impl>
- </op>
-
- <op name="comma">
- <apply priority="20"><arg num="1"/>, <arg num="2"/></apply>
- <impl position="freestanding">operator , (<arg-list/>)</impl>
- </op>
-
- <op name="function-pointer">
- <apply><arg num="1"/> (*)(<arg-list start="2" priority="30"/>)</apply>
- <impl>Error</impl>
- </op>
-
- <op name="functorize-operator">
- <!-- Note: non-testable constraint -->
- <apply>functorization of operator <name/> on arguments {<arg-list start="1"/>}</apply>
- <impl>Error</impl>
- </op>
-
- <op name="functorize-function">
- <!-- Note: non-testable constraint -->
- <apply>functorization of function <name/> on arguments {<arg-list start="1"/>}</apply>
- <impl>Error</impl>
- </op>
-
-</operator-list>
+++ /dev/null
-<?xml version="1.0" ?>
-
-<!--
-Copyright (c) 2002-2003 The Trustees of Indiana University.
- All rights reserved.
-Copyright (c) 2000-2001 University of Notre Dame. All rights reserved.
-
- 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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:template name="unparse-cpp">
- <xsl:param name="typeref"/>
- <xsl:param name="definition_list"/>
- <xsl:param name="priority">0</xsl:param>
- <xsl:param name="ignore-cv" select="false()"/>
- <xsl:param name="ignore-references" select="false()"/>
- <xsl:param name="notations"/>
- <xsl:param name="ignore-notation" select="false()"/>
- <xsl:param name="print-updated-notation" select="false()"/>
- <xsl:param name="use-typename" select="false()"/>
- <xsl:param name="const-if-not-mutable-value" select="'const-if-not-mutable'"/>
-
- <xsl:variable name="notation_check">
- <xsl:if test="not($ignore-notation)"> <!-- Prevent infinite recursion -->
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="$typeref"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="priority">0</xsl:with-param>
- <xsl:with-param name="ignore-cv" select="true()"/>
- <xsl:with-param name="ignore-references" select="true()"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="ignore-notation" select="true()"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:variable>
-
- <!--
- <xsl:message>Notation check: <xsl:value-of select="$notation_check"/>
- Notations: <xsl:value-of select="$notations"/>
- </xsl:message> -->
-
- <xsl:variable name="this_op_priority" select="document('cpp-operators.xml')/operator-list/op[@name=name($typeref)]/apply/@priority"/>
-
- <xsl:variable name="result">
-
- <xsl:variable name="subcall_priority">
- <xsl:choose>
- <xsl:when test="true() or ($this_op_priority > $priority)">
- <xsl:value-of select="$this_op_priority"/>
- </xsl:when>
- <!-- <xsl:otherwise>0</xsl:otherwise> -->
- </xsl:choose>
- </xsl:variable>
-
- <xsl:if test="$this_op_priority <= $priority">(</xsl:if>
-
- <xsl:choose>
-
- <xsl:when test="name($typeref)='sample-value'"
- >boost::sample_value < <xsl:call-template name="unparse-cpp"><xsl:with-param name="typeref" select="$typeref/*[1]"/><xsl:with-param name="definition_list" select="$definition_list"/><xsl:with-param name="ignore-cv" select="$ignore-cv"/><xsl:with-param name="notations" select="$notations"/><xsl:with-param name="ignore-references" select="$ignore-references"/><xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/></xsl:call-template> >()</xsl:when>
-
- <xsl:when test="name($typeref)='reference-to'"
- ><xsl:call-template name="unparse-cpp"><xsl:with-param name="typeref" select="$typeref/*[1]"/><xsl:with-param name="definition_list" select="$definition_list"/><xsl:with-param name="priority" select="$subcall_priority"/><xsl:with-param name="ignore-cv" select="$ignore-cv"/><xsl:with-param name="notations" select="$notations"/><xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/></xsl:call-template><xsl:if test="not($ignore-references)"> &</xsl:if></xsl:when>
-
- <xsl:when test="name($typeref)='pointer-to'"
- ><xsl:call-template name="unparse-cpp"><xsl:with-param name="typeref" select="$typeref/*[1]"/><xsl:with-param name="definition_list" select="$definition_list"/><xsl:with-param name="priority" select="$subcall_priority"/><xsl:with-param name="ignore-cv" select="$ignore-cv"/><xsl:with-param name="notations" select="$notations"/></xsl:call-template> *</xsl:when>
-
- <xsl:when test="name($typeref)='const'"
- ><xsl:if test="not($ignore-cv)">const </xsl:if><xsl:call-template name="unparse-cpp"><xsl:with-param name="typeref" select="$typeref/*[1]"/><xsl:with-param name="definition_list" select="$definition_list"/><xsl:with-param name="priority" select="$subcall_priority"/><xsl:with-param name="ignore-cv" select="$ignore-cv"/><xsl:with-param name="notations" select="$notations"/><xsl:with-param name="ignore-references" select="$ignore-references"/><xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/></xsl:call-template>
- </xsl:when>
-
- <xsl:when test="name($typeref)='const-if-not-mutable'"
- ><xsl:if test="not($ignore-cv)"><xsl:value-of select="$const-if-not-mutable-value"/><xsl:if test="$const-if-not-mutable-value"><xsl:text> </xsl:text></xsl:if></xsl:if><xsl:call-template name="unparse-cpp"><xsl:with-param name="typeref" select="$typeref/*[1]"/><xsl:with-param name="definition_list" select="$definition_list"/><xsl:with-param name="priority" select="$subcall_priority"/><xsl:with-param name="ignore-cv" select="$ignore-cv"/><xsl:with-param name="notations" select="$notations"/><xsl:with-param name="ignore-references" select="$ignore-references"/><xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/></xsl:call-template>
- </xsl:when>
-
- <xsl:when test="name($typeref)='volatile'"
- ><xsl:if test="not($ignore-cv)">volatile </xsl:if><xsl:call-template name="unparse-cpp"><xsl:with-param name="typeref" select="$typeref/*[1]"/><xsl:with-param name="definition_list" select="$definition_list"/><xsl:with-param name="priority" select="$subcall_priority"/><xsl:with-param name="ignore-cv" select="$ignore-cv"/><xsl:with-param name="notations" select="$notations"/><xsl:with-param name="ignore-references" select="$ignore-references"/><xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/></xsl:call-template>
- </xsl:when>
-
- <xsl:when test="name($typeref)='apply-template'">
- <xsl:value-of select="$typeref/@name"/><<xsl:for-each select="$typeref/*">
- <xsl:if test="position()!=1">, </xsl:if><xsl:comment/>
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="."/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="ignore-cv" select="$ignore-cv"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template></xsl:for-each
- ><xsl:comment/>></xsl:when>
-
- <xsl:when test="name($typeref)='get-member-type'">
- <xsl:call-template name="unparse-cpp"><xsl:with-param name="typeref" select="$typeref/*[1]"/><xsl:with-param name="definition_list" select="$definition_list"/><xsl:with-param name="ignore-cv" select="$ignore-cv"/><xsl:with-param name="notations" select="$notations"/><xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/></xsl:call-template>::<xsl:value-of select="$typeref/@name"/>
- </xsl:when>
-
- <xsl:when test="name($typeref)='type'">
- <xsl:variable name="typeref_value" select="normalize-space(substring-before(substring-after($definition_list,concat('@(@',$typeref/@name,'=')),'@)@'))"/>
- <xsl:choose>
- <xsl:when test="$typeref_value=''">
- <xsl:value-of select="$typeref/@name"/><xsl:comment/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$typeref_value"/><xsl:comment/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <xsl:when test="name($typeref)='documentation'"/>
-
- <xsl:when test="document('cpp-operators.xml')/operator-list/op[@name=name($typeref)]">
- <xsl:variable name="op_file" select="document('cpp-operators.xml')/operator-list"/>
- <xsl:variable name="op_info" select="$op_file/op[@name=name($typeref)]/apply/."/>
-
- <xsl:call-template name="unparse-operator-definition">
- <xsl:with-param name="typeref" select="$typeref"/>
- <xsl:with-param name="operator_nodeset" select="$op_info/child::node()"/>
- <xsl:with-param name="my_priority" select="$subcall_priority"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="ignore-cv" select="$ignore-cv"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- <xsl:with-param name="print-updated-notation" select="$print-updated-notation"/>
- </xsl:call-template>
-
- </xsl:when>
-
- <xsl:otherwise>
- (Unrecognized tag <xsl:value-of select="name($typeref)"/>)
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- Close parenthesis code moved below -->
-
- </xsl:variable>
-
- <!-- <xsl:message>ignore-notation = <xsl:value-of select="$ignore-notation"/></xsl:message> -->
- <!-- <xsl:message>notation_check = <xsl:value-of select="$notation_check"/></xsl:message> -->
- <!-- <xsl:message>notations = <xsl:value-of select="$notations"/></xsl:message> -->
- <!-- <xsl:message>result = <xsl:value-of select="$result"/></xsl:message> -->
-
- <xsl:variable name="used_notation" select="boolean($notation_check) and boolean(substring-before(substring-after($notations, concat('@@(@@', $notation_check, '@@=@@')),'@@)@@'))"/>
-
- <xsl:variable name="notations2">
- <!-- Possibly replace from result of unparse-operator-definition -->
- <xsl:choose>
- <xsl:when test="contains($result, ' *@@@* ')">
- <xsl:value-of select="substring-after($result, ' *@@@* ')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$notations"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="result2">
- <!-- Possibly replace from result of unparse-operator-definition -->
- <xsl:choose>
- <xsl:when test="contains($result, ' *@@@* ')">
- <xsl:value-of select="substring-before($result, ' *@@@* ')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$result"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- Close parenthesis code -->
- <xsl:if test="$this_op_priority <= $priority">)</xsl:if>
- </xsl:variable>
-
- <xsl:variable name="notation_varlist">
- <xsl:choose>
- <xsl:when test="$used_notation">
- <xsl:value-of select="substring-before(substring-after($notations2, concat('@@(@@', $notation_check, '@@=@@')), '@@)@@')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$result2"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="new_varlist" select="substring-after(normalize-space($notation_varlist), ' ')"/>
-
- <xsl:variable name="notation_var">
- <xsl:choose>
- <xsl:when test="not($used_notation)">
- <xsl:value-of select="$result2"/>
- </xsl:when>
- <xsl:when test="$new_varlist=''">
- <xsl:value-of select="$notation_varlist"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="substring-before(normalize-space($notation_varlist), ' ')"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Generate new notation list -->
- <xsl:variable name="new_notations">
- <xsl:choose>
- <xsl:when test="$used_notation">
- <xsl:value-of select="normalize-space(concat('@@(@@', $notation_check, '@@=@@', $new_varlist, '@@)@@', $notations2))"/>
- <!-- Duplicate entries always use first occurrance, so I can optimize this -->
- </xsl:when>
- <xsl:otherwise><xsl:value-of select="$notations2"/></xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- <xsl:message>final_result = <xsl:value-of select="normalize-space($final_result)"/></xsl:message> -->
-
- <xsl:call-template name="add-typename"><xsl:with-param name="really-do-it" select="$use-typename"/><xsl:with-param name="type"><xsl:value-of select="normalize-space($notation_var)"/></xsl:with-param></xsl:call-template><xsl:if test="$print-updated-notation"> *@@@* <xsl:value-of select="$new_notations"/></xsl:if>
-
- </xsl:template>
-
- <xsl:template name="unparse-operator-definition">
- <xsl:param name="typeref"/>
- <xsl:param name="operator_nodeset"/>
- <xsl:param name="current_start">1</xsl:param>
- <xsl:param name="my_priority"/>
- <xsl:param name="definition_list"/>
- <xsl:param name="notations"/>
- <xsl:param name="ignore-cv"/>
- <xsl:param name="self"/>
- <xsl:param name="use-code-block" select="false()"/>
- <xsl:param name="print-updated-notation" select="false()"/>
- <xsl:param name="const-if-not-mutable-value"/>
-
- <xsl:variable name="op_current" select="$operator_nodeset[position()=1]"/>
- <xsl:variable name="op_rest" select="$operator_nodeset[position()!=1]"/>
-
- <xsl:choose>
-
- <xsl:when test="count($operator_nodeset)=0">
- <xsl:if test="$print-updated-notation"> *@@@* <xsl:value-of select="$notations"/></xsl:if>
- </xsl:when>
-
- <xsl:when test="$op_current != $op_current/../*"> <!-- If I am not an element -->
- <xsl:value-of select="$op_current"/>
- <xsl:call-template name="unparse-operator-definition">
- <xsl:with-param name="typeref" select="$typeref"/>
- <xsl:with-param name="operator_nodeset" select="$op_rest"/>
- <xsl:with-param name="my_priority" select="$my_priority"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="self" select="$self"/>
- <xsl:with-param name="use-code-block" select="$use-code-block"/>
- <xsl:with-param name="print-updated-notation" select="$print-updated-notation"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test="name($op_current)='name'">
- <xsl:value-of select="$typeref/@name"/>
- <xsl:call-template name="unparse-operator-definition">
- <xsl:with-param name="typeref" select="$typeref"/>
- <xsl:with-param name="operator_nodeset" select="$op_rest"/>
- <xsl:with-param name="my_priority" select="$my_priority"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="ignore-cv" select="$ignore-cv"/>
- <xsl:with-param name="self" select="$self"/>
- <xsl:with-param name="use-code-block" select="$use-code-block"/>
- <xsl:with-param name="print-updated-notation" select="$print-updated-notation"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test="name($op_current)='self'">
- <xsl:call-template name="concept.link">
- <xsl:with-param name="name" select="string($self)"/>
- </xsl:call-template>
- <xsl:call-template name="unparse-operator-definition">
- <xsl:with-param name="typeref" select="$typeref"/>
- <xsl:with-param name="operator_nodeset" select="$op_rest"/>
- <xsl:with-param name="my_priority" select="$my_priority"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="ignore-cv" select="$ignore-cv"/>
- <xsl:with-param name="self" select="$self"/>
- <xsl:with-param name="use-code-block" select="$use-code-block"/>
- <xsl:with-param name="print-updated-notation" select="$print-updated-notation"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test="name($op_current)='arg'">
- <xsl:variable name="num" select="$op_current/@num"/>
- <xsl:variable name="assoc" select="$op_current/../@assoc"/>
- <xsl:variable name="my_priority_before" select="$my_priority"/>
- <xsl:variable name="my_priority">
- <xsl:choose>
- <xsl:when test="count($op_current/@priority)">
- <xsl:value-of select="$op_current/@priority"/>
- </xsl:when>
- <xsl:when test="$assoc and ($num = $assoc)">
- <xsl:value-of select="$my_priority_before - 1"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$my_priority"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="typeref-result">
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="$typeref/*[position()=$num]"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="priority" select="$my_priority"/>
- <xsl:with-param name="ignore-cv" select="$ignore-cv"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="print-updated-notation" select="true()"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="typeref-print" select="normalize-space(substring-before($typeref-result, ' *@@@* '))"/>
- <xsl:variable name="new_notations" select="normalize-space(substring-after($typeref-result, ' *@@@* '))"/>
-
- <xsl:choose>
- <xsl:when test="$use-code-block">
- <type><xsl:value-of select="$typeref-print"/></type>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$typeref-print"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:call-template name="unparse-operator-definition">
- <xsl:with-param name="typeref" select="$typeref"/>
- <xsl:with-param name="operator_nodeset" select="$op_rest"/>
- <xsl:with-param name="my_priority" select="$my_priority_before"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$new_notations"/>
- <xsl:with-param name="ignore-cv" select="$ignore-cv"/>
- <xsl:with-param name="self" select="$self"/>
- <xsl:with-param name="use-code-block" select="$use-code-block"/>
- <xsl:with-param name="print-updated-notation" select="$print-updated-notation"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:when test="name($op_current)='arg-list'">
- <xsl:variable name="start" select="$op_current/@start"/>
- <xsl:variable name="typeref-result">
- <xsl:choose>
- <xsl:when test="$current_start >= $start">
- <xsl:call-template name="unparse-cpp">
- <xsl:with-param name="typeref" select="$typeref/*[$current_start]"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="priority" select="$my_priority"/>
- <xsl:with-param name="ignore-cv" select="$ignore-cv"/>
- <xsl:with-param name="notations" select="$notations"/>
- <xsl:with-param name="print-updated-notation" select="true()"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:otherwise>
- *@@@* <xsl:value-of select="$notations"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="typeref-print" select="normalize-space(substring-before($typeref-result, ' *@@@* '))"/>
- <xsl:variable name="new_notations" select="normalize-space(substring-after($typeref-result, ' *@@@* '))"/>
-
- <xsl:choose>
- <xsl:when test="$use-code-block">
- <type><xsl:value-of select="$typeref-print"/></type>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$typeref-print"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test="$current_start >= $start">
- <xsl:if test="$current_start!=count($typeref/*)">, </xsl:if>
- </xsl:if>
-
- <xsl:choose>
- <xsl:when test="$current_start != count($typeref/*)">
- <xsl:call-template name="unparse-operator-definition">
- <xsl:with-param name="typeref" select="$typeref"/>
- <xsl:with-param name="operator_nodeset" select="$operator_nodeset"/>
- <xsl:with-param name="current_start" select="$current_start + 1"/>
- <xsl:with-param name="my_priority" select="$my_priority"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$new_notations"/>
- <xsl:with-param name="ignore-cv" select="$ignore-cv"/>
- <xsl:with-param name="self" select="$self"/>
- <xsl:with-param name="use-code-block" select="$use-code-block"/>
- <xsl:with-param name="print-updated-notation" select="$print-updated-notation"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="unparse-operator-definition">
- <xsl:with-param name="typeref" select="$typeref"/>
- <xsl:with-param name="operator_nodeset" select="$op_rest"/>
- <xsl:with-param name="my_priority" select="$my_priority"/>
- <xsl:with-param name="definition_list" select="$definition_list"/>
- <xsl:with-param name="notations" select="$new_notations"/>
- <xsl:with-param name="ignore-cv" select="$ignore-cv"/>
- <xsl:with-param name="self" select="$self"/>
- <xsl:with-param name="use-code-block" select="$use-code-block"/>
- <xsl:with-param name="const-if-not-mutable-value" select="$const-if-not-mutable-value"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
-
- <xsl:otherwise>Invalid tag in operator definition: <xsl:value-of select="name($op_current)"/></xsl:otherwise>
-
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="add-typename">
- <!-- Adds typename to the front of a string if it is necessary. -->
- <xsl:param name="type"/> <!-- string to prepend to -->
- <xsl:param name="params" select="/concept/param | /concept/define-type | /concept/associated-type"/>
- <!-- nodeset of param tags for concept -->
- <!-- associated types are assumed to be dependent -->
- <xsl:param name="really-do-it"/> <!-- really change anything? -->
-
- <xsl:variable name="type-after-last-scope">
- <xsl:call-template name="substring-before-last">
- <xsl:with-param name="string" select="$type"/>
- <xsl:with-param name="to-find" select="'::'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="tokenized-type-after-last-scope">
- <xsl:call-template name="rough-tokenize">
- <xsl:with-param name="string" select="$type-after-last-scope"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$really-do-it and boolean($params[contains($tokenized-type-after-last-scope, concat(' ', @name, ' '))])">
- <!-- If the tokenized string contains any of the param names in a
- token by itself, return true. Return false otherwise -->
- <xsl:comment/>typename <xsl:value-of select="$type"/><xsl:comment/>
- </xsl:when>
- <xsl:otherwise><xsl:value-of select="$type"/></xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="substring-before-last">
- <xsl:param name="string"/>
- <xsl:param name="to-find"/>
- <xsl:param name="string-processed-so-far"/> <!-- internal -->
- <!-- Find the substring of $string before the last occurrance of
- $to-find, returning '' if it was not found. -->
-
- <xsl:choose>
- <xsl:when test="contains($string, $to-find)">
- <xsl:call-template name="substring-before-last">
- <xsl:with-param name="string" select="substring-after($string, $to-find)"/>
- <xsl:with-param name="to-find" select="$to-find"/>
- <xsl:with-param name="string-processed-so-far" select="concat($string-processed-so-far, substring-before($string, $to-find), $to-find)"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:value-of select="substring($string-processed-so-far, 1, string-length($string-processed-so-far)-(string-length($to-find)))"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="substring-after-last">
- <xsl:param name="string"/>
- <xsl:param name="to-find"/>
- <!-- Find the substring of $string after the last occurrance of
- $to-find, returning the original string if it was not found. -->
-
- <xsl:choose>
- <xsl:when test="contains($string, $to-find)">
- <xsl:call-template name="substring-after-last">
- <xsl:with-param name="string" select="substring-after($string, $to-find)"/>
- <xsl:with-param name="to-find" select="$to-find"/>
- </xsl:call-template>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:value-of select="$string"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="rough-tokenize">
- <xsl:param name="string"/>
- <!-- Do a rough tokenization of the string. Right now, just translate
- all non-token-chars to spaces, normalize-space the result, and prepend
- and append spaces. -->
-
- <xsl:value-of select="concat(' ', normalize-space(translate($string, '<>,./?;:[]{}-=\\_+|!@#$%^&*()', ' ')), ' ')"/>
- </xsl:template>
-</xsl:stylesheet>
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+<xsl:stylesheet exclude-result-prefixes="d"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
- xmlns:exsl="http://exslt.org/common"
- exclude-result-prefixes="exsl d"
- version="1.0">
+version="1.0">
<!-- Import the HTML chunking stylesheet -->
<!-- ==================================================================== -->
<xsl:template name="navig.content">
- <xsl:param name="direction" select="next"/>
+ <xsl:param name="direction" select="d:next"/>
<xsl:variable name="navtext">
<xsl:choose>
<xsl:when test="$direction = 'prev'">
http://www.boost.org/LICENSE_1_0.txt)
-->
-<xsl:stylesheet version = "1.0"
+<xsl:stylesheet exclude-result-prefixes="d"
+ version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
- xmlns:d="http://docbook.org/ns/docbook"
- xmlns:exsl="http://exslt.org/common"
- exclude-result-prefixes="exsl d"
+xmlns:d="http://docbook.org/ns/docbook"
>
<!-- needed for calsTable template -->
<xsl:import
- href="http://docbook.sourceforge.net/release/xsl-ns/current/html/formal.xsl"/>
+ href="http://docbook.sourceforge.net/release/xsl/current/html/formal.xsl"/>
<!--
Override the behaviour of some DocBook elements for better
integration with the new look & feel.
-->
- <xsl:template match = "programlisting[ancestor::informaltable]">
+ <xsl:template match = "d:programlisting[ancestor::d:informaltable]">
<pre class = "table-{name(.)}"><xsl:apply-templates/></pre>
</xsl:template>
- <xsl:template match = "refsynopsisdiv">
+ <xsl:template match = "d:refsynopsisdiv">
<h2 class = "{name(.)}-title">Synopsis</h2>
<div class = "{name(.)}"><xsl:apply-templates/></div>
</xsl:template>
<!-- table: remove border = '1' -->
- <xsl:template match = "table|informaltable">
+ <xsl:template match = "d:table|d:informaltable">
<xsl:choose>
- <xsl:when test = "self::table and tgroup|mediaobject|graphic">
+ <xsl:when test = "self::d:table and d:tgroup|d:mediaobject|d:graphic">
<xsl:apply-imports/>
- </xsl:when><xsl:when test = "self::informaltable and tgroup|mediaobject|graphic">
+ </xsl:when><xsl:when test = "self::d:informaltable and d:tgroup|d:mediaobject|d:graphic">
<xsl:call-template name = "informal.object">
<xsl:with-param name = "class"><xsl:choose>
<xsl:when test = "@tabstyle">
</xsl:choose>
</xsl:template>
- <xsl:template match = "tgroup" name = "tgroup">
+ <xsl:template match = "d:tgroup" name = "tgroup">
<xsl:variable name="summary"><xsl:call-template name="dbhtml-attribute">
<xsl:with-param name="pis" select="processing-instruction('dbhtml')"/>
<xsl:with-param name="attribute" select="'table-summary'"/>
<table class = "table">
<xsl:choose>
- <xsl:when test="../textobject/phrase">
+ <xsl:when test="../d:textobject/d:phrase">
<xsl:attribute name="summary">
- <xsl:value-of select="../textobject/phrase"/>
+ <xsl:value-of select="../d:textobject/d:phrase"/>
</xsl:attribute>
</xsl:when><xsl:when test="$summary != ''">
<xsl:attribute name="summary">
<xsl:value-of select="$summary"/>
</xsl:attribute>
- </xsl:when><xsl:when test="../title">
+ </xsl:when><xsl:when test="../d:title">
<xsl:attribute name="summary">
- <xsl:value-of select="string(../title)"/>
+ <xsl:value-of select="string(../d:title)"/>
</xsl:attribute>
</xsl:when>
<xsl:otherwise/>
</xsl:otherwise>
</xsl:choose>
- <xsl:apply-templates select="thead"/>
- <xsl:apply-templates select="tfoot"/>
- <xsl:apply-templates select="tbody"/>
+ <xsl:apply-templates select="d:thead"/>
+ <xsl:apply-templates select="d:tfoot"/>
+ <xsl:apply-templates select="d:tbody"/>
- <xsl:if test=".//footnote"><tbody class="footnotes">
+ <xsl:if test=".//d:footnote"><tbody class="footnotes">
<tr><td colspan="{@cols}">
- <xsl:apply-templates select=".//footnote" mode="table.footnote.mode"/>
+ <xsl:apply-templates select=".//d:footnote" mode="table.footnote.mode"/>
</td></tr>
</tbody></xsl:if>
</table>
<xsl:with-param name="toc-context" select="$toc-context"/>
<xsl:with-param name="toc.title.p" select="$toc.title.p"/>
<xsl:with-param name="nodes" select="
- section|sect1|sect2|sect3|sect4|sect5|
- bridgehead[$bridgehead.in.toc != 0]
+ d:section|d:sect1|d:sect2|d:sect3|d:sect4|d:sect5|
+ d:bridgehead[$bridgehead.in.toc != 0]
"/>
</xsl:call-template>
</xsl:template>
<!-- When there is both a title and a caption for a table, only use the
title. -->
- <xsl:template match="table" mode="title.markup">
+ <xsl:template match="d:table" mode="title.markup">
<xsl:param name="allow-anchors" select="0"/>
- <xsl:apply-templates select="(title|caption)[1]" mode="title.markup">
+ <xsl:apply-templates select="(d:title|d:caption)[1]" mode="title.markup">
<xsl:with-param name="allow-anchors" select="$allow-anchors"/>
</xsl:apply-templates>
</xsl:template>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xi="http://www.w3.org/2001/XInclude"
- version="1.0">
- <xsl:include href="reference.xsl"/>
-
- <xsl:output method="xml"
- doctype-public="-//OASIS//DTD DocBook XML V4.2//EN"
- doctype-system="http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"/>
-
- <!-- The maximum number of columns allowed in preformatted text -->
- <xsl:param name="max-columns" select="78"/>
-
- <!-- The root of the Boost directory -->
- <xsl:param name="boost.root" select="'../..'"/>
-
- <!-- A space-separated list of libraries to include in the
- output. If this list is empty, all libraries will be included. -->
- <xsl:param name="boost.include.libraries" select="''"/>
-
- <!-- Whether to rewrite relative URL's to point to the website -->
- <xsl:param name="boost.url.prefix"/>
-
- <!-- A space-separated list of xml elements in the input file for which
- whitespace should be preserved -->
- <xsl:preserve-space elements="*"/>
-
- <!-- The root for boost headers -->
- <xsl:param name="boost.header.root">
- <xsl:if test="$boost.url.prefix">
- <xsl:value-of select="$boost.url.prefix"/>
- <xsl:text>/</xsl:text>
- </xsl:if>
- <xsl:value-of select="$boost.root"/>
- </xsl:param>
-
- <!-- The prefix for 'boost:' links. -->
- <xsl:variable name="boost.protocol.text">
- <xsl:if test="($boost.url.prefix != '') and (contains($boost.root, '://') = 0)">
- <xsl:value-of select="concat($boost.url.prefix, '/', $boost.root)"/>
- </xsl:if>
- <xsl:if test="($boost.url.prefix = '') or contains($boost.root, '://')">
- <xsl:value-of select="$boost.root"/>
- </xsl:if>
- </xsl:variable>
-
- <xsl:template match="library-reference">
- <xsl:choose>
- <xsl:when test="ancestor::library-reference">
- <xsl:apply-templates/>
- </xsl:when>
- <xsl:otherwise>
- <section>
- <xsl:choose>
- <xsl:when test="@id">
- <xsl:attribute name="id">
- <xsl:value-of select="@id"/>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="ancestor::library/attribute::id">
- <xsl:attribute name="id">
- <xsl:value-of select="ancestor::library/attribute::id"/>
- <xsl:text>.reference</xsl:text>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
- <xsl:if test="not(title)">
- <title>
- <xsl:text>Reference</xsl:text>
- </title>
- </xsl:if>
-
- <xsl:if test="concept">
- <section>
- <xsl:choose>
- <xsl:when test="@id">
- <xsl:attribute name="id">
- <xsl:value-of select="@id"/>
- <xsl:text>.concepts</xsl:text>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="ancestor::library/attribute::id">
- <xsl:attribute name="id">
- <xsl:value-of select="ancestor::library/attribute::id"/>
- <xsl:text>.concepts</xsl:text>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
-
- <title>Concepts</title>
-
- <itemizedlist>
- <xsl:for-each select="concept">
- <listitem>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="text" select="@name"/>
- </xsl:call-template>
- </listitem>
- </xsl:for-each>
- </itemizedlist>
- </section>
- </xsl:if>
-
- <xsl:apply-templates/>
- </section>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="header">
- <xsl:if test="*">
- <section>
- <xsl:attribute name="id">
- <xsl:call-template name="generate.id"/>
- </xsl:attribute>
-
- <title>
- <xsl:text>Header <</xsl:text>
- <ulink>
- <xsl:attribute name="url">
- <xsl:value-of select="$boost.header.root"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="@name"/>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </ulink>
- <xsl:text>></xsl:text>
- </title>
-
- <xsl:apply-templates select="para|section" mode="annotation"/>
-
- <xsl:if test="macro">
- <xsl:call-template name="synopsis">
- <xsl:with-param name="text">
- <xsl:apply-templates mode="synopsis" select="macro">
- <xsl:with-param name="indentation" select="0"/>
- </xsl:apply-templates>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="descendant::class|descendant::struct|descendant::union
- |descendant::function|descendant::free-function-group
- |descendant::overloaded-function|descendant::enum
- |descendant::typedef">
- <xsl:call-template name="synopsis">
- <xsl:with-param name="text">
- <xsl:apply-templates mode="synopsis"
- select="namespace|class|struct|union
- |function|free-function-group
- |overloaded-function|enum
- |typedef">
- <xsl:with-param name="indentation" select="0"/>
- </xsl:apply-templates>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:apply-templates mode="namespace-reference"/>
- </section>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="header" mode="generate.id">
- <xsl:text>header.</xsl:text>
- <xsl:value-of select="translate(@name, '/.', '._')"/>
- </xsl:template>
-
- <xsl:template match="*" mode="passthrough">
- <xsl:copy-of select="."/>
- </xsl:template>
-
- <!-- Syntax highlighting -->
- <xsl:template name="highlight-keyword">
- <xsl:param name="keyword"/>
- <xsl:choose>
- <xsl:when test="$boost.syntax.highlight='1'">
- <emphasis role="bold"><xsl:value-of select="$keyword"/></emphasis>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$keyword"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="highlight-comment">
- <xsl:param name="text"/>
- <emphasis><xsl:copy-of select="$text"/></emphasis>
- </xsl:template>
-
- <xsl:template name="monospaced">
- <xsl:param name="text"/>
- <computeroutput><xsl:value-of select="$text"/></computeroutput>
- </xsl:template>
-
- <!-- Linking -->
- <xsl:template match="ulink">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:attribute name="url">
- <xsl:choose>
- <xsl:when test="starts-with(@url, 'boost:/')">
- <xsl:value-of select="concat($boost.protocol.text, substring-after(@url, 'boost:'))"/>
- </xsl:when>
- <xsl:when test="starts-with(@url, 'boost:')">
- <xsl:value-of select="concat($boost.protocol.text, '/', substring-after(@url, 'boost:'))"/>
- </xsl:when>
- <xsl:when test="$boost.url.prefix != '' and not(contains(@url, ':') or starts-with(@url, '//'))">
- <xsl:value-of select="concat($boost.url.prefix, '/', @url)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@url"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <xsl:apply-templates/>
- </xsl:copy>
- </xsl:template>
- <xsl:template name="internal-link">
- <xsl:param name="to"/>
- <xsl:param name="text"/>
- <xsl:param name="highlight" select="false()"/>
-
- <link linkend="{$to}">
- <xsl:if test="$highlight">
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="$text"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not($highlight)">
- <xsl:value-of select="string($text)"/>
- </xsl:if>
- </link>
- </xsl:template>
-
- <xsl:template name="anchor">
- <xsl:param name="to"/>
- <xsl:param name="text"/>
- <xsl:param name="highlight" select="false()"/>
-
- <anchor id="{$to}"/>
- <xsl:if test="$highlight">
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="$text"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not($highlight)">
- <xsl:value-of select="$text"/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="link-or-anchor">
- <xsl:param name="to"/>
- <xsl:param name="text"/>
-
- <!-- True if we should create an anchor, otherwise we will create
- a link. If you require more control (e.g., with the possibility of
- having no link or anchor), set link-type instead: if present, it
- takes precedence. -->
- <xsl:param name="is-anchor"/>
-
- <!-- 'anchor', 'link', or 'none' -->
- <xsl:param name="link-type">
- <xsl:choose>
- <xsl:when test="$is-anchor">
- <xsl:text>anchor</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>link</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
-
- <xsl:param name="highlight" select="false()"/>
-
- <xsl:choose>
- <xsl:when test="$link-type='anchor'">
- <xsl:call-template name="anchor">
- <xsl:with-param name="to" select="$to"/>
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$link-type='link'">
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to" select="$to"/>
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$link-type='none'">
- <xsl:if test="$highlight">
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="$text"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="not($highlight)">
- <xsl:value-of select="$text"/>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>
-Error: XSL template 'link-or-anchor' called with invalid link-type '<xsl:value-of select="$link-type"/>'
- </xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="separator"/>
-
- <xsl:template name="reference-documentation">
- <xsl:param name="name"/>
- <xsl:param name="refname"/>
- <xsl:param name="purpose"/>
- <xsl:param name="anchor"/>
- <xsl:param name="synopsis"/>
- <xsl:param name="text"/>
-
- <refentry id="{$anchor}">
- <refmeta>
- <refentrytitle><xsl:value-of select="$name"/></refentrytitle>
- <manvolnum>3</manvolnum>
- </refmeta>
- <refnamediv>
- <refname><xsl:value-of select="$refname"/></refname>
- <refpurpose>
- <xsl:apply-templates mode="purpose" select="$purpose"/>
- </refpurpose>
- </refnamediv>
- <refsynopsisdiv>
- <synopsis>
- <xsl:copy-of select="$synopsis"/>
- </synopsis>
- </refsynopsisdiv>
- <xsl:if test="not(string($text)='')">
- <refsect1>
- <title>Description</title>
- <xsl:copy-of select="$text"/>
- </refsect1>
- </xsl:if>
- </refentry>
- </xsl:template>
-
- <xsl:template name="member-documentation">
- <xsl:param name="name"/>
- <xsl:param name="text"/>
-
- <refsect2>
- <title><xsl:copy-of select="$name"/></title>
- <xsl:copy-of select="$text"/>
- </refsect2>
- </xsl:template>
-
- <xsl:template name="preformatted">
- <xsl:param name="text"/>
-
- <literallayout class="monospaced">
- <xsl:copy-of select="$text"/>
- </literallayout>
- </xsl:template>
-
- <xsl:template name="synopsis">
- <xsl:param name="text"/>
-
- <synopsis>
- <xsl:copy-of select="$text"/>
- </synopsis>
- </xsl:template>
-
- <!-- Fallthrough for DocBook elements -->
- <xsl:template match="*">
- <xsl:element name="{name(.)}">
- <xsl:for-each select="./@*">
- <xsl:choose>
- <xsl:when test="local-name(.)='last-revision'">
- <xsl:attribute
- name="rev:last-revision"
- namespace="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="{name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- <xsl:apply-templates/>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="code">
- <computeroutput>
- <xsl:apply-templates mode="annotation"/>
- </computeroutput>
- </xsl:template>
-
- <xsl:template match="bold">
- <emphasis role="bold">
- <xsl:apply-templates mode="annotation"/>
- </emphasis>
- </xsl:template>
-
- <xsl:template match="library">
- <xsl:if test="not(@html-only = 1) and
- ($boost.include.libraries='' or
- contains($boost.include.libraries, @id))">
- <chapter>
- <xsl:attribute name="id">
- <xsl:choose>
- <xsl:when test="@id">
- <xsl:value-of select="@id"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="generate.id"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
-
- <xsl:if test="@last-revision">
- <xsl:attribute
- name="rev:last-revision"
- namespace="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision">
- <xsl:value-of select="@last-revision"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:apply-templates/>
- </chapter>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="chapter">
- <xsl:if test="$boost.include.libraries=''">
- <chapter>
- <xsl:for-each select="./@*">
- <xsl:attribute name="{name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:for-each>
-
- <xsl:apply-templates/>
- </chapter>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="boostbook">
- <book><xsl:apply-templates/></book>
- </xsl:template>
-
- <xsl:template match="programlisting">
- <programlisting><xsl:apply-templates/></programlisting>
- </xsl:template>
-
- <!-- These DocBook elements have special meaning. Use the annotation mode -->
- <xsl:template match="classname|methodname|functionname|enumname|
- macroname|headername|globalname">
- <computeroutput>
- <xsl:apply-templates select="." mode="annotation"/>
- </computeroutput>
- </xsl:template>
-
- <xsl:template match="libraryname|conceptname">
- <xsl:apply-templates select="." mode="annotation"/>
- </xsl:template>
-
- <xsl:template match="description">
- <xsl:apply-templates mode="annotation"/>
- </xsl:template>
-
- <!-- Swallow using-namespace and using-class directives along with
- last-revised elements -->
- <xsl:template match="using-namespace|using-class|last-revised"/>
-
- <!-- If there is no "namespace-reference" mode, forward to
- "reference" mode -->
- <xsl:template match="*" mode="namespace-reference">
- <xsl:apply-templates select="." mode="reference"/>
- </xsl:template>
-
- <!-- Make the various blocks immediately below a "part" be
- "chapter"-s. Must also take into account turning
- chapters within chpaters into sections. -->
- <xsl:template match="part/part|part/article">
- <chapter>
- <xsl:for-each select="./@*">
- <xsl:attribute name="{name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:for-each>
- <xsl:apply-templates/>
- </chapter>
- </xsl:template>
- <xsl:template match="part/part/partinfo|part/article/articleinfo">
- <chapterinfo><xsl:apply-templates/></chapterinfo>
- </xsl:template>
- <xsl:template match="part/part/chapter|part/part/appendix">
- <section>
- <xsl:for-each select="./@*">
- <xsl:attribute name="{name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:for-each>
- <xsl:apply-templates/>
- </section>
- </xsl:template>
- <xsl:template match="part/part/chapter/chapterinfo|part/part/appendix/appendixinfo">
- <sectioninfo><xsl:apply-templates/></sectioninfo>
- </xsl:template>
-
- <!-- Header link comment to be inserted at the start of a reference page's
- synopsis -->
- <xsl:template name="header-link">
- <xsl:if test="ancestor::header">
- <xsl:call-template name="highlight-comment">
- <xsl:with-param name="text">
- <xsl:text>// In header: <</xsl:text>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="ancestor::header[1]"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text" select="ancestor::header[1]/@name" />
- </xsl:call-template>
- <xsl:text>> </xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-</xsl:stylesheet>
-
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:output method="xml" version="1.0" indent="yes" standalone="yes" />
-
- <xsl:template match="/">
- <doxygen>
- <xsl:attribute name="version">
- <xsl:choose>
- <xsl:when test="doxygen">
- <xsl:value-of select="doxygen/attribute::version"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="doxygenindex/attribute::version"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
-
- <!-- Load all doxgen generated xml files -->
- <xsl:for-each select="doxygen/compound">
- <xsl:variable name="id">
- <xsl:choose>
- <xsl:when test="@refid">
- <xsl:value-of select="@refid"/>
- </xsl:when>
- <xsl:when test="@id">
- <xsl:value-of select="@id"/>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="$id">
- <xsl:copy-of select="document( concat( $id, '.xml' ), / )/doxygen/*" />
- </xsl:if>
- </xsl:for-each>
- <xsl:for-each select="doxygenindex/compound">
- <xsl:variable name="id">
- <xsl:choose>
- <xsl:when test="@refid">
- <xsl:value-of select="@refid"/>
- </xsl:when>
- <xsl:when test="@id">
- <xsl:value-of select="@id"/>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="$id">
- <xsl:copy-of select="document( concat($id, '.xml'), /)/doxygen/*" />
- </xsl:if>
- </xsl:for-each>
- </doxygen>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:import href="../lookup.xsl"/>
-
- <!-- Set this parameter to a space-separated list of headers that
- will be included in the output (all others are ignored). If this
- parameter is omitted or left as the empty string, all headers will
- be output. -->
- <xsl:param name="boost.doxygen.headers" select="''"/>
-
- <!-- The common prefix to all headers -->
- <xsl:param name="boost.doxygen.header.prefix" select="'boost'"/>
-
- <!-- The text that Doxygen places in overloaded functions. Damn them
- for forcing us to compare TEXT just to figure out what's overloaded
- and what isn't. -->
- <xsl:param name="boost.doxygen.overload">
- This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
- </xsl:param>
-
- <!-- The namespace used to identify code that should not be
- processed at all. -->
- <xsl:param name="boost.doxygen.detailns">detail</xsl:param>
-
- <!-- The substring used to identify unspecified types that we can't
- mask from within Doxygen. This is a hack (big surprise). -->
- <xsl:param name="boost.doxygen.detail"><xsl:value-of select="$boost.doxygen.detailns"/>::</xsl:param>
-
- <!-- The title that will be used for the BoostBook library reference emitted.
- If left blank, BoostBook will assign a default title. -->
- <xsl:param name="boost.doxygen.reftitle" select="''"/>
-
- <!-- The id used for the library-reference. By default, it is the normalized
- form of the reftitle. -->
- <xsl:param name="boost.doxygen.refid" select="''"/>
-
- <!-- The directory into which png files corresponding to LaTeX formulas will be found. -->
- <xsl:param name="boost.doxygen.formuladir" select="'images/'"/>
-
- <xsl:output method="xml" indent="no" standalone="yes"/>
-
- <xsl:key name="compounds-by-kind" match="compounddef" use="@kind"/>
- <xsl:key name="compounds-by-id" match="compounddef" use="@id"/>
- <xsl:key name="members-by-id" match="memberdef" use="@id" />
-
- <xsl:strip-space elements="briefdescription detaileddescription inbodydescription"/>
-
- <xsl:template name="kind-error-message">
- <xsl:param name="message"/>
-
- <xsl:variable name="location" select=".//location[1]" />
- <xsl:variable name="name" select="./name" />
-
- <xsl:message>
- <xsl:if test="$location">
- <xsl:value-of select="concat($location/@file, ':', $location/@line, ': ')" />
- </xsl:if>
- <xsl:value-of select="concat($message, ' with kind=', @kind)" />
- <xsl:if test="$name">
- <xsl:value-of select="concat(' (name=', $name, ') ')" />
- </xsl:if>
- </xsl:message>
- </xsl:template>
-
- <!-- translate-name: given a string, return a string suitable for use as a refid -->
- <xsl:template name="translate-name">
- <xsl:param name="name"/>
- <xsl:value-of select="translate($name,
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ~!%^&*()[].,<>|/ +-=',
- 'abcdefghijklmnopqrstuvwxyz_____________________')"/>
- </xsl:template>
-
- <xsl:template match="/">
- <xsl:apply-templates select="doxygen"/>
- </xsl:template>
-
- <xsl:template match="doxygen">
- <library-reference>
- <xsl:if test="string($boost.doxygen.reftitle) != ''">
- <!-- when a reference section has a reftitle, also give it a refid. The id
- is determined by the boost.doxygen.refid param, which defaults to a
- normalized form of the boost.doxygen.reftitle -->
- <xsl:attribute name="id">
- <xsl:choose>
- <xsl:when test="string($boost.doxygen.refid) != ''">
- <xsl:value-of select="$boost.doxygen.refid"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="translate-name">
- <xsl:with-param name="name" select="$boost.doxygen.reftitle"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
-
- <title><xsl:copy-of select="$boost.doxygen.reftitle"/></title>
- </xsl:if>
- <xsl:apply-templates select="key('compounds-by-kind', 'file')"/>
- </library-reference>
- </xsl:template>
-
- <xsl:template match="compounddef">
- <!-- The set of innernamespace nodes that limits our search -->
- <xsl:param name="with-namespace-refs"/>
- <xsl:param name="in-file"/>
-
- <xsl:choose>
- <!-- If the string INTERNAL ONLY is in the description, don't
- emit this entity. This hack is necessary because Doxygen doesn't
- tell us what is \internal and what isn't. -->
- <xsl:when test="contains(detaileddescription/para, 'INTERNAL ONLY')"/>
- <xsl:when test="contains(briefdescription/para, 'INTERNAL ONLY')"/>
- <xsl:when test="contains(inbodydescription/para, 'INTERNAL ONLY')"/>
-
- <xsl:when test="@kind='file'">
- <xsl:call-template name="file"/>
- </xsl:when>
- <xsl:when test="@kind='namespace'">
- <xsl:call-template name="namespace">
- <xsl:with-param name="with-namespace-refs"
- select="$with-namespace-refs"/>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="@kind='class'">
- <xsl:call-template name="class">
- <xsl:with-param name="class-key" select="'class'"/>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="@kind='struct'">
- <xsl:call-template name="class">
- <xsl:with-param name="class-key" select="'struct'"/>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="@kind='union'">
- <xsl:call-template name="class">
- <xsl:with-param name="class-key" select="'union'"/>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="kind-error-message">
- <xsl:with-param name="message" select="'Cannot handle compounddef'"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="namespace">
- <!-- The set of innernamespace nodes that limits our search -->
- <xsl:param name="with-namespace-refs"/>
- <xsl:param name="in-file"/>
-
- <xsl:variable name="fullname" select="string(compoundname)"/>
-
- <xsl:if test="$with-namespace-refs[string(text())=$fullname]
- and not(contains($fullname, $boost.doxygen.detailns))">
- <!-- Namespace without the prefix -->
- <xsl:variable name="rest">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name" select="compoundname"/>
- </xsl:call-template>
- </xsl:variable>
-
- <!-- Grab only the namespace name, not any further nested namespaces -->
- <xsl:variable name="name">
- <xsl:choose>
- <xsl:when
- test="contains($rest, '::')">
- <xsl:value-of select="substring-before($rest, '::')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$rest"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <namespace>
- <xsl:attribute name="name">
- <xsl:value-of select="$name"/>
- </xsl:attribute>
-
- <xsl:apply-templates>
- <xsl:with-param name="with-namespace-refs"
- select="$with-namespace-refs"/>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </namespace>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="class">
- <xsl:param name="class-key"/>
- <xsl:param name="in-file"/>
- <xsl:param name="with-namespace-refs"/>
-
- <xsl:if test="contains(string(location/attribute::file),
- concat('/', $in-file)) ">
-
- <!-- The short name of this class -->
- <xsl:variable name="name-with-spec">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name" select="compoundname"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="name">
- <xsl:choose>
- <xsl:when test="contains($name-with-spec, '<')">
- <xsl:value-of select="substring-before($name-with-spec, '<')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$name-with-spec"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="specialization">
- <xsl:if test="contains($name-with-spec, '<')">
- <xsl:variable name="spec-with-gt"
- select="substring-after($name-with-spec, '<')"/>
- <xsl:value-of select="substring($spec-with-gt, 1,
- string-length($spec-with-gt)-1)"/>
- </xsl:if>
- </xsl:variable>
-
- <xsl:variable name="actual-class-key">
- <xsl:value-of select="$class-key"/>
- <xsl:if test="string-length($specialization) > 0">
- <xsl:text>-specialization</xsl:text>
- </xsl:if>
- </xsl:variable>
-
- <xsl:element name="{$actual-class-key}">
- <xsl:attribute name="name">
- <xsl:value-of select="$name"/>
- </xsl:attribute>
-
- <xsl:apply-templates select="templateparamlist" mode="template"/>
-
- <xsl:if test="string-length($specialization) > 0">
- <specialization>
- <xsl:call-template name="specialization">
- <xsl:with-param name="specialization" select="$specialization"/>
- </xsl:call-template>
- </specialization>
- </xsl:if>
-
- <xsl:apply-templates select="basecompoundref" mode="inherit"/>
-
- <xsl:apply-templates select="briefdescription" mode="passthrough"/>
- <xsl:apply-templates select="detaileddescription" mode="passthrough"/>
- <xsl:apply-templates select="inbodydescription" mode="passthrough"/>
- <xsl:apply-templates/>
- </xsl:element>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="enum">
- <xsl:param name="in-file"/>
-
- <xsl:if test="contains(string(location/attribute::file),
- concat('/', $in-file))">
- <xsl:variable name="name">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name" select="name"/>
- </xsl:call-template>
- </xsl:variable>
-
- <enum>
- <xsl:attribute name="name">
- <xsl:value-of select="$name"/>
- </xsl:attribute>
-
- <xsl:apply-templates select="enumvalue"/>
-
- <xsl:apply-templates select="briefdescription" mode="passthrough"/>
- <xsl:apply-templates select="detaileddescription" mode="passthrough"/>
- <xsl:apply-templates select="inbodydescription" mode="passthrough"/>
- </enum>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="enumvalue">
- <xsl:choose>
- <!-- If the string INTERNAL ONLY is in the description, don't
- emit this entity. This hack is necessary because Doxygen doesn't
- tell us what is \internal and what isn't. -->
- <xsl:when test="contains(detaileddescription/para, 'INTERNAL ONLY')"/>
- <xsl:when test="contains(briefdescription/para, 'INTERNAL ONLY')"/>
- <xsl:when test="contains(inbodydescription/para, 'INTERNAL ONLY')"/>
- <xsl:otherwise>
-
- <enumvalue>
- <xsl:attribute name="name">
- <xsl:value-of select="name"/>
- </xsl:attribute>
-
- <xsl:if test="initializer">
- <default>
- <xsl:apply-templates select="initializer/*|initializer/text()" mode="passthrough"/>
- </default>
- </xsl:if>
-
- <xsl:apply-templates select="briefdescription" mode="passthrough"/>
- <xsl:apply-templates select="detaileddescription" mode="passthrough"/>
- <xsl:apply-templates select="inbodydescription" mode="passthrough"/>
- </enumvalue>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="doxygen.include.header.rec">
- <xsl:param name="name"/>
- <xsl:param name="header-list" select="$boost.doxygen.headers"/>
-
- <xsl:choose>
- <xsl:when test="contains($header-list, ' ')">
- <xsl:variable name="header"
- select="substring-before($header-list, ' ')"/>
- <xsl:variable name="rest" select="substring-after($header-list, ' ')"/>
-
- <xsl:choose>
- <xsl:when test="$name=$header">
- <xsl:text>yes</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="doxygen.include.header.rec">
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="header-list" select="$rest"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$name=$header-list">
- <xsl:text>yes</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="doxygen.include.header">
- <xsl:param name="name"/>
-
- <xsl:if test="$boost.doxygen.headers=''">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- <xsl:if test="not($boost.doxygen.headers='')">
- <xsl:call-template name="doxygen.include.header.rec">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="file">
- <xsl:variable name="include-header">
- <xsl:call-template name="doxygen.include.header">
- <xsl:with-param name="name" select="string(compoundname)"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:if test="$include-header='yes'">
- <header>
- <xsl:attribute name="name">
- <xsl:call-template name="shorten.header.name">
- <xsl:with-param name="header" select="location/attribute::file"/>
- </xsl:call-template>
- </xsl:attribute>
-
- <xsl:if test="briefdescription/*|detaileddescription/*|inbodydescription/*">
- <xsl:apply-templates select="briefdescription/*" mode="passthrough"/>
- <xsl:apply-templates select="detaileddescription/*" mode="passthrough"/>
- <xsl:apply-templates select="inbdoydescription/*" mode="passthrough"/>
- </xsl:if>
-
- <xsl:apply-templates mode="toplevel">
- <xsl:with-param name="with-namespace-refs"
- select="innernamespace"/>
- <xsl:with-param name="in-file" select="string(compoundname)"/>
- </xsl:apply-templates>
- </header>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="shorten.header.name">
- <xsl:param name="header"/>
-
- <xsl:variable name="prefix">
- <xsl:value-of select="concat($boost.doxygen.header.prefix, '/')"/>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="contains($header, $prefix)">
- <xsl:variable name="rest" select="substring-after($header, $prefix)"/>
- <xsl:choose>
- <xsl:when test="contains($rest, $prefix)">
- <xsl:call-template name="shorten.header.name">
- <xsl:with-param name="header" select="$rest"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$prefix"/>
- <xsl:value-of select="$rest"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$header"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-
- <xsl:template match="innernamespace">
- <xsl:param name="with-namespace-refs"/>
- <xsl:param name="in-file"/>
-
- <xsl:apply-templates select="key('compounds-by-id', @refid)">
- <xsl:with-param name="with-namespace-refs"
- select="$with-namespace-refs"/>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="innernamespace" mode="toplevel">
- <!-- The set of innernamespace nodes that limits our search -->
- <xsl:param name="with-namespace-refs"/>
- <xsl:param name="in-file"/>
-
- <!-- The full name of the namespace we are referring to -->
- <xsl:variable name="fullname"
- select="string(key('compounds-by-id', @refid)/compoundname)"/>
-
- <!-- Only pass on top-level namespaces -->
- <xsl:if test="not(contains($fullname, '::'))">
- <xsl:apply-templates select="key('compounds-by-id', @refid)">
- <xsl:with-param name="with-namespace-refs"
- select="$with-namespace-refs"/>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="sectiondef" mode="toplevel">
- <xsl:param name="in-file" select="''"/>
-
- <xsl:apply-templates mode="toplevel"
- select="memberdef[generate-id() =
- generate-id(key('members-by-id', @id))]">
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="memberdef" mode="toplevel">
- <xsl:param name="with-namespace-refs"/>
- <xsl:param name="in-file"/>
-
- <xsl:choose>
- <!-- If the string INTERNAL ONLY is in the description, don't
- emit this entity. This hack is necessary because Doxygen doesn't
- tell us what is \internal and what isn't. -->
- <xsl:when test="contains(detaileddescription/para, 'INTERNAL ONLY')"/>
- <xsl:when test="contains(briefdescription/para, 'INTERNAL ONLY')"/>
- <xsl:when test="contains(inbodydescription/para, 'INTERNAL ONLY')"/>
-
- <xsl:when test="@kind='define'">
- <macro>
- <xsl:attribute name="name">
- <xsl:value-of select="name/text()"/>
- </xsl:attribute>
-
- <xsl:if test="param">
- <xsl:attribute name="kind">
- <xsl:value-of select="'functionlike'"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:for-each select="param">
- <macro-parameter>
- <xsl:attribute name="name">
- <xsl:value-of select="defname/text()"/>
- </xsl:attribute>
- </macro-parameter>
- </xsl:for-each>
-
- <xsl:apply-templates select="briefdescription" mode="passthrough"/>
- <xsl:apply-templates select="detaileddescription" mode="passthrough"/>
- <xsl:apply-templates select="inbodydescription" mode="passthrough"/>
- </macro>
- </xsl:when>
-
- <xsl:when test="@kind='function'">
- <xsl:call-template name="function" />
- </xsl:when>
-
- <xsl:when test="@kind='typedef'">
- <xsl:call-template name="typedef" />
- </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:when>
-
- <xsl:otherwise>
- <xsl:call-template name="kind-error-message">
- <xsl:with-param name="message" select="'Cannot handle toplevel memberdef element'"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="innerclass" mode="toplevel">
- <xsl:param name="with-namespace-refs"/>
- <xsl:param name="in-file"/>
-
- <xsl:variable name="name">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name" select="."/>
- </xsl:call-template>
- </xsl:variable>
-
- <!-- Only process this if it is indeed global -->
- <xsl:if test=".=$name">
- <xsl:apply-templates select="key('compounds-by-id', @refid)">
- <xsl:with-param name="with-namespace-refs"
- select="$with-namespace-refs"/>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="innerclass">
- <xsl:param name="with-namespace-refs"/>
- <xsl:param name="in-file"/>
-
- <xsl:apply-templates select="key('compounds-by-id', @refid)">
- <xsl:with-param name="with-namespace-refs"
- select="$with-namespace-refs"/>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <!-- Classes -->
- <xsl:template match="templateparamlist" mode="template">
- <template>
- <xsl:apply-templates mode="template"/>
- </template>
- </xsl:template>
-
- <xsl:template match="param" mode="template">
- <xsl:choose>
- <xsl:when test="string(type)='class' or string(type)='typename'">
- <template-type-parameter>
- <xsl:attribute name="name">
- <xsl:value-of select="normalize-space(string(declname))"/>
- </xsl:attribute>
- <xsl:if test="defval">
- <default>
- <xsl:apply-templates select="defval/*|defval/text()"
- mode="passthrough"/>
- </default>
- </xsl:if>
- </template-type-parameter>
- </xsl:when>
- <!-- Doxygen 1.5.8 generates odd xml for template type parameters.
- This deals with that -->
- <xsl:when test="not(declname) and
- (starts-with(string(type), 'class ') or starts-with(string(type), 'typename '))">
- <template-type-parameter>
- <xsl:attribute name="name">
- <xsl:value-of select="normalize-space(substring-after(string(type), ' '))"/>
- </xsl:attribute>
- <xsl:if test="defval">
- <default>
- <xsl:apply-templates select="defval/*|defval/text()"
- mode="passthrough"/>
- </default>
- </xsl:if>
- </template-type-parameter>
- </xsl:when>
- <xsl:otherwise>
- <template-nontype-parameter>
- <xsl:attribute name="name">
- <xsl:value-of select="normalize-space(string(declname))"/>
- </xsl:attribute>
- <type>
- <xsl:apply-templates select="type"/>
- </type>
- <xsl:if test="defval">
- <default>
- <xsl:apply-templates select="defval/*|defval/text()"
- mode="passthrough"/>
- </default>
- </xsl:if>
- </template-nontype-parameter>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="templateparamlist"/>
-
- <!-- "Parse" a specialization from part of a name -->
- <xsl:template name="specialization">
- <xsl:param name="specialization"/>
-
- <xsl:choose>
- <xsl:when test="contains($specialization, ',')">
- <template-arg>
- <xsl:value-of
- select="normalize-space(substring-before($specialization, ','))"/>
- </template-arg>
- <xsl:call-template name="specialization">
- <xsl:with-param name="specialization"
- select="substring-after($specialization, ',')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <template-arg>
- <xsl:value-of select="normalize-space($specialization)"/>
- </template-arg>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Inheritance -->
- <xsl:template match="basecompoundref" mode="inherit">
- <xsl:choose>
- <xsl:when test="contains(string(.), $boost.doxygen.detail)"/>
- <xsl:otherwise>
- <inherit>
- <!-- Access specifier for inheritance -->
- <xsl:attribute name="access">
- <xsl:value-of select="@prot"/>
- </xsl:attribute>
- <!-- TBD: virtual vs. non-virtual inheritance -->
-
- <xsl:apply-templates mode="passthrough"/>
- </inherit>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="basecompoundref"/>
-
- <!-- Skip over sections: they aren't very useful at all -->
- <xsl:template match="sectiondef">
- <xsl:param name="in-file" select="''"/>
-
- <xsl:choose>
- <xsl:when test="@kind='public-static-func'">
- <!-- TBD: pass on the fact that these are static functions -->
- <method-group name="public static functions">
- <xsl:apply-templates>
- <xsl:with-param name="in-section" select="true()"/>
- </xsl:apply-templates>
- </method-group>
- </xsl:when>
- <xsl:when test="@kind='protected-static-func'">
- <!-- TBD: pass on the fact that these are static functions -->
- <method-group name="protected static functions">
- <xsl:apply-templates>
- <xsl:with-param name="in-section" select="true()"/>
- </xsl:apply-templates>
- </method-group>
- </xsl:when>
- <xsl:when test="@kind='private-static-func'">
- <!-- TBD: pass on the fact that these are static functions -->
- <method-group name="private static functions">
- <xsl:apply-templates>
- <xsl:with-param name="in-section" select="true()"/>
- </xsl:apply-templates>
- </method-group>
- </xsl:when>
- <xsl:when test="@kind='public-func'">
- <xsl:variable name="members" select="./memberdef"/>
- <xsl:variable name="num-internal-only">
- <xsl:value-of
- select="count($members[contains(detaileddescription/para,
- 'INTERNAL ONLY')])"/>
- </xsl:variable>
- <xsl:if test="$num-internal-only < count($members)">
- <method-group name="public member functions">
- <xsl:apply-templates>
- <xsl:with-param name="in-section" select="true()"/>
- </xsl:apply-templates>
- </method-group>
- <xsl:apply-templates/>
- </xsl:if>
- </xsl:when>
- <xsl:when test="@kind='protected-func'">
- <method-group name="protected member functions">
- <xsl:apply-templates>
- <xsl:with-param name="in-section" select="true()"/>
- </xsl:apply-templates>
- </method-group>
- <xsl:apply-templates/>
- </xsl:when>
- <xsl:when test="@kind='private-func'">
- <xsl:variable name="members" select="./memberdef"/>
- <xsl:variable name="num-internal-only">
- <xsl:value-of
- select="count($members[contains(detaileddescription/para,
- 'INTERNAL ONLY')])"/>
- </xsl:variable>
- <xsl:if test="$num-internal-only < count($members)">
- <method-group name="private member functions">
- <xsl:apply-templates>
- <xsl:with-param name="in-section" select="true()"/>
- </xsl:apply-templates>
- </method-group>
- </xsl:if>
- <xsl:apply-templates/>
- </xsl:when>
- <xsl:when test="@kind='friend'">
- <xsl:if test="./memberdef/detaileddescription/para or ./memberdef/briefdescription/para">
- <method-group name="friend functions">
- <xsl:apply-templates>
- <xsl:with-param name="in-section" select="true()"/>
- </xsl:apply-templates>
- </method-group>
- </xsl:if>
- </xsl:when>
- <xsl:when test="@kind='public-static-attrib' or @kind='public-attrib'">
- <xsl:apply-templates/>
- </xsl:when>
- <xsl:when test="@kind='public-type'">
- <xsl:apply-templates/>
- </xsl:when>
- <xsl:when test="@kind='private-type'">
- <!--skip private members-->
- </xsl:when>
- <xsl:when test="@kind='private-static-attrib' or @kind='private-attrib'">
- <!--skip private members-->
- </xsl:when>
- <xsl:when test="@kind='func'">
- <xsl:apply-templates>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="@kind='typedef'">
- <xsl:apply-templates>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="@kind='var'">
- <xsl:apply-templates>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="@kind='enum'">
- <xsl:apply-templates>
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="@kind='user-defined'">
- <xsl:apply-templates/>
- </xsl:when>
- <xsl:when test="@kind=''">
- <xsl:apply-templates select="memberdef[generate-id() =
- generate-id(key('members-by-id', @id))]">
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="kind-error-message">
- <xsl:with-param name="message" select="'Cannot handle sectiondef'"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Handle member definitions -->
- <xsl:template match="memberdef">
- <!-- True when we're inside a section -->
- <xsl:param name="in-section" select="false()"/>
- <xsl:param name="in-file" select="''"/>
-
- <xsl:choose>
- <!-- If the string INTERNAL ONLY is in the description, don't
- emit this entity. This hack is necessary because Doxygen doesn't
- tell us what is \internal and what isn't. -->
- <xsl:when test="contains(detaileddescription/para, 'INTERNAL ONLY')"/>
- <xsl:when test="contains(briefdescription/para, 'INTERNAL ONLY')"/>
- <xsl:when test="contains(inbodydescription/para, 'INTERNAL ONLY')"/>
-
- <xsl:when test="@kind='typedef'">
- <xsl:call-template name="typedef">
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="@kind='function'">
- <xsl:choose>
- <xsl:when test="ancestor::compounddef/attribute::kind='namespace'">
- <xsl:call-template name="function">
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <!-- We are in a class -->
- <!-- The name of the class we are in -->
- <xsl:variable name="in-class">
- <xsl:call-template name="strip-qualifiers">
- <xsl:with-param name="name"
- select="string(ancestor::compounddef/compoundname/text())"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="string(name/text())=$in-class">
- <xsl:if test="not ($in-section)">
- <xsl:call-template name="constructor"/>
- </xsl:if>
- </xsl:when>
- <xsl:when test="string(name/text())=concat('~',$in-class)">
- <xsl:if test="not ($in-section)">
- <xsl:call-template name="destructor"/>
- </xsl:if>
- </xsl:when>
- <xsl:when test="string(name/text())='operator='">
- <xsl:if test="not ($in-section)">
- <xsl:call-template name="copy-assignment"/>
- </xsl:if>
- </xsl:when>
- <xsl:when test="normalize-space(string(type))=''
- and contains(name/text(), 'operator ')">
- <xsl:if test="$in-section">
- <xsl:call-template name="conversion-operator"/>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="$in-section">
- <xsl:call-template name="method"/>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="@kind='friend'">
- <xsl:if test="./detaileddescription/para or ./briefdescription/para">
- <xsl:call-template name="method"/>
- </xsl:if>
- </xsl:when>
- <xsl:when test="@kind='enum'">
- <xsl:call-template name="enum">
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="@kind='variable'">
- <xsl:call-template name="variable">
- <xsl:with-param name="in-file" select="$in-file"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="kind-error-message">
- <xsl:with-param name="message" select="'Cannot handle memberdef element'"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Display typedefs -->
- <xsl:template name="typedef">
- <xsl:param name="in-file" select="''"/>
-
- <xsl:if test="contains(string(location/attribute::file),
- concat('/', $in-file))">
- <!-- TBD: Handle public/protected/private -->
- <typedef>
- <!-- Name of the type -->
- <xsl:attribute name="name">
- <xsl:value-of select="name/text()"/>
- </xsl:attribute>
-
- <xsl:apply-templates select="briefdescription" mode="passthrough"/>
- <xsl:apply-templates select="detaileddescription" mode="passthrough"/>
- <xsl:apply-templates select="inbodydescription" mode="passthrough"/>
-
- <type><xsl:apply-templates select="type"/></type>
- </typedef>
- </xsl:if>
- </xsl:template>
-
- <!-- Handle function parameters -->
- <xsl:template match="param" mode="function">
- <parameter>
- <!-- Parameter name -->
- <xsl:attribute name="name">
- <xsl:value-of select="normalize-space(declname/text())"/>
- </xsl:attribute>
-
- <!-- Parameter type -->
- <paramtype><xsl:apply-templates select="type"/></paramtype>
-
- <!-- Default argument -->
- <xsl:if test="defval">
- <default>
- <xsl:choose>
- <xsl:when test="contains(string(defval), $boost.doxygen.detail)">
- <emphasis>unspecified</emphasis>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="defval/*|defval/text()"
- mode="passthrough"/>
- </xsl:otherwise>
- </xsl:choose>
-
- </default>
- </xsl:if>
-
- <!-- Parameter description -->
- <xsl:variable name="name">
- <xsl:value-of select="normalize-space(declname/text())"/>
- </xsl:variable>
-
- <xsl:apply-templates select="../*[self::detaileddescription or self::inbodydescription]//parameterlist[attribute::kind='param']/*"
- mode="parameter.description">
- <xsl:with-param name="name">
- <xsl:value-of select="$name"/>
- </xsl:with-param>
- </xsl:apply-templates>
- </parameter>
- </xsl:template>
-
- <xsl:template match="parameteritem" mode="parameter.description">
- <!-- The parameter name we are looking for -->
- <xsl:param name="name"/>
-
- <xsl:if test="string(parameternamelist/parametername) = $name">
- <description>
- <xsl:apply-templates select="parameterdescription/para" mode="passthrough"/>
- </description>
- </xsl:if>
- </xsl:template>
-
- <!-- For older versions of Doxygen, which didn't use parameteritem -->
- <xsl:template match="parameterdescription" mode="parameter.description">
- <!-- The parameter name we are looking for -->
- <xsl:param name="name"/>
-
- <!-- The parametername node associated with this description -->
- <xsl:variable name="name-node" select="preceding-sibling::*[1]"/>
-
- <xsl:if test="string($name-node/text()) = $name">
- <description>
- <xsl:apply-templates select="para" mode="passthrough"/>
- </description>
- </xsl:if>
- </xsl:template>
-
- <!-- Handle function children -->
- <xsl:template name="function.children">
- <xsl:param name="is-overloaded" select="false()"/>
-
- <xsl:if test="not($is-overloaded)">
- <!-- Emit template header -->
- <xsl:apply-templates select="templateparamlist" mode="template"/>
-
- <!-- Emit function parameters -->
- <xsl:apply-templates select="param" mode="function"/>
- </xsl:if>
-
- <!-- The description -->
- <xsl:apply-templates select="briefdescription" mode="passthrough"/>
- <xsl:apply-templates select="detaileddescription" mode="passthrough"/>
- <xsl:apply-templates select="inbodydescription" mode="passthrough"/>
-
- <xsl:apply-templates
- select="*[self::detaileddescription or self::inbodydescription]/para/simplesect[@kind='pre']"
- mode="function-clauses"/>
- <xsl:apply-templates
- select="*[self::detaileddescription or self::inbodydescription]/para/simplesect[@kind='post']"
- mode="function-clauses"/>
- <xsl:apply-templates
- select="*[self::detaileddescription or self::inbodydescription]/para/simplesect[@kind='return']"
- mode="function-clauses"/>
- <xsl:if test="*[self::detaileddescription or self::inbodydescription]/para/parameterlist[@kind='exception']">
- <throws>
- <xsl:apply-templates
- select="*[self::detaileddescription or self::inbodydescription]/para/parameterlist[@kind='exception']"
- mode="function-clauses"/>
- </throws>
- </xsl:if>
- <xsl:variable name="notes" select="*[self::detaileddescription or self::inbodydescription]/para/simplesect[@kind='note' or @kind='attention']"/>
- <xsl:if test="count($notes) > 0">
- <notes>
- <xsl:apply-templates select="$notes" mode="function-clauses"/>
- </notes>
- </xsl:if>
- </xsl:template>
-
- <!-- Handle free functions -->
- <xsl:template name="function">
- <xsl:param name="in-file" select="''"/>
-
- <xsl:variable name="firstpara"
- select="normalize-space(detaileddescription/para[1])"/>
- <xsl:if test="contains(string(location/attribute::file),
- concat('/', $in-file))
- and
- not($firstpara=normalize-space($boost.doxygen.overload))">
-
- <xsl:variable name="next-node" select="following-sibling::*[1]"/>
- <xsl:variable name="has-overload">
- <xsl:if test="not(local-name($next-node)='memberdef')">
- false
- </xsl:if>
- <xsl:if test="not(string($next-node/name/text())=string(name/text()))">
- false
- </xsl:if>
- <xsl:if
- test="not(normalize-space($next-node/detaileddescription/para[1])
- =normalize-space($boost.doxygen.overload))">
- false
- </xsl:if>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="not(contains($has-overload, 'false'))">
- <overloaded-function>
- <xsl:attribute name="name">
- <xsl:call-template name="normalize-name"/>
- </xsl:attribute>
-
- <xsl:call-template name="overload-signatures"/>
- <xsl:call-template name="function.children">
- <xsl:with-param name="is-overloaded" select="true()"/>
- </xsl:call-template>
- </overloaded-function>
- </xsl:when>
- <xsl:otherwise>
- <function>
- <xsl:attribute name="name">
- <xsl:call-template name="normalize-name"/>
- </xsl:attribute>
-
- <!-- Return type -->
- <type><xsl:apply-templates select="type"/></type>
-
- <xsl:call-template name="function.children"/>
- </function>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <!-- Emit overload signatures -->
- <xsl:template name="overload-signatures">
- <xsl:param name="node" select="."/>
- <xsl:param name="name" select="string(name/text())"/>
- <xsl:param name="first" select="true()"/>
-
- <xsl:choose>
- <xsl:when test="not(local-name($node)='memberdef')"/>
- <xsl:when test="not(string($node/name/text())=$name)"/>
- <xsl:when test="not(normalize-space($node/detaileddescription/para[1])
- =normalize-space($boost.doxygen.overload))
- and not($first)"/>
- <xsl:otherwise>
- <signature>
- <type>
- <xsl:apply-templates select="$node/type"/>
- </type>
- <xsl:apply-templates select="$node/templateparamlist"
- mode="template"/>
- <xsl:apply-templates select="$node/param" mode="function"/>
- </signature>
-
- <xsl:call-template name="overload-signatures">
- <xsl:with-param name="node" select="$node/following-sibling::*[1]"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="first" select="false()"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Handle constructors -->
- <xsl:template name="constructor">
- <constructor>
- <xsl:call-template name="function.children"/>
- </constructor>
- </xsl:template>
-
- <!-- Handle Destructors -->
- <xsl:template name="destructor">
- <destructor>
- <xsl:call-template name="function.children"/>
- </destructor>
- </xsl:template>
-
- <!-- Handle Copy Assignment -->
- <xsl:template name="copy-assignment">
- <copy-assignment>
- <xsl:call-template name="function.children"/>
- </copy-assignment>
- </xsl:template>
-
- <!-- Handle conversion operator -->
- <xsl:template name="conversion-operator">
- <method>
- <xsl:attribute name="name">
- <xsl:text>conversion-operator</xsl:text>
- </xsl:attribute>
-
- <!-- CV Qualifiers -->
- <xsl:if test="not (@const='no' and @volatile='no')">
- <xsl:attribute name="cv">
- <xsl:if test="@const='yes'">
- <xsl:text>const</xsl:text>
- </xsl:if>
- <xsl:if test="@volatile='yes'">
- <xsl:if test="@const='yes'">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:text>volatile</xsl:text>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
-
- <!-- Conversion type -->
- <type>
- <xsl:value-of select="substring-after(name/text(), 'operator ')"/>
- </type>
-
- <xsl:call-template name="function.children"/>
- </method>
- </xsl:template>
-
- <!-- Handle methods -->
- <xsl:template name="method">
- <method>
- <xsl:attribute name="name">
- <xsl:value-of select="name/text()"/>
- </xsl:attribute>
-
- <!-- CV Qualifiers -->
- <xsl:if test="not (@const='no' and @volatile='no')">
- <xsl:attribute name="cv">
- <xsl:if test="@const='yes'">
- <xsl:text>const</xsl:text>
- </xsl:if>
- <xsl:if test="@volatile='yes'">
- <xsl:if test="@const='yes'">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:text>volatile</xsl:text>
- </xsl:if>
- </xsl:attribute>
- </xsl:if>
-
- <!-- Return type -->
- <xsl:element name="type">
- <!-- Cheat on virtual and static by dropping them into the type -->
- <xsl:if test="@static='yes'">
- <xsl:text>static </xsl:text>
- </xsl:if>
-
- <xsl:if test="@virtual='yes'">
- <xsl:text>virtual </xsl:text>
- </xsl:if>
-
- <xsl:apply-templates select="type"/>
- </xsl:element>
-
- <xsl:call-template name="function.children"/>
- </method>
- </xsl:template>
-
- <!-- Handle member variables -->
- <xsl:template name="variable">
- <xsl:param name="in-file"/>
- <xsl:if test="contains(string(location/attribute::file),
- concat('/', $in-file))">
- <data-member>
- <xsl:attribute name="name">
- <xsl:value-of select="name/text()"/>
- </xsl:attribute>
-
- <!-- Specifiers -->
- <xsl:if test="@static = 'yes'">
- <xsl:attribute name="specifiers">static</xsl:attribute>
- </xsl:if>
- <xsl:if test="@mutable = 'yes'">
- <xsl:attribute name="specifiers">mutable</xsl:attribute>
- </xsl:if>
-
- <type>
- <xsl:apply-templates select="type"/>
- </type>
-
- <xsl:apply-templates select="briefdescription" mode="passthrough"/>
- <xsl:apply-templates select="detaileddescription" mode="passthrough"/>
- <xsl:apply-templates select="inbodydescription" mode="passthrough"/>
- </data-member>
- </xsl:if>
- </xsl:template>
-
- <!-- Things we ignore directly -->
- <xsl:template match="compoundname" mode="toplevel"/>
- <xsl:template match="includes|includedby|incdepgraph|invincdepgraph" mode="toplevel"/>
- <xsl:template match="programlisting" mode="toplevel"/>
- <xsl:template match="text()" mode="toplevel"/>
-
- <xsl:template match="text()"/>
-
- <!-- Passthrough of text -->
- <xsl:template match="text()" mode="passthrough">
- <xsl:value-of select="."/>
- </xsl:template>
- <xsl:template match="para" mode="passthrough">
- <para>
- <xsl:apply-templates mode="passthrough"/>
- </para>
- </xsl:template>
- <xsl:template match="copydoc" mode="passthrough">
- <xsl:apply-templates mode="passthrough"/>
- </xsl:template>
-
- <xsl:template match="para/simplesect" mode="passthrough">
- <xsl:if test="not (@kind='pre') and
- not (@kind='return') and
- not (@kind='post') and
- not (@kind='attention') and
- not (@kind='note')">
- <xsl:apply-templates mode="passthrough"/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="para/simplesect[@kind='par']" mode="passthrough">
- <formalpara>
- <xsl:apply-templates mode="passthrough"/>
- </formalpara>
- </xsl:template>
-
- <xsl:template match="simplesectsep" mode="passthrough">
- <xsl:apply-templates mode="passthrough"/>
- </xsl:template>
-
- <xsl:template match="*" mode="passthrough">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:apply-templates mode="passthrough"/>
- </xsl:copy>
- </xsl:template>
-
- <xsl:template match="parameterlist" mode="passthrough"/>
-
- <xsl:template match="bold" mode="passthrough">
- <emphasis role="bold">
- <xsl:apply-templates mode="passthrough"/>
- </emphasis>
- </xsl:template>
-
- <xsl:template match="linebreak" mode="passthrough">
- <sbr/>
- </xsl:template>
-
- <xsl:template match="briefdescription" mode="passthrough">
- <xsl:if test="text()|*">
- <purpose>
- <xsl:apply-templates mode="purpose"/>
- </purpose>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="detaileddescription" mode="passthrough">
- <xsl:if test="text()|*">
- <description>
- <xsl:apply-templates mode="passthrough"/>
- </description>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="inbodydescription" mode="passthrough">
- <xsl:if test="text()|*">
- <description>
- <xsl:apply-templates mode="passthrough"/>
- </description>
- </xsl:if>
- </xsl:template>
-
- <!-- Ignore ref elements for now, as there is a lot of documentation which
- will have incorrect ref elements at the moment -->
- <xsl:template match="ref" mode="passthrough">
- <xsl:apply-templates mode="passthrough"/>
- </xsl:template>
-
- <!-- Handle function clauses -->
- <xsl:template match="simplesect" mode="function-clauses">
- <xsl:if test="@kind='pre'">
- <requires>
- <xsl:apply-templates mode="passthrough"/>
- </requires>
- </xsl:if>
- <xsl:if test="@kind='return'">
- <returns>
- <xsl:apply-templates mode="passthrough"/>
- </returns>
- </xsl:if>
- <xsl:if test="@kind='post'">
- <postconditions>
- <xsl:apply-templates mode="passthrough"/>
- </postconditions>
- </xsl:if>
- <xsl:if test="@kind='note' or @kind='attention'">
- <xsl:apply-templates mode="passthrough"/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="parameterlist" mode="function-clauses">
- <xsl:if test="@kind='exception'">
- <simpara>
- <xsl:choose>
- <xsl:when test="normalize-space(.//parametername//text())='nothrow'">
- <xsl:text>Will not throw.</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <classname>
- <xsl:value-of select=".//parametername//text()"/>
- </classname>
- <xsl:text> </xsl:text>
- <xsl:apply-templates
- select="parameterdescription/para/text()
- |parameterdescription/para/*"
- mode="passthrough"/>
- </xsl:otherwise>
- </xsl:choose>
- </simpara>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="type">
- <xsl:choose>
- <xsl:when test="contains(string(.), $boost.doxygen.detail)">
- <emphasis>unspecified</emphasis>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates mode="type"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ref" mode="type">
- <xsl:choose>
- <xsl:when test="@kindref='compound'">
- <classname>
- <xsl:value-of select="text()"/>
- </classname>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="text()"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="*" mode="type">
- <xsl:value-of select="."/>
- </xsl:template>
-
- <!-- Normalize the names of functions, because Doxygen sometimes
- puts in an obnoixous space. -->
- <xsl:template name="normalize-name">
- <xsl:param name="name" select="name/text()"/>
-
- <xsl:choose>
- <xsl:when test="contains($name, ' ')">
- <xsl:value-of select="substring-before($name, ' ')"/>
- <xsl:value-of select="substring-after($name, ' ')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Convert HTML tables into DocBook format -->
- <xsl:template match="table" mode="passthrough">
- <informaltable>
- <tgroup>
- <xsl:attribute name="cols">
- <xsl:value-of select="@cols"/>
- </xsl:attribute>
-
- <tbody>
- <xsl:apply-templates mode="table"/>
- </tbody>
- </tgroup>
- </informaltable>
- </xsl:template>
-
- <xsl:template match="row" mode="table">
- <row>
- <xsl:apply-templates mode="table"/>
- </row>
- </xsl:template>
-
- <xsl:template match="entry" mode="table">
- <entry>
- <xsl:if test="para/center">
- <xsl:attribute name="valign">
- <xsl:value-of select="'middle'"/>
- </xsl:attribute>
- <xsl:attribute name="align">
- <xsl:value-of select="'center'"/>
- </xsl:attribute>
- </xsl:if>
-
- <xsl:choose>
- <xsl:when test="@thead='yes'">
- <emphasis role="bold">
- <xsl:call-template name="table-entry"/>
- </emphasis>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="table-entry"/>
- </xsl:otherwise>
- </xsl:choose>
- </entry>
- </xsl:template>
-
- <xsl:template name="table-entry">
- <xsl:choose>
- <xsl:when test="para/center">
- <xsl:apply-templates select="para/center/*|para/center/text()"
- mode="passthrough"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="para/*|para/text()" mode="passthrough"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Handle program listings -->
- <xsl:template match="programlisting" mode="passthrough">
- <programlisting>
- <xsl:apply-templates mode="programlisting"/>
- </programlisting>
- </xsl:template>
-
- <xsl:template match="highlight|codeline" mode="programlisting">
- <xsl:apply-templates mode="programlisting"/>
- </xsl:template>
-
- <xsl:template match="sp" mode="programlisting">
- <xsl:text> </xsl:text>
- </xsl:template>
-
- <xsl:template match="*" mode="programlisting">
- <xsl:apply-templates select="." mode="passthrough"/>
- </xsl:template>
-
- <!-- Replace top-level "para" elements with "simpara" elements in
- the purpose -->
- <xsl:template match="*" mode="purpose">
- <xsl:apply-templates mode="passthrough"/>
- </xsl:template>
-
- <xsl:template match="text()" mode="purpose">
- <xsl:apply-templates mode="passthrough"/>
- </xsl:template>
-
- <xsl:template match="para" mode="purpose">
- <xsl:apply-templates select="*|text()" mode="passthrough"/>
- </xsl:template>
-
- <!--
- Eric Niebler: Jan-8-2008
- Here is some 3/4-baked support for LaTeX formulas in
- Doxygen comments. Doxygen doesn't generate the PNG files
- when outputting XML. In order to use this code, you must
- run Doxygen first to generate HTML (and the PNG files for
- the formulas). You can do this in a Jamfile with
- "doxygen foo.html : <sources, etc...> ; ", where the ".html"
- is significant. Then the png files should be copied into the
- images/ directory (or another place relative to the html/
- directory, as specified by $boost.doxygen.formuladir XSL
- parameter). This can be done with a custom action in a
- Jamfile. Finally, the docs can be built as normal.
- See libs/accumulators/doc/Jamfile.v2 for a working example.
- -->
- <xsl:template match="formula" mode="passthrough">
- <xsl:choose>
- <xsl:when test="substring(*|text(), 1, 2) = '\['">
- <equation>
- <title/>
- <alt>
- <xsl:value-of select="*|text()"/>
- </alt>
- <mediaobject>
- <imageobject role="html">
- <imagedata format="PNG" align="center">
- <xsl:attribute name="fileref">
- <xsl:value-of select="concat(concat(concat($boost.doxygen.formuladir, 'form_'), @id), '.png')"/>
- </xsl:attribute>
- </imagedata>
- </imageobject>
- <textobject role="tex">
- <phrase>
- <xsl:value-of select="*|text()"/>
- </phrase>
- </textobject>
- </mediaobject>
- </equation>
- </xsl:when>
- <xsl:otherwise>
- <inlineequation>
- <alt>
- <xsl:value-of select="*|text()"/>
- </alt>
- <inlinemediaobject>
- <imageobject role="html">
- <imagedata format="PNG">
- <xsl:attribute name="fileref">
- <xsl:value-of select="concat(concat(concat($boost.doxygen.formuladir, 'form_'), @id), '.png')"/>
- </xsl:attribute>
- </imagedata>
- </imageobject>
- <textobject role="tex">
- <phrase>
- <xsl:value-of select="*|text()"/>
- </phrase>
- </textobject>
- </inlinemediaobject>
- </inlineequation>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- </xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:output method="xml" indent="yes" standalone="yes"/>
-
- <xsl:strip-space elements="sequence-group or-group element element-name"/>
-
- <xsl:key name="elements" match="element" use="@name"/>
- <xsl:key name="attributes" match="attlist" use="@name"/>
- <xsl:key name="attribute-purposes" match="attpurpose" use="@name"/>
-
- <xsl:template match="dtd">
- <section id="reference">
- <title>Reference</title>
- <para>
- <xsl:text>Elements:</xsl:text>
- <itemizedlist spacing="compact">
- <xsl:apply-templates select="element" mode="synopsis">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </itemizedlist>
- </para>
- <xsl:apply-templates select="element"/>
- </section>
- </xsl:template>
-
- <!-- Element synopsis -->
- <xsl:template match="element" mode="synopsis">
- <listitem>
- <simpara>
- <link>
- <xsl:attribute name="linkend">
- <xsl:value-of select="concat('boostbook.dtd.',@name)"/>
- </xsl:attribute>
- <xsl:text>Element </xsl:text>
- <sgmltag><xsl:value-of select="@name"/></sgmltag>
- <xsl:text> - </xsl:text>
- <xsl:apply-templates select="purpose"/>
- </link>
- </simpara>
- </listitem>
- </xsl:template>
-
- <!-- Elements are transformed into DocBook refentry elements -->
- <xsl:template match="element">
- <refentry>
- <xsl:attribute name="id">
- <xsl:value-of select="concat('boostbook.dtd.',@name)"/>
- </xsl:attribute>
-
- <refmeta>
- <refentrytitle>
- BoostBook element <sgmltag><xsl:value-of select="@name"/></sgmltag>
- </refentrytitle>
- <manvolnum>9</manvolnum>
- </refmeta>
- <refnamediv>
- <refname><xsl:value-of select="@name"/></refname>
- <refpurpose><xsl:apply-templates select="purpose"/></refpurpose>
- </refnamediv>
- <refsynopsisdiv>
- <xsl:value-of select="@name"/><xsl:text> ::= </xsl:text>
- <xsl:apply-templates select="content-model-expanded"/>
- </refsynopsisdiv>
- <xsl:apply-templates select="description"/>
- <xsl:apply-templates select="key('attributes', @name)"/>
- </refentry>
- </xsl:template>
-
- <xsl:template match="content-model-expanded">
- <xsl:apply-templates/>
- </xsl:template>
-
- <!-- Sequences -->
- <xsl:template match="sequence-group">
- <xsl:param name="separator" select="''"/>
-
- <xsl:if test="preceding-sibling::*">
- <xsl:value-of select="$separator"/>
- </xsl:if>
- <xsl:text>(</xsl:text>
- <xsl:apply-templates>
- <xsl:with-param name="separator" select="', '"/>
- </xsl:apply-templates>
- <xsl:text>)</xsl:text>
- <xsl:value-of select="@occurrence"/>
- </xsl:template>
-
- <!-- Alternatives -->
- <xsl:template match="or-group">
- <xsl:param name="separator" select="''"/>
-
- <xsl:if test="preceding-sibling::*">
- <xsl:value-of select="$separator"/>
- </xsl:if>
- <xsl:text>(</xsl:text>
- <xsl:apply-templates>
- <xsl:with-param name="separator" select="'| '"/>
- </xsl:apply-templates>
- <xsl:text>)</xsl:text>
- <xsl:value-of select="@occurrence"/>
- </xsl:template>
-
- <!-- Element references -->
- <xsl:template match="element-name">
- <xsl:param name="separator" select="''"/>
-
- <xsl:if test="preceding-sibling::*">
- <xsl:value-of select="$separator"/>
- </xsl:if>
-
- <xsl:variable name="element-node" select="key('elements', @name)"/>
-
- <xsl:choose>
- <xsl:when test="$element-node">
- <link>
- <xsl:attribute name="linkend">
- <xsl:value-of select="concat('boostbook.dtd.',@name)"/>
- </xsl:attribute>
- <xsl:value-of select="@name"/>
- </link>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@name"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="@occurrence"/>
- </xsl:template>
-
- <!-- #PCDATA -->
- <xsl:template match="pcdata">
- <xsl:param name="separator" select="''"/>
-
- <xsl:if test="preceding-sibling::*">
- <xsl:value-of select="$separator"/>
- </xsl:if>
-
- <xsl:text>#PCDATA</xsl:text>
- </xsl:template>
-
- <!-- ANY -->
- <xsl:template match="any">
- <xsl:text>ANY</xsl:text>
- </xsl:template>
-
- <!-- EMPTY -->
- <xsl:template match="empty">
- <xsl:text>EMPTY</xsl:text>
- </xsl:template>
-
- <!-- Just copy anything in a purpose element -->
- <xsl:template match="purpose">
- <xsl:copy-of select="text()|*"/>
- </xsl:template>
-
- <!-- Just copy anything in a description element, but place it in a
- section. -->
- <xsl:template match="description">
- <refsection>
- <title>Description</title>
- <xsl:copy-of select="text()|*"/>
- </refsection>
- </xsl:template>
-
- <!-- Attributes -->
- <xsl:template match="attlist">
- <refsection>
- <title>Attributes</title>
-
- <informaltable>
- <tgroup cols="4">
- <thead>
- <row>
- <entry>Name</entry>
- <entry>Type</entry>
- <entry>Value</entry>
- <entry>Purpose</entry>
- </row>
- </thead>
- <tbody>
- <xsl:apply-templates/>
- </tbody>
- </tgroup>
- </informaltable>
- </refsection>
- </xsl:template>
-
- <!-- Attribute -->
- <xsl:template match="attribute">
- <row>
- <entry><xsl:value-of select="@name"/></entry>
- <entry><xsl:value-of select="@type"/></entry>
- <entry><xsl:value-of select="@value"/></entry>
- <entry>
- <xsl:choose>
- <xsl:when test="purpose">
- <xsl:apply-templates select="purpose"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="key('attribute-purposes', @name)"/>
- </xsl:otherwise>
- </xsl:choose>
- </entry>
- </row>
- </xsl:template>
-
- <!-- Eat attribute declarations -->
- <xsl:template match="attdecl"/>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:template name="print.warning.context">
- <xsl:message>
- <xsl:text> In </xsl:text>
- <xsl:call-template name="fully-qualified-name">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:message>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2003 Douglas Gregor -->
-<!-- Distributed under the Boost Software License, Version 1.0. -->
-<!-- (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) -->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:fo="http://www.w3.org/1999/XSL/Format"
- version="1.0">
-
- <!-- Import the FO stylesheet -->
- <xsl:import
- href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
-
- <xsl:param name="chapter.autolabel" select="0"/>
- <xsl:param name="refentry.generate.name" select="0"/>
- <xsl:param name="refentry.generate.title" select="1"/>
- <xsl:param name="fop1.extensions" select="1"/>
- <xsl:param name="make.year.ranges" select="1"/>
- <xsl:param name="ulink.show" select="0"/>
-
- <!-- The question and answer templates are copied here from the
- 1.61.3 DocBook XSL stylesheets so that we can eliminate the emission
- of id attributes in the emitted fo:list-item-label elements. FOP
- 0.20.5 has problems with these id attributes, and they are otherwise
- unused. -->
-<xsl:template match="question">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
-
- <xsl:variable name="entry.id">
- <xsl:call-template name="object.id">
- <xsl:with-param name="object" select="parent::*"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="deflabel">
- <xsl:choose>
- <xsl:when test="ancestor-or-self::*[@defaultlabel]">
- <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
- /@defaultlabel"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$qanda.defaultlabel"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <fo:list-item id="{$entry.id}" xsl:use-attribute-sets="list.item.spacing">
- <fo:list-item-label end-indent="label-end()">
- <xsl:choose>
- <xsl:when test="$deflabel = 'none'">
- <fo:block/>
- </xsl:when>
- <xsl:otherwise>
- <fo:block>
- <xsl:apply-templates select="." mode="label.markup"/>
- <xsl:text>.</xsl:text> <!-- FIXME: Hack!!! This should be in the locale! -->
- </fo:block>
- </xsl:otherwise>
- </xsl:choose>
- </fo:list-item-label>
- <fo:list-item-body start-indent="body-start()">
- <xsl:choose>
- <xsl:when test="$deflabel = 'none'">
- <fo:block font-weight="bold">
- <xsl:apply-templates select="*[local-name(.)!='label']"/>
- </fo:block>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="*[local-name(.)!='label']"/>
- </xsl:otherwise>
- </xsl:choose>
- </fo:list-item-body>
- </fo:list-item>
-</xsl:template>
-
-<xsl:template match="answer">
- <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
- <xsl:variable name="entry.id">
- <xsl:call-template name="object.id">
- <xsl:with-param name="object" select="parent::*"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="deflabel">
- <xsl:choose>
- <xsl:when test="ancestor-or-self::*[@defaultlabel]">
- <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
- /@defaultlabel"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$qanda.defaultlabel"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <fo:list-item xsl:use-attribute-sets="list.item.spacing">
- <fo:list-item-label end-indent="label-end()">
- <xsl:choose>
- <xsl:when test="$deflabel = 'none'">
- <fo:block/>
- </xsl:when>
- <xsl:otherwise>
- <fo:block>
- <!-- FIXME: Hack!!! This should be in the locale! -->
- <xsl:variable name="answer.label">
- <xsl:apply-templates select="." mode="label.markup"/>
- </xsl:variable>
- <xsl:copy-of select="$answer.label"/>
- <xsl:if test="string($answer.label) != ''">
- <xsl:text>.</xsl:text>
- </xsl:if>
- </fo:block>
- </xsl:otherwise>
- </xsl:choose>
- </fo:list-item-label>
- <fo:list-item-body start-indent="body-start()">
- <xsl:apply-templates select="*[local-name(.)!='label']"/>
- </fo:list-item-body>
- </fo:list-item>
-</xsl:template>
-
-<!--
-
- The following rules apply syntax highlighting to phrases
- that have been appropriately marked up, the highlighting
- used is the same as that used by our CSS style sheets,
- but potentially we have the option to do better here
- since we can add bold and italic formatting quite easily
-
- -->
-
-<xsl:template match="//programlisting/phrase[@role='keyword']">
- <fo:inline color="#0000AA"><xsl:apply-templates/></fo:inline>
-</xsl:template>
-<xsl:template match="//programlisting/phrase[@role='special']">
- <fo:inline color="#707070"><xsl:apply-templates/></fo:inline>
-</xsl:template>
-<xsl:template match="//programlisting/phrase[@role='preprocessor']">
- <fo:inline color="#402080"><xsl:apply-templates/></fo:inline>
-</xsl:template>
-<xsl:template match="//programlisting/phrase[@role='char']">
- <fo:inline color="teal"><xsl:apply-templates/></fo:inline>
-</xsl:template>
-<xsl:template match="//programlisting/phrase[@role='comment']">
- <fo:inline color="#800000"><xsl:apply-templates/></fo:inline>
-</xsl:template>
-<xsl:template match="//programlisting/phrase[@role='string']">
- <fo:inline color="teal"><xsl:apply-templates/></fo:inline>
-</xsl:template>
-<xsl:template match="//programlisting/phrase[@role='number']">
- <fo:inline color="teal"><xsl:apply-templates/></fo:inline>
-</xsl:template>
-<xsl:template match="//programlisting/phrase[@role='white_bkd']">
- <fo:inline color="#FFFFFF"><xsl:apply-templates/></fo:inline>
-</xsl:template>
-<xsl:template match="//programlisting/phrase[@role='dk_grey_bkd']">
- <fo:inline color="#999999"><xsl:apply-templates/></fo:inline>
-</xsl:template>
-
-<!--
-Make all hyperlinks blue colored:
--->
-<xsl:attribute-set name="xref.properties">
- <xsl:attribute name="color">blue</xsl:attribute>
-</xsl:attribute-set>
-
-<!--
-Put a box around admonishments and keep them together:
--->
-<xsl:attribute-set name="graphical.admonition.properties">
- <xsl:attribute name="border-color">#FF8080</xsl:attribute>
- <xsl:attribute name="border-width">1px</xsl:attribute>
- <xsl:attribute name="border-style">solid</xsl:attribute>
- <xsl:attribute name="padding-left">0.2cm</xsl:attribute>
- <xsl:attribute name="padding-right">0.2cm</xsl:attribute>
- <xsl:attribute name="padding-top">0.2cm</xsl:attribute>
- <xsl:attribute name="padding-bottom">0.2cm</xsl:attribute>
- <xsl:attribute name="keep-together.within-page">1</xsl:attribute>
- <xsl:attribute name="margin-left">0pt</xsl:attribute>
- <xsl:attribute name="margin-right">0pt</xsl:attribute>
-</xsl:attribute-set>
-
-<!--
-Put a box around code blocks, also set the font size
-and keep the block together if we can using the widows
-and orphans controls. Hyphenation and line wrapping
-is also turned on, so that long lines of code don't
-bleed off the edge of the page, a carriage return
-symbol is used as the hyphenation character:
--->
-<xsl:attribute-set name="monospace.verbatim.properties">
- <xsl:attribute name="border-color">#DCDCDC</xsl:attribute>
- <xsl:attribute name="border-width">1px</xsl:attribute>
- <xsl:attribute name="border-style">solid</xsl:attribute>
- <xsl:attribute name="padding-left">0.2cm</xsl:attribute>
- <xsl:attribute name="padding-right">0.2cm</xsl:attribute>
- <xsl:attribute name="padding-top">0.2cm</xsl:attribute>
- <xsl:attribute name="padding-bottom">0.2cm</xsl:attribute>
- <xsl:attribute name="widows">6</xsl:attribute>
- <xsl:attribute name="orphans">40</xsl:attribute>
- <xsl:attribute name="font-size">9pt</xsl:attribute>
- <xsl:attribute name="hyphenate">true</xsl:attribute>
- <xsl:attribute name="wrap-option">wrap</xsl:attribute>
- <xsl:attribute name="hyphenation-character">↵</xsl:attribute>
- <xsl:attribute name="margin-left">0pt</xsl:attribute>
- <xsl:attribute name="margin-right">0pt</xsl:attribute>
-</xsl:attribute-set>
-
-<xsl:param name="hyphenate.verbatim" select="1"></xsl:param>
-<xsl:param name="monospace.font.family">monospace,Symbol</xsl:param>
-
- <!--Regular monospace text should have the same font size as code blocks etc-->
-<xsl:attribute-set name="monospace.properties">
- <xsl:attribute name="font-size">9pt</xsl:attribute>
-</xsl:attribute-set>
-
-<!--
-Put some small amount of padding around table cells, and keep tables
-together on one page if possible:
--->
-<xsl:attribute-set name="table.cell.padding">
- <xsl:attribute name="padding-left">0.2cm</xsl:attribute>
- <xsl:attribute name="padding-right">0.2cm</xsl:attribute>
- <xsl:attribute name="padding-top">0.2cm</xsl:attribute>
- <xsl:attribute name="padding-bottom">0.2cm</xsl:attribute>
-</xsl:attribute-set>
-
- <!--Formal and informal tables have the same properties
- Using widow-and-orphan control here gives much better
- results for very large tables than a simple "keep-together"
- instruction-->
-<xsl:attribute-set name="table.properties">
- <xsl:attribute name="keep-together.within-page">1</xsl:attribute>
-</xsl:attribute-set>
-<xsl:attribute-set name="informaltable.properties">
- <xsl:attribute name="keep-together.within-page">1</xsl:attribute>
-</xsl:attribute-set>
-
-<!--
-General default options go here:
-* Borders are mid-grey.
-* Body text is not indented compared to the titles.
-* Page margins are a rather small 0.5in, but we need
- all the space we can get for code blocks.
-* Paper size is A4: an ISO standard, and just slightly smaller than US Letter.
-* Use SVG graphics for admonishments: the bitmaps look awful in PDF's.
-* Disable draft mode so we're not constantly trying to download the necessary graphic.
-* Set default image paths to pull down direct from SVN: individual Jamfiles can override this
- and pass an absolute path to local versions of the images, but we can't get that here, so
- we'll use SVN instead so that most things "just work".
--->
-<xsl:param name="table.frame.border.color">#DCDCDC</xsl:param>
-<xsl:param name="table.cell.border.color">#DCDCDC</xsl:param>
-<xsl:param name="body.start.indent">0pt</xsl:param>
-<xsl:param name="page.margin.inner">0.5in</xsl:param>
-<xsl:param name="page.margin.outer">0.5in</xsl:param>
-<xsl:param name="paper.type">A4</xsl:param>
-<xsl:param name="admon.graphics">1</xsl:param>
-<xsl:param name="admon.graphics.extension">.svg</xsl:param>
-<xsl:param name="draft.mode">no</xsl:param>
-<xsl:param name="admon.graphics.path">http://svn.boost.org/svn/boost/trunk/doc/src/images/</xsl:param>
-<xsl:param name="callout.graphics.path">http://svn.boost.org/svn/boost/trunk/doc/src/images/callouts/</xsl:param>
-<xsl:param name="img.src.path">http://svn.boost.org/svn/boost/trunk/doc/html/</xsl:param>
-
-<!-- Ideally we would use this to force top level sections
- to start on a new page, unfortunately this causes rather
- unfortunate page breaks in some Doxygen-generated
- documentation which uses <refentry> and <synopsis>
- sections :-(
-
-<xsl:attribute-set name="section.level1.properties">
- <xsl:attribute name="break-before">page</xsl:attribute>
-</xsl:attribute-set>
-
--->
-
-</xsl:stylesheet>
-
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:strip-space elements="requires effects postconditions returns throws
- complexity notes rationale purpose"/>
-
- <!-- When true, the stylesheet will emit compact definitions of
- functions when the function does not have any detailed
- description. -->
- <xsl:param name="boost.compact.function">1</xsl:param>
-
- <!-- The longest type length that is considered "short" for the
- layout of function return types. When the length of the result type
- and any storage specifiers is greater than this length, they will be
- placed on a separate line from the function name and parameters
- unless everything fits on a single line. -->
- <xsl:param name="boost.short.result.type">12</xsl:param>
-
- <!-- Display a function declaration -->
- <xsl:template name="function">
- <xsl:param name="indentation"/>
- <xsl:param name="is-reference"/>
-
- <!-- Whether or not we should include parameter names in the output -->
- <xsl:param name="include-names" select="$is-reference"/>
-
- <!-- What type of link the function name should have. This shall
- be one of 'anchor' (the function output will be the target of
- links), 'link' (the function output will link to a definition), or
- 'none' (the function output will not be either a link or a link
- target) -->
- <xsl:param name="link-type">
- <xsl:choose>
- <xsl:when test="$is-reference">
- <xsl:text>anchor</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>link</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
-
- <!-- The id we should link to or anchor as -->
- <xsl:param name="link-to">
- <xsl:call-template name="generate.id"/>
- </xsl:param>
-
- <!-- If we are printing a constructor -->
- <xsl:param name="constructor-for"/>
-
- <!-- If we are printing a destructor -->
- <xsl:param name="destructor-for"/>
-
- <!-- If we are printing a copy assignment operator -->
- <xsl:param name="copy-assign-for"/>
-
- <!-- The name of this function -->
- <xsl:param name="name" select="@name"/>
-
- <!-- True if this is the function's separate documentation -->
- <xsl:param name="standalone" select="false()"/>
-
- <!-- True if we should suppress the template header -->
- <xsl:param name="suppress-template" select="false()"/>
-
- <!-- Calculate the specifiers -->
- <xsl:variable name="specifiers">
- <xsl:if test="@specifiers">
- <xsl:value-of select="concat(@specifiers, ' ')"/>
- </xsl:if>
- </xsl:variable>
-
- <!-- Calculate the type -->
- <xsl:variable name="type">
- <xsl:value-of select="$specifiers"/>
-
- <xsl:choose>
- <!-- Conversion operators have an empty type, because the return
- type is part of the name -->
- <xsl:when test="$name='conversion-operator'"/>
-
- <!-- Constructors and destructors have no return type -->
- <xsl:when test="$constructor-for or $destructor-for"/>
-
- <!-- Copy assignment operators return a reference to the class
- they are in, unless another type has been explicitly
- provided in the element. -->
- <xsl:when test="$copy-assign-for and not(type)">
- <xsl:value-of select="concat($copy-assign-for, '& ')"/>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:apply-templates select="type" mode="annotation"/>
- <xsl:text> </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Build the function name with return type -->
- <xsl:variable name="function-name">
- <xsl:choose>
- <xsl:when test="$constructor-for">
- <xsl:value-of select="$constructor-for"/>
- </xsl:when>
- <xsl:when test="$destructor-for">
- <xsl:value-of select="concat('~',$destructor-for)"/>
- </xsl:when>
- <xsl:when test="$copy-assign-for">
- <xsl:value-of select="'operator='"/>
- </xsl:when>
- <xsl:when test="$name='conversion-operator'">
- <xsl:text>operator </xsl:text>
- <xsl:apply-templates select="type" mode="annotation"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:if test="not ($standalone) or
- (local-name(.)='signature' and (position() > 1))
- or $suppress-template">
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <!-- Indent this declaration -->
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
-
- <!-- Build the template header -->
- <xsl:variable name="template-length">
- <xsl:choose>
- <xsl:when test="$suppress-template">
- 0
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="template.synopsis.length"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Build a full parameter string (without line breaks) -->
- <xsl:variable name="param-string">
- <xsl:text>(</xsl:text>
- <xsl:call-template name="function-parameters">
- <xsl:with-param name="include-names" select="$include-names"/>
- <xsl:with-param name="wrap" select="false()"/>
- </xsl:call-template>
- <xsl:text>)</xsl:text>
- </xsl:variable>
-
- <!-- Build the text that follows the declarator-->
- <xsl:variable name="postdeclarator">
- <xsl:if test="@cv">
- <xsl:text> </xsl:text>
- <xsl:value-of select="@cv"/>
- </xsl:if>
- </xsl:variable>
-
- <!-- Build the full declaration text -->
- <xsl:variable name="decl-string"
- select="concat($type, $function-name, $param-string, $postdeclarator)"/>
- <xsl:variable name="end-column"
- select="$template-length + string-length($decl-string) + $indentation"/>
-
- <xsl:choose>
- <!-- Check if we should put the template header on its own line to
- save horizontal space. -->
- <xsl:when test="($template-length > 0) and
- ($end-column > $max-columns)">
- <!-- Emit template header on its own line -->
- <xsl:apply-templates select="template" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:apply-templates>
-
- <!-- Emit the rest of the function declaration (without the
- template header) indented two extra spaces. -->
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- <xsl:with-param name="is-reference" select="$is-reference"/>
- <xsl:with-param name="include-names" select="$include-names"/>
- <xsl:with-param name="link-type" select="$link-type"/>
- <xsl:with-param name="link-to" select="$link-to"/>
- <xsl:with-param name="constructor-for" select="$constructor-for"/>
- <xsl:with-param name="destructor-for" select="$destructor-for"/>
- <xsl:with-param name="copy-assign-for" select="$copy-assign-for"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="standalone" select="$standalone"/>
- <xsl:with-param name="suppress-template" select="true()"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- Check if we can put the entire declaration on a single
- line. -->
- <xsl:when test="not($end-column > $max-columns)">
- <!-- Emit template header, if not suppressed -->
- <xsl:if test="not($suppress-template)">
- <xsl:apply-templates select="template" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="wrap" select="false()"/>
- <xsl:with-param name="highlight" select="true()"/>
- </xsl:apply-templates>
- </xsl:if>
-
- <!-- Emit specifiers -->
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="$specifiers"/>
- </xsl:call-template>
-
- <!-- Emit type, if any -->
- <xsl:choose>
- <!-- Conversion operators have an empty type, because the return
- type is part of the name -->
- <xsl:when test="$name='conversion-operator'"/>
-
- <!-- Constructors and destructors have no return type -->
- <xsl:when test="$constructor-for or $destructor-for"/>
-
- <!-- Copy assignment operators return a reference to the class
- they are in, unless another type has been explicitly
- provided in the element. -->
- <xsl:when test="$copy-assign-for and not(type)">
- <xsl:value-of select="concat($copy-assign-for, '& ')"/>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:apply-templates select="type" mode="highlight"/>
- <xsl:text> </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:call-template name="link-or-anchor">
- <xsl:with-param name="to" select="$link-to"/>
- <xsl:with-param name="text" select="$function-name"/>
- <xsl:with-param name="link-type" select="$link-type"/>
- <xsl:with-param name="highlight" select="true()"/>
- </xsl:call-template>
-
- <xsl:text>(</xsl:text>
- <xsl:call-template name="function-parameters">
- <xsl:with-param name="include-names" select="$include-names"/>
- <xsl:with-param name="indentation"
- select="$indentation + $template-length + string-length($type)
- + string-length($function-name) + 1"/>
- <xsl:with-param name="final" select="true()"/>
- </xsl:call-template>
- <xsl:text>)</xsl:text>
-
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="$postdeclarator"/>
- </xsl:call-template>
- <xsl:text>;</xsl:text>
- </xsl:when>
-
- <!-- This declaration will take multiple lines -->
- <xsl:otherwise>
- <!-- Emit specifiers -->
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="$specifiers"/>
- </xsl:call-template>
-
- <!-- Emit type, if any -->
- <xsl:choose>
- <!-- Conversion operators have an empty type, because the return
- type is part of the name -->
- <xsl:when test="$name='conversion-operator'"/>
-
- <!-- Constructors and destructors have no return type -->
- <xsl:when test="$constructor-for or $destructor-for"/>
-
- <!-- Copy assignment operators return a reference to the class
- they are in, unless another type has been explicitly
- provided in the element. -->
- <xsl:when test="$copy-assign-for and not(type)">
- <xsl:value-of select="concat($copy-assign-for, '& ')"/>
- </xsl:when>
-
- <xsl:otherwise>
- <xsl:apply-templates select="type" mode="highlight"/>
- <xsl:text> </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test="string-length($type) > $boost.short.result.type">
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Determine how many columns the type and storage
- specifiers take on the same line as the function name. -->
- <xsl:variable name="type-length">
- <xsl:choose>
- <xsl:when test="string-length($type) > $boost.short.result.type">
- 0
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string-length($type)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:call-template name="link-or-anchor">
- <xsl:with-param name="to" select="$link-to"/>
- <xsl:with-param name="text" select="$function-name"/>
- <xsl:with-param name="link-type" select="$link-type"/>
- <xsl:with-param name="highlight" select="true()"/>
- </xsl:call-template>
- <xsl:text>(</xsl:text>
- <xsl:call-template name="function-parameters">
- <xsl:with-param name="include-names" select="$include-names"/>
- <xsl:with-param name="indentation"
- select="$indentation + $type-length
- + string-length($function-name) + 1"/>
- <xsl:with-param name="final" select="true()"/>
- </xsl:call-template>
- <xsl:text>)</xsl:text>
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="$postdeclarator"/>
- </xsl:call-template>
- <xsl:text>;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Synopsis of function parameters, e.g., "(const T&, int x = 5)" -->
- <xsl:template name="function-parameters">
- <!-- Indentation level of this parameter list -->
- <xsl:param name="indentation"/>
-
- <!-- True if we should include parameter names -->
- <xsl:param name="include-names" select="true()"/>
-
- <!-- True if we should wrap function parameters to the next line -->
- <xsl:param name="wrap" select="true()"/>
-
- <!-- True if we are printing the final output -->
- <xsl:param name="final" select="false()"/>
-
- <!-- Internal: The prefix to emit before a parameter -->
- <xsl:param name="prefix" select="''"/>
-
- <!-- Internal: The list of parameters -->
- <xsl:param name="parameters" select="parameter"/>
-
- <!-- Internal: The column we are on -->
- <xsl:param name="column" select="$indentation"/>
-
- <!-- Internal: Whether this is the first parameter on this line or not -->
- <xsl:param name="first-on-line" select="true()"/>
-
- <xsl:if test="$parameters">
- <!-- Information for this parameter -->
- <xsl:variable name="parameter" select="$parameters[position()=1]"/>
- <xsl:variable name="pack">
- <xsl:if test="$parameter/@pack=1"><xsl:text>...</xsl:text></xsl:if>
- </xsl:variable>
- <xsl:variable name="name">
- <xsl:if test="$include-names and $parameter/@name != ''">
- <xsl:text> </xsl:text><xsl:value-of select="$parameter/@name"/>
- </xsl:if>
- </xsl:variable>
-
- <xsl:variable name="type" select="string($parameter/paramtype)"/>
-
- <xsl:variable name="default">
- <xsl:choose>
- <xsl:when test="$parameter/@default">
- <xsl:text> = </xsl:text>
- <xsl:value-of select="$parameter/@default"/>
- </xsl:when>
- <xsl:when test="$parameter/default">
- <xsl:text> = </xsl:text>
- <xsl:choose>
- <xsl:when test="$final">
- <xsl:apply-templates
- select="$parameter/default/*|$parameter/default/text()"
- mode="annotation"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string($parameter/default)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="text" select="concat($type, $pack, $name, $default)"/>
-
- <xsl:variable name="end-column"
- select="$column + string-length($prefix) + string-length($text)"/>
-
- <xsl:choose>
- <!-- Parameter goes on this line -->
- <xsl:when test="$first-on-line or ($end-column < $max-columns)
- or not($wrap)">
- <xsl:choose>
- <xsl:when test="$final">
- <xsl:value-of select="$prefix"/>
- <xsl:apply-templates
- select="$parameter/paramtype/*|$parameter/paramtype/text()"
- mode="annotation">
- <xsl:with-param name="highlight" select="true()"/>
- </xsl:apply-templates>
- <xsl:value-of select="$pack"/>
- <xsl:value-of select="$name"/>
- <xsl:copy-of select="$default"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($prefix, $text)"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:call-template name="function-parameters">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="include-names" select="$include-names"/>
- <xsl:with-param name="wrap" select="$wrap"/>
- <xsl:with-param name="final" select="$final"/>
- <xsl:with-param name="parameters"
- select="$parameters[position()!=1]"/>
- <xsl:with-param name="prefix" select="', '"/>
- <xsl:with-param name="column" select="$end-column"/>
- <xsl:with-param name="first-on-line" select="false()"/>
- </xsl:call-template>
- </xsl:when>
- <!-- Parameter goes on next line -->
- <xsl:otherwise>
- <!-- The comma goes on this line -->
- <xsl:value-of select="$prefix"/><xsl:text> </xsl:text>
-
- <!-- Indent and print the parameter -->
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <xsl:choose>
- <xsl:when test="$final">
- <xsl:apply-templates
- select="$parameter/paramtype/*|$parameter/paramtype/text()"
- mode="annotation">
- <xsl:with-param name="highlight" select="true()"/>
- </xsl:apply-templates>
- <xsl:value-of select="$pack"/>
- <xsl:value-of select="$name"/>
- <xsl:value-of select="$default"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($prefix, $text)"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- Emit next parameter -->
- <xsl:call-template name="function-parameters">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="include-names" select="$include-names"/>
- <xsl:with-param name="wrap" select="$wrap"/>
- <xsl:with-param name="final" select="$final"/>
- <xsl:with-param name="parameters"
- select="$parameters[position()!=1]"/>
- <xsl:with-param name="prefix" select="', '"/>
- <xsl:with-param name="column"
- select="1 + string-length($text) + $indentation"/>
- <xsl:with-param name="first-on-line" select="false()"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <!-- Function synopsis -->
- <xsl:template match="function|method" mode="synopsis">
- <xsl:param name="indentation"/>
-
- <!-- True if we should compact this function -->
- <xsl:variable name="compact"
- select="not (para|description|requires|effects|postconditions|returns|
- throws|complexity|notes|rationale) and
- ($boost.compact.function='1') and
- not (local-name(.)='method')"/>
-
- <xsl:choose>
- <xsl:when test="$compact">
- <xsl:if test="purpose">
- <!-- Compact display outputs the purpose as a comment (if
- there is one) and the entire function declaration. -->
- <xsl:text> </xsl:text>
- <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/*|purpose/text()"
- mode="purpose"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="is-reference" select="true()"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="is-reference" select="false()"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="overloaded-function|overloaded-method" mode="synopsis">
- <xsl:param name="indentation"/>
-
- <xsl:variable name="name" select="@name"/>
-
- <!-- True if we should compact this function -->
- <xsl:variable name="compact"
- select="not (para|description|requires|effects|postconditions|returns|
- throws|complexity|notes|rationale) and
- ($boost.compact.function='1') and
- not (local-name(.)='overloaded-method')"/>
-
- <xsl:choose>
- <xsl:when test="$compact">
- <xsl:if test="purpose">
- <!-- Compact display outputs the purpose as a comment (if
- there is one) and the entire function declaration. -->
- <xsl:text> </xsl:text>
- <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="annotation"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:for-each select="signature">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- <xsl:when test="local-name(..)='namespace'">
- <xsl:variable name="link-to">
- <xsl:call-template name="generate.id"/>
- </xsl:variable>
-
- <xsl:for-each select="signature">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="is-reference" select="false()"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="link-to" select="$link-to"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:for-each select="signature">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="is-reference" select="false()"/>
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Group free functions together under a category name (header synopsis)-->
- <xsl:template match="free-function-group" mode="header-synopsis">
- <xsl:param name="class"/>
- <xsl:param name="indentation"/>
- <xsl:apply-templates select="function|overloaded-function" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <!-- Constructors, destructor, and assignment operators -->
- <xsl:template name="construct-copy-destruct-synopsis">
- <xsl:param name="indentation"/>
- <xsl:if test="constructor|copy-assignment|destructor">
- <xsl:if test="typedef|static-constant">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <emphasis>
- <xsl:text>// </xsl:text>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- <xsl:text>construct-copy-destruct</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="text" select="'construct/copy/destruct'"/>
- </xsl:call-template>
- </emphasis>
- <xsl:apply-templates select="constructor" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="copy-assignment" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="destructor" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="construct-copy-destruct-reference">
- <xsl:if test="constructor|copy-assignment|destructor">
- <xsl:call-template name="member-documentation">
- <xsl:with-param name="name">
- <xsl:call-template name="anchor">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- <xsl:text>construct-copy-destruct</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="text" select="''"/>
- </xsl:call-template>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text">
- <xsl:call-template name="object-name"/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- <xsl:call-template name="access-name"/>
- <xsl:text> construct/copy/destruct</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="text">
- <orderedlist>
- <xsl:apply-templates select="constructor" mode="reference"/>
- <xsl:apply-templates select="copy-assignment" mode="reference"/>
- <xsl:apply-templates select="destructor" mode="reference"/>
- </orderedlist>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="constructor" mode="reference">
- <xsl:call-template name="function.documentation">
- <xsl:with-param name="text">
- <para>
- <xsl:call-template name="preformatted">
- <xsl:with-param name="text">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="constructor-for">
- <xsl:call-template name="object-name"/>
- </xsl:with-param>
- <xsl:with-param name="standalone" select="true()"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </para>
- <xsl:call-template name="function-requirements"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="copy-assignment" mode="reference">
- <xsl:call-template name="function.documentation">
- <xsl:with-param name="text">
- <para>
- <xsl:call-template name="preformatted">
- <xsl:with-param name="text">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="copy-assign-for">
- <xsl:call-template name="object-name"/>
- </xsl:with-param>
- <xsl:with-param name="standalone" select="true()"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </para>
- <xsl:call-template name="function-requirements"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="destructor" mode="reference">
- <xsl:call-template name="function.documentation">
- <xsl:with-param name="text">
- <para>
- <xsl:call-template name="preformatted">
- <xsl:with-param name="text">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="destructor-for">
- <xsl:call-template name="object-name"/>
- </xsl:with-param>
- <xsl:with-param name="standalone" select="true()"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </para>
- <xsl:call-template name="function-requirements"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Templates for functions -->
- <xsl:template name="function.documentation">
- <xsl:param name="text"/>
- <xsl:choose>
- <xsl:when test="count(ancestor::free-function-group) > 0
- or count(ancestor::method-group) > 0
- or local-name(.)='constructor'
- or local-name(.)='copy-assignment'
- or local-name(.)='destructor'">
- <listitem><xsl:copy-of select="$text"/></listitem>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Semantic descriptions of functions -->
- <xsl:template name="function-requirements">
- <xsl:param name="namespace-reference" select="false()"/>
-
- <xsl:if test="$namespace-reference=false()">
- <xsl:apply-templates select="purpose/*|purpose/text()"/>
- </xsl:if>
-
- <xsl:apply-templates select="description/*"/>
-
- <xsl:if test="parameter/description|signature/parameter/description|
- requires|effects|postconditions|returns|throws|complexity|
- notes|rationale">
- <variablelist spacing="compact">
- <xsl:processing-instruction name="dbhtml">
- list-presentation="table"
- </xsl:processing-instruction>
-
- <!-- Document parameters -->
- <xsl:if test="parameter/description|signature/parameter/description">
- <varlistentry>
- <term>Parameters:</term>
- <listitem>
- <variablelist spacing="compact">
- <xsl:processing-instruction name="dbhtml">
- list-presentation="table"
- </xsl:processing-instruction>
- <xsl:for-each select="parameter|signature/parameter">
- <xsl:sort select="attribute::name"/>
- <xsl:if test="description">
- <varlistentry>
- <term>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text" select="@name"/>
- </xsl:call-template>
- </term>
- <listitem>
- <xsl:apply-templates select="description/*"/>
- </listitem>
- </varlistentry>
- </xsl:if>
- </xsl:for-each>
- </variablelist>
- </listitem>
- </varlistentry>
- </xsl:if>
-
- <!-- Document rest of function's contract -->
- <xsl:for-each select="requires|effects|postconditions|returns|throws|complexity|
- notes|rationale">
- <varlistentry>
- <term><xsl:call-template name="function.requirement.name"/>:</term>
- <listitem>
- <xsl:apply-templates select="./*|./text()" mode="annotation"/>
- </listitem>
- </varlistentry>
- </xsl:for-each>
-
- </variablelist>
- </xsl:if>
-
- <xsl:if test="para">
- <xsl:message>
- <xsl:text>Warning: Use of 'para' elements in a function is deprecated. </xsl:text>
- <xsl:text> Wrap them in a 'description' element.</xsl:text>
- </xsl:message>
- <xsl:call-template name="print.warning.context"/>
- <xsl:apply-templates select="para"/>
- </xsl:if>
-
- </xsl:template>
-
- <xsl:template name="function.requirement.name">
- <xsl:param name="node" select="."/>
- <xsl:choose>
- <xsl:when test="local-name($node)='requires'">Requires</xsl:when>
- <xsl:when test="local-name($node)='effects'">Effects</xsl:when>
- <xsl:when test="local-name($node)='postconditions'">
- <xsl:text>Postconditions</xsl:text>
- </xsl:when>
- <xsl:when test="local-name($node)='returns'">Returns</xsl:when>
- <xsl:when test="local-name($node)='throws'">Throws</xsl:when>
- <xsl:when test="local-name($node)='complexity'">Complexity</xsl:when>
- <xsl:when test="local-name($node)='notes'">Notes</xsl:when>
- <xsl:when test="local-name($node)='rationale'">Rationale</xsl:when>
- <xsl:otherwise>
- <xsl:message>
- <xsl:text>Error: unhandled node type `</xsl:text>
- <xsl:value-of select="local-name($node)"/>
- <xsl:text>' in template function.requirement.name.</xsl:text>
- </xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Function reference -->
- <xsl:template match="function|method" mode="reference">
- <!-- True if we should compact this function -->
- <xsl:variable name="compact"
- select="not (para|description|requires|effects|postconditions|returns|
- throws|complexity|notes|rationale) and
- ($boost.compact.function='1') and
- not (local-name(.)='method')"/>
-
- <xsl:if test="not ($compact)">
- <xsl:call-template name="function.documentation">
- <xsl:with-param name="text">
- <para>
- <xsl:call-template name="preformatted">
- <xsl:with-param name="text">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="link-type" select="'anchor'"/>
- <xsl:with-param name="standalone" select="true()"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </para>
- <xsl:call-template name="function-requirements"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- Reference for functions at namespace level -->
- <xsl:template match="function" mode="namespace-reference">
- <!-- True if we should compact this function -->
- <xsl:variable name="compact"
- select="not (para|description|requires|effects|postconditions|returns|
- throws|complexity|notes|rationale) and
- ($boost.compact.function='1')"/>
-
- <xsl:if test="not ($compact)">
- <xsl:call-template name="reference-documentation">
- <xsl:with-param name="name">
- <xsl:text>Function </xsl:text>
- <xsl:if test="template">
- <xsl:text>template </xsl:text>
- </xsl:if>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text" select="@name"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="refname">
- <xsl:call-template name="fully-qualified-name">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
- <xsl:with-param name="anchor">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="synopsis">
- <xsl:call-template name="header-link"/>
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="link-type" select="'none'"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text">
- <xsl:call-template name="function-requirements">
- <xsl:with-param name="namespace-reference" select="true()"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="overloaded-function" mode="reference">
- <xsl:variable name="name" select="@name"/>
-
- <!-- True if we should compact this function -->
- <xsl:variable name="compact"
- select="not (para|description|requires|effects|postconditions|returns|
- throws|complexity|notes|rationale) and
- ($boost.compact.function='1')"/>
-
- <xsl:if test="not ($compact)">
- <xsl:call-template name="function.documentation">
- <xsl:with-param name="text">
- <para>
- <xsl:attribute name="id">
- <xsl:call-template name="generate.id"/>
- </xsl:attribute>
-
- <xsl:call-template name="preformatted">
- <xsl:with-param name="text">
- <xsl:for-each select="signature">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="standalone" select="true()"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </para>
- <xsl:call-template name="function-requirements"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="overloaded-function" mode="namespace-reference">
- <!-- True if we should compact this function -->
- <xsl:variable name="compact"
- select="not (para|description|requires|effects|postconditions|returns|
- throws|complexity|notes|rationale) and
- ($boost.compact.function='1')"/>
-
- <xsl:variable name="name" select="@name"/>
-
- <xsl:if test="not ($compact)">
- <xsl:call-template name="reference-documentation">
- <xsl:with-param name="name">
- <xsl:text>Function </xsl:text>
- <xsl:if test="template">
- <xsl:text>template </xsl:text>
- </xsl:if>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text" select="@name"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="refname">
- <xsl:call-template name="fully-qualified-name">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
- <xsl:with-param name="anchor">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="synopsis">
- <xsl:call-template name="header-link"/>
- <xsl:for-each select="signature">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="link-type" select="'none'"/>
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:with-param>
- <xsl:with-param name="text">
- <xsl:call-template name="function-requirements">
- <xsl:with-param name="namespace-reference" select="true()"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="overloaded-method" mode="reference">
- <xsl:variable name="name" select="@name"/>
-
- <xsl:call-template name="function.documentation">
- <xsl:with-param name="text">
- <para>
- <xsl:call-template name="preformatted">
- <xsl:with-param name="text">
- <xsl:call-template name="anchor">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:for-each select="signature">
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="standalone" select="true()"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </para>
- <xsl:call-template name="function-requirements"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Group member functions together under a category name (synopsis)-->
- <xsl:template match="method-group" mode="synopsis">
- <xsl:param name="indentation"/>
- <xsl:if test="count(child::*) > 0">
- <xsl:text> </xsl:text>
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <emphasis>
- <xsl:text>// </xsl:text>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="text" select="string(@name)"/>
- </xsl:call-template>
- </emphasis>
- <xsl:apply-templates select="method|overloaded-method"
- mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:template>
-
- <!-- Group member functions together under a category name (reference)-->
- <xsl:template match="method-group" mode="reference">
- <xsl:if test="count(child::*) > 0">
- <xsl:call-template name="member-documentation">
- <xsl:with-param name="name">
- <xsl:call-template name="anchor">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="text" select="''"/>
- </xsl:call-template>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text">
- <xsl:call-template name="object-name"/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- <xsl:value-of select="@name"/>
- </xsl:with-param>
- <xsl:with-param name="text">
- <orderedlist>
- <xsl:apply-templates select="method|overloaded-method"
- mode="reference"/>
- </orderedlist>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- Group free functions together under a category name (synopsis)-->
- <xsl:template match="free-function-group" mode="synopsis">
- <xsl:param name="class"/>
- <xsl:param name="indentation"/>
- <xsl:text> </xsl:text>
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <emphasis>
- <xsl:text>// </xsl:text>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="text" select="string(@name)"/>
- </xsl:call-template>
- </emphasis>
- <xsl:apply-templates select="function|overloaded-function" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <!-- Group free functions together under a category name (reference)-->
- <xsl:template match="free-function-group" mode="reference">
- <xsl:param name="class"/>
- <xsl:call-template name="member-documentation">
- <xsl:with-param name="name">
- <xsl:call-template name="anchor">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="text" select="''"/>
- </xsl:call-template>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text" select="$class"/>
- </xsl:call-template>
- <xsl:value-of select="concat(' ',@name)"/>
- </xsl:with-param>
- <xsl:with-param name="text">
- <orderedlist>
- <xsl:apply-templates select="function|overloaded-function"
- mode="reference"/>
- </orderedlist>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8" ?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
- <xsl:template name="global-synopsis">
- <xsl:param name="indentation" select="0" />
- <xsl:if test="not(local-name(preceding-sibling::*[position()=1])=local-name(.)) and (position() > 1)">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation" />
- </xsl:call-template>
- <xsl:call-template name="global-synopsis-impl">
- <xsl:with-param name="link-type" select="'link'" />
- </xsl:call-template>
- </xsl:template>
- <xsl:template name="global-reference">
- <xsl:call-template name="reference-documentation">
- <xsl:with-param name="refname">
- <xsl:call-template name="fully-qualified-name">
- <xsl:with-param name="node" select="." />
- </xsl:call-template>
- <xsl:apply-templates select="specialization" />
- </xsl:with-param>
- <xsl:with-param name="purpose" select="purpose/*|purpose/text()" />
- <xsl:with-param name="anchor">
- <xsl:call-template name="generate.id" />
- </xsl:with-param>
- <xsl:with-param name="name">
- <xsl:text>Global </xsl:text>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text" select="@name" />
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="synopsis">
- <xsl:call-template name="header-link"/>
- <xsl:call-template name="global-synopsis-impl">
- <xsl:with-param name="link-type" select="'none'" />
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text">
- <xsl:apply-templates select="description" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
- <xsl:template name="global-synopsis-impl">
- <xsl:param name="link-type" />
- <xsl:if test="@specifiers">
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="@specifiers" />
- </xsl:call-template>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:apply-templates select="type/*|type/text()" mode="annotation" />
- <xsl:text> </xsl:text>
- <xsl:call-template name="link-or-anchor">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id" select="." />
- </xsl:with-param>
- <xsl:with-param name="text" select="@name" />
- <xsl:with-param name="link-type" select="$link-type" />
- </xsl:call-template>
- <xsl:text>;</xsl:text>
- </xsl:template>
- <xsl:template match="data-member" mode="generate.id">
- <xsl:call-template name="fully-qualified-id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:template>
-</xsl:stylesheet>
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
+<xsl:stylesheet exclude-result-prefixes="d"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
- xmlns:exsl="http://exslt.org/common"
- exclude-result-prefixes="exsl d"
+xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
version="1.0">
<xsl:param name="html.stylesheet">
<xsl:choose>
<xsl:when test = "$boost.defaults = 'Boost'">
- <xsl:value-of select = "concat($boost.root, '/doc/src/boostbook.css')"/>
+ <xsl:value-of select = "concat($boost.root, '/boostbook.css')"/>
</xsl:when>
<xsl:otherwise>
boostbook.css
</xsl:choose>
</xsl:param>
+ <xsl:param name="boost.graphics.root">
+ <xsl:choose>
+ <xsl:when test = "$boost.defaults = 'Boost'">
+ <xsl:value-of select = "concat($boost.root, '/images/')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select = "'images/'"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+
<xsl:param name="admon.style"/>
<xsl:param name="admon.graphics">1</xsl:param>
<xsl:param name="boostbook.verbose" select="0"/>
<xsl:param name="chunk.quietly" select="not(number($boostbook.verbose))"/>
<xsl:param name="toc.max.depth">2</xsl:param>
<xsl:param name="callout.graphics.number.limit">15</xsl:param>
- <xsl:param name = "admon.graphics.path"
- select = "concat($boost.root, '/doc/html/images/')"/>
- <xsl:param name = "navig.graphics.path"
- select = "concat($boost.root, '/doc/html/images/')"/>
+ <xsl:param name = "admon.graphics.path" select="$boost.graphics.root" />
+ <xsl:param name = "navig.graphics.path" select="$boost.graphics.root" />
<xsl:param name = "callout.graphics.path"
- select = "concat($boost.root, '/doc/src/images/callouts/')"/>
+ select = "concat($boost.graphics.root, 'callouts/')"/>
<xsl:param name="admon.style">
</xsl:template>
<!-- Footer Copyright -->
- <xsl:template match="copyright" mode="boost.footer">
+ <xsl:template match="d:copyright" mode="boost.footer">
<xsl:if test="position() > 1">
<br/>
</xsl:if>
</xsl:call-template>
<xsl:call-template name="gentext.space"/>
<xsl:call-template name="copyright.years">
- <xsl:with-param name="years" select="year"/>
+ <xsl:with-param name="years" select="d:year"/>
<xsl:with-param name="print.ranges" select="$make.year.ranges"/>
<xsl:with-param name="single.year.ranges"
select="$make.single.year.ranges"/>
</xsl:call-template>
<xsl:call-template name="gentext.space"/>
- <xsl:apply-templates select="holder" mode="titlepage.mode"/>
+ <xsl:apply-templates select="d:holder" mode="titlepage.mode"/>
</xsl:template>
<!-- Footer License -->
- <xsl:template match="legalnotice" mode="boost.footer">
- <xsl:apply-templates select="para" mode="titlepage.mode" />
+ <xsl:template match="d:legalnotice" mode="boost.footer">
+ <xsl:apply-templates select="d:para" mode="titlepage.mode" />
</xsl:template>
<xsl:template name="user.footer.content">
</td>
<td align="right">
<div class = "copyright-footer">
- <xsl:apply-templates select="ancestor::*/*/copyright"
+ <xsl:apply-templates select="ancestor::*/*/d:copyright"
mode="boost.footer"/>
- <xsl:apply-templates select="ancestor::*/*/legalnotice"
+ <xsl:apply-templates select="ancestor::*/*/d:legalnotice"
mode="boost.footer"/>
</div>
</td>
<!-- We don't want refentry's to show up in the TOC because they
will merely be redundant with the synopsis. -->
- <xsl:template match="refentry" mode="toc"/>
+ <xsl:template match="d:refentry" mode="toc"/>
<!-- override the behaviour of some DocBook elements for better
rendering facilities -->
- <xsl:template match = "programlisting[ancestor::informaltable]">
+ <xsl:template match = "d:programlisting[ancestor::d:informaltable]">
<pre class = "table-{name(.)}"><xsl:apply-templates/></pre>
</xsl:template>
- <xsl:template match = "refsynopsisdiv">
+ <xsl:template match = "d:refsynopsisdiv">
<h2 class = "{name(.)}-title">Synopsis</h2>
<div class = "{name(.)}">
<xsl:apply-templates/>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
- version="1.0">
-
- <!-- Import the HTML chunking stylesheet -->
- <xsl:import
- href="http://docbook.sourceforge.net/release/xsl/current/htmlhelp/htmlhelp.xsl"/>
-
- <xsl:param name="admon.style"/>
- <xsl:param name="admon.graphics">1</xsl:param>
- <xsl:param name="boostbook.verbose" select="0"/>
- <xsl:param name="html.stylesheet" select="'boostbook.css'"/>
- <xsl:param name="chapter.autolabel" select="1"/>
- <xsl:param name="use.id.as.filename" select="1"/>
- <xsl:param name="refentry.generate.name" select="0"/>
- <xsl:param name="refentry.generate.title" select="1"/>
- <xsl:param name="make.year.ranges" select="1"/>
- <xsl:param name="generate.manifest" select="1"/>
- <xsl:param name="callout.graphics.number.limit">15</xsl:param>
- <xsl:param name="draft.mode">no</xsl:param>
- <xsl:param name="admon.graphics" select="1"/>
-
- <xsl:template name="format.cvs.revision">
- <xsl:param name="text"/>
-
- <!-- Remove the "$Date: " -->
- <xsl:variable name="text.noprefix"
- select="substring-after($text, '$Date: ')"/>
-
- <!-- Grab the year -->
- <xsl:variable name="year" select="substring-before($text.noprefix, '/')"/>
- <xsl:variable name="text.noyear"
- select="substring-after($text.noprefix, '/')"/>
-
- <!-- Grab the month -->
- <xsl:variable name="month" select="substring-before($text.noyear, '/')"/>
- <xsl:variable name="text.nomonth"
- select="substring-after($text.noyear, '/')"/>
-
- <!-- Grab the year -->
- <xsl:variable name="day" select="substring-before($text.nomonth, ' ')"/>
- <xsl:variable name="text.noday"
- select="substring-after($text.nomonth, ' ')"/>
-
- <!-- Get the time -->
- <xsl:variable name="time" select="substring-before($text.noday, ' ')"/>
-
- <xsl:variable name="month.name">
- <xsl:choose>
- <xsl:when test="$month=1">January</xsl:when>
- <xsl:when test="$month=2">February</xsl:when>
- <xsl:when test="$month=3">March</xsl:when>
- <xsl:when test="$month=4">April</xsl:when>
- <xsl:when test="$month=5">May</xsl:when>
- <xsl:when test="$month=6">June</xsl:when>
- <xsl:when test="$month=7">July</xsl:when>
- <xsl:when test="$month=8">August</xsl:when>
- <xsl:when test="$month=9">September</xsl:when>
- <xsl:when test="$month=10">October</xsl:when>
- <xsl:when test="$month=11">November</xsl:when>
- <xsl:when test="$month=12">December</xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:value-of select="concat($month.name, ' ', $day, ', ', $year, ' at ',
- $time, ' GMT')"/>
- </xsl:template>
-
-
- <xsl:template name="format.svn.revision">
- <xsl:param name="text"/>
-
- <!-- Remove the "$Date: " -->
- <xsl:variable name="text.noprefix"
- select="substring-after($text, '$Date: ')"/>
-
- <!-- Grab the year -->
- <xsl:variable name="year" select="substring-before($text.noprefix, '-')"/>
- <xsl:variable name="text.noyear"
- select="substring-after($text.noprefix, '-')"/>
-
- <!-- Grab the month -->
- <xsl:variable name="month" select="substring-before($text.noyear, '-')"/>
- <xsl:variable name="text.nomonth"
- select="substring-after($text.noyear, '-')"/>
-
- <!-- Grab the year -->
- <xsl:variable name="day" select="substring-before($text.nomonth, ' ')"/>
- <xsl:variable name="text.noday"
- select="substring-after($text.nomonth, ' ')"/>
-
- <!-- Get the time -->
- <xsl:variable name="time" select="substring-before($text.noday, ' ')"/>
- <xsl:variable name="text.notime"
- select="substring-after($text.noday, ' ')"/>
-
- <!-- Get the timezone -->
- <xsl:variable name="timezone" select="substring-before($text.notime, ' ')"/>
-
- <xsl:variable name="month.name">
- <xsl:choose>
- <xsl:when test="$month=1">January</xsl:when>
- <xsl:when test="$month=2">February</xsl:when>
- <xsl:when test="$month=3">March</xsl:when>
- <xsl:when test="$month=4">April</xsl:when>
- <xsl:when test="$month=5">May</xsl:when>
- <xsl:when test="$month=6">June</xsl:when>
- <xsl:when test="$month=7">July</xsl:when>
- <xsl:when test="$month=8">August</xsl:when>
- <xsl:when test="$month=9">September</xsl:when>
- <xsl:when test="$month=10">October</xsl:when>
- <xsl:when test="$month=11">November</xsl:when>
- <xsl:when test="$month=12">December</xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:value-of select="concat($month.name, ' ', $day, ', ', $year, ' at ',
- $time, ' ', $timezone)"/>
- </xsl:template>
-
- <!-- We don't want refentry's to show up in the TOC because they
- will merely be redundant with the synopsis. -->
- <xsl:template match="refentry" mode="toc"/>
-
- <!-- override the behaviour of some DocBook elements for better
- rendering facilities -->
-
- <xsl:template match = "programlisting[ancestor::informaltable]">
- <pre class = "table-{name(.)}"><xsl:apply-templates/></pre>
- </xsl:template>
-
- <xsl:template match = "refsynopsisdiv">
- <h2 class = "{name(.)}-title">Synopsis</h2>
- <div class = "{name(.)}">
- <xsl:apply-templates/>
- </div>
- </xsl:template>
-
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
- version="1.0">
-
- <!-- Import the HTML stylesheet -->
- <xsl:import
- href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
- <xsl:import href="admon.xsl"/>
-
- <xsl:param name="admon.style"/>
- <xsl:param name="admon.graphics">1</xsl:param>
- <xsl:param name="chapter.autolabel" select="0"/>
- <xsl:param name="refentry.generate.name" select="0"/>
- <xsl:param name="refentry.generate.title" select="1"/>
- <xsl:param name="make.year.ranges" select="1"/>
-
-</xsl:stylesheet>
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
+<xsl:stylesheet exclude-result-prefixes="d"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
- xmlns:exsl="http://exslt.org/common"
- exclude-result-prefixes="exsl d"
- version="1.0">
+xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
+ version="1.0">
<!-- Import the HTML chunking stylesheet -->
<xsl:import
- href="http://docbook.sourceforge.net/release/xsl-ns/current/html/chunk.xsl"/>
+ href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
<xsl:import
- href="http://docbook.sourceforge.net/release/xsl-ns/current/html/math.xsl"/>
+ href="http://docbook.sourceforge.net/release/xsl/current/html/math.xsl"/>
<!-- Bring in the fast chunking overrides. There's nothing
that we need to override, so include instead of importing it. -->
<xsl:include
- href="http://docbook.sourceforge.net/release/xsl-ns/current/html/chunkfast.xsl"/>
+ href="http://docbook.sourceforge.net/release/xsl/current/html/chunkfast.xsl"/>
<!-- We have to make sure that our templates override all
docbook templates. Therefore, we include our own templates
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:template match="class-index">
-
- </xsl:template>
-
- <xsl:template match="function-index">
-
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:key name="library-categories" match="library"
- use="libraryinfo/librarycategory/@name"/>
-
- <xsl:template match="librarylist">
- <itemizedlist spacing="compact">
- <xsl:apply-templates select="//library"
- mode="build-library-list">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </itemizedlist>
- </xsl:template>
-
- <xsl:template name="library.link">
- <xsl:param name="node" select="."/>
- <xsl:param name="name" select="$node/attribute::name"/>
-
- <xsl:choose>
- <xsl:when test="$node/attribute::html-only = 1">
- <xsl:variable name="url">
- <xsl:choose>
- <xsl:when test="$node/attribute::url">
- <xsl:value-of select="$node/attribute::url"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($boost.root,
- '/libs/',
- $node/attribute::dirname,
- '/index.html')"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <ulink>
- <xsl:attribute name="url">
- <xsl:value-of select="$url"/>
- </xsl:attribute>
- <xsl:value-of select="$name"/>
- </ulink>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:choose>
- <xsl:when test="$node/attribute::id">
- <xsl:value-of select="$node/attribute::id"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="$node"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="text" select="$name"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="library" mode="build-library-list">
- <listitem>
- <simpara>
- <xsl:call-template name="library.link"/>
- <xsl:text> - </xsl:text>
- <xsl:apply-templates select="libraryinfo/librarypurpose"
- mode="build-library-list"/>
- </simpara>
- </listitem>
- </xsl:template>
-
- <xsl:template match="librarypurpose" mode="build-library-list">
- <xsl:apply-templates/>
- <xsl:text>, from </xsl:text>
- <xsl:apply-templates select="../author" mode="display-author-list"/>
- </xsl:template>
-
- <xsl:template match="author" mode="display-author-list">
- <xsl:if test="(position() > 1) and (count(../author) > 2)">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:if test="(position() = count(../author)) and (position() > 1)">
- <xsl:if test="position() < 3">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:text>and </xsl:text>
- </xsl:if>
- <xsl:apply-templates select="firstname/text()"/>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="surname/text()"/>
- <xsl:if test="(position() = count(../author))">
- <xsl:text>.</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="librarycategorylist">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="librarycategorydef">
- <section>
- <title><xsl:apply-templates/></title>
- <xsl:variable name="name" select="@name"/>
- <itemizedlist spacing="compact">
- <xsl:apply-templates select="key('library-categories', $name)"
- mode="build-library-list">
- <xsl:sort select="@name"/>
- </xsl:apply-templates>
- </itemizedlist>
- </section>
- </xsl:template>
-
- <xsl:template match="libraryinfo">
- <chapterinfo>
- <xsl:apply-templates select="author|authorgroup/author|copyright|legalnotice"/>
- </chapterinfo>
- </xsl:template>
-
- <xsl:template match="librarypurpose|librarycategory"/>
-
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:exsl="http://exslt.org/common"
- version="1.0">
-
- <!-- Maximum length of directory and file names is 31 characters.
- '.html' uses 5 characters.
- 31 - 5 = 26 -->
- <xsl:param name="boost.max.id.part.length">26</xsl:param>
-
- <!-- Generate an ID for the entity referenced -->
- <xsl:template name="generate.id">
- <xsl:param name="node" select="."/>
- <xsl:apply-templates select="$node" mode="generate.id"/>
- </xsl:template>
-
- <xsl:template match="*" mode="generate.id">
- <xsl:value-of select="generate-id(.)"/>
- <xsl:text>-bb</xsl:text>
- </xsl:template>
-
- <xsl:template name="strip-qualifiers-non-template">
- <xsl:param name="name"/>
- <xsl:choose>
- <xsl:when test="contains($name, '>')">
- <xsl:call-template name="strip-qualifiers-non-template">
- <xsl:with-param name="name" select="substring-after($name, '>')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($name, '::')">
- <xsl:call-template name="strip-qualifiers-non-template">
- <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="strip-balanced">
- <xsl:param name="name"/>
- <xsl:param name="open" select="'<'"/>
- <xsl:param name="close" select="'>'"/>
- <xsl:param name="depth" select="0"/>
- <xsl:choose>
- <xsl:when test="contains($name, $open)
- and not(contains(substring-before($name, $open), $close))">
- <xsl:call-template name="strip-balanced">
- <xsl:with-param name="name" select="substring-after($name, $open)"/>
- <xsl:with-param name="open" select="$open"/>
- <xsl:with-param name="close" select="$close"/>
- <xsl:with-param name="depth" select="$depth + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($name, $close) and ($depth > 1)">
- <xsl:call-template name="strip-balanced">
- <xsl:with-param name="name" select="substring-after($name, $close)"/>
- <xsl:with-param name="open" select="$open"/>
- <xsl:with-param name="close" select="$close"/>
- <xsl:with-param name="depth" select="$depth - 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="substring-after($name, $close)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="strip-qualifiers-template">
- <xsl:param name="name"/>
- <xsl:choose>
- <xsl:when test="contains($name, '::')
- and not(contains(substring-before($name, '::'), '<'))">
- <xsl:call-template name="strip-qualifiers-template">
- <xsl:with-param name="name" select="substring-after($name, '::')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="rest">
- <xsl:call-template name="strip-balanced">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$rest != ''">
- <xsl:call-template name="strip-qualifiers-template">
- <xsl:with-param name="name" select="$rest"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Strip the qualifiers off a qualified name and return the unqualified
- name. For instance, "boost::python::function" would become just
- "function".
- Must handle ns::foo -> foo
- Must handle ns::foo<bar::baz> -> foo<bar::baz>
- Must handle ns::foo<bar::baz>::nested -> nested
- Must handle ns::foo<x>::bar<y> -> bar<y> -->
- <xsl:template name="strip-qualifiers">
- <xsl:param name="name"/>
- <xsl:choose>
- <xsl:when test="substring($name, string-length($name)) = '>'">
- <xsl:call-template name="strip-qualifiers-template">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="strip-qualifiers-non-template">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Build the fully-qualified id of the given node -->
- <xsl:template name="fully-qualified-id">
- <xsl:param name="node"/>
-
- <xsl:apply-templates select="$node" mode="fully-qualified-name">
- <xsl:with-param name="is.id" select="true()"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <!-- Build the fully-qualified name of the given node -->
- <xsl:template name="fully-qualified-name">
- <xsl:param name="node"/>
- <xsl:apply-templates select="$node" mode="fully-qualified-name"/>
- </xsl:template>
-
- <!-- Hack to make the node we are building the current node so that the
- ancestor:: syntax will work -->
- <xsl:template match="*" mode="fully-qualified-name">
- <xsl:param name="is.id" select="false()" />
- <xsl:call-template name="build-fully-qualified-name">
- <xsl:with-param name="is.id" select="$is.id"/>
- </xsl:call-template>
- </xsl:template>
-
- <!-- The real routine that builds a fully-qualified name for the current
- node. -->
- <xsl:template name="build-fully-qualified-name">
- <xsl:param name="is.id" select="false()" />
-
- <!-- Determine the set of ancestor namespaces -->
- <xsl:variable name="ancestors"
- select="ancestor::namespace|
- ancestor::class|ancestor::struct|ancestor::union|
- ancestor::class-specialization|ancestor::struct-specialization|ancestor::union-specialization"/>
-
- <xsl:for-each select="$ancestors">
- <xsl:apply-templates select="." mode="fast-print-id-part">
- <xsl:with-param name="is.id" select="$is.id"/>
- </xsl:apply-templates>
- <xsl:choose>
- <xsl:when test="$is.id"><xsl:text>.</xsl:text></xsl:when>
- <xsl:otherwise><xsl:text>::</xsl:text></xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- <xsl:apply-templates select="." mode="fast-print-id-part">
- <xsl:with-param name="is.id" select="$is.id"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:variable name="elements-with-ids">
- <xsl:apply-templates select="namespace|class|struct|union|class-specialization|struct-specialization|union-specialization"
- mode="preprocess-ids"/>
- </xsl:variable>
-
- <xsl:variable name="fast-elements" select="exsl:node-set($elements-with-ids)"/>
-
- <xsl:template match="*" mode="preprocess-ids">
- <element>
- <xsl:attribute name="id">
- <xsl:value-of select="generate-id()"/>
- </xsl:attribute>
- <xsl:attribute name="part-id">
- <xsl:call-template name="print-id-part"/>
- </xsl:attribute>
- </element>
- </xsl:template>
-
- <xsl:template name="print-id-part">
- <xsl:apply-templates select="." mode="print-id-part"/>
- </xsl:template>
-
- <xsl:template match="*" mode="fast-print-id-part">
- <xsl:param name="is.id"/>
- <xsl:choose>
- <xsl:when test="not($is.id)">
- <xsl:apply-templates select="." mode="print-name"/>
- </xsl:when>
- <xsl:when test="$fast-elements[@id=generate-id()]">
- <xsl:value-of select="$fast-elements[@id=generate-id()]/@part-id"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." mode="print-id-part">
- <xsl:with-param name="is.id" select="$is.id"/>
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Print the part of a fully qualified name for a single element -->
- <xsl:template match="*" mode="print-id-part">
- <xsl:param name="is.id"/>
-
- <xsl:variable name="part">
- <xsl:apply-templates select="." mode="print-name"/>
- </xsl:variable>
-
- <xsl:variable name="unique-name">
- <xsl:apply-templates select="." mode="unique.name"/>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test=
- "$is.id and (
- string-length($part) > $boost.max.id.part.length or
- $unique-name = 0 or
- translate($part, '.<>;\:*?"| ', '') != $part
- )">
- <xsl:variable name="normalized" select="translate(normalize-space(translate($part, '.<>;\:*?"|_', ' ')), ' ', '_')"/>
- <xsl:value-of select =
- "concat(
- substring($normalized, 1, $boost.max.id.part.length - string-length(generate-id(.) - 1)),
- concat('_', generate-id(.)))"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$part"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Override this if an id might not be unique -->
- <xsl:template match="*" mode="unique.name">
- <xsl:value-of select="1"/>
- </xsl:template>
-
- <xsl:template match="function|overloaded-function" mode="unique.name">
- <xsl:value-of select="number(count(key('named-entities',
- translate(@name, $uppercase-letters, $lowercase-letters))) = 1)"/>
- </xsl:template>
-
- <!-- Print the name of the current node -->
- <xsl:template match="*" mode="print-name">
- <xsl:value-of select="@name"/>
- </xsl:template>
-
- <xsl:template match="template-arg" mode="print-name">
- <xsl:if test="position() > 1">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:value-of select="text()"/>
- <xsl:if test="@pack=1">
- <xsl:text>...</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template
- match="struct-specialization|class-specialization|union-specialization"
- mode="print-name">
- <xsl:value-of select="@name"/>
- <xsl:text><</xsl:text>
- <xsl:apply-templates select="specialization/template-arg" mode="print-name"/>
- <xsl:text>></xsl:text>
- </xsl:template>
-
- <xsl:template name="concat-directives">
- <xsl:param name="directives"/>
- <xsl:for-each select="$directives">
- <xsl:apply-templates select="." mode="print-name"/>
- <xsl:text>::</xsl:text>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="find-nodes-matching-name">
- <!-- The name we are looking for -->
- <xsl:param name="name"/>
-
- <!-- The context in which this name occurs -->
- <xsl:param name="context"/>
-
- <!-- The node that we are checking against -->
- <xsl:param name="nodes"/>
-
- <!-- The set of using directives for this context node -->
- <xsl:variable name="directives"
- select="$context/ancestor::*/using-namespace |
- $context/ancestor::namespace |
- $context/ancestor::*/using-class |
- $context/ancestor::class |
- $context/ancestor::struct"/>
-
- <xsl:variable name="directives-str">
- <xsl:call-template name="concat-directives">
- <xsl:with-param name="directives" select="$directives"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:apply-templates select="$nodes" mode="generate-cxx-links">
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="directives-str" select="$directives-str"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="*" mode="generate-cxx-links">
- <xsl:param name="name"/>
- <xsl:param name="directives-str"/>
-
- <xsl:variable name="node-name">
- <xsl:call-template name="fully-qualified-name">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="leading-chars"
- select="string-length($node-name) - string-length($name)"/>
-
- <!-- Check if this node matches any visible namespace -->
- <xsl:if test="string-length($node-name) >= string-length($name) and
- substring($node-name, $leading-chars + 1,
- string-length($name)) = $name">
- <xsl:variable name="qualifiers"
- select="substring($node-name, 1, $leading-chars)"/>
- <xsl:if test="contains($directives-str, $qualifiers)">
- <xsl:variable name="myid">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:variable>
- <cxx-link-helper>
- <xsl:attribute name="id">
- <xsl:value-of select="$myid"/>
- </xsl:attribute>
- <xsl:attribute name="namespace">
- <xsl:value-of select="$qualifiers"/>
- </xsl:attribute>
- <xsl:text>random text</xsl:text>
- </cxx-link-helper>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="cxx-link-name">
- <!-- The actual lookup node -->
- <xsl:param name="lookup"/>
-
- <!-- The type of name to lookup (e.g., class) -->
- <xsl:param name="type"/>
-
- <!-- The name we are looking for -->
- <xsl:param name="name"/>
-
- <!-- The name we will display -->
- <xsl:param name="display-name"/>
-
- <!-- The name we are looking for (unqualified)-->
- <xsl:param name="unqualified-name"/>
-
- <!-- The list of nodes that match the lookup node in both name and type -->
- <xsl:param name="nodes"/>
-
- <!-- Filter the nodes to leave only the ones that are in scope. -->
- <xsl:variable name="matches1">
- <xsl:call-template name="find-nodes-matching-name">
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="nodes" select="$nodes"/>
- <xsl:with-param name="context" select="$lookup"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="matches" select="exsl:node-set($matches1)//cxx-link-helper"/>
-
- <xsl:choose>
- <xsl:when test="count($matches) = 0">
- <xsl:message>
- <xsl:text>Cannot find </xsl:text>
- <xsl:value-of select="$type"/>
- <xsl:text> named '</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>'</xsl:text>
- </xsl:message>
- <xsl:value-of select="$display-name"/>
- </xsl:when>
- <xsl:otherwise>
- <!-- If we found more than one, print a message and take the first -->
- <xsl:if test="count($matches) > 1">
- <xsl:message>
- <xsl:text>Reference to </xsl:text>
- <xsl:value-of select="$type"/>
- <xsl:text> '</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>' is ambiguous. Found:</xsl:text>
- <xsl:for-each select="$matches">
- <xsl:text>
- Match in namespace ::</xsl:text>
- <xsl:value-of select="@namespace"/>
- </xsl:for-each>
- </xsl:message>
- </xsl:if>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:value-of select="$matches[position() = 1]/@id"/>
- </xsl:with-param>
- <xsl:with-param name="text" select="$display-name"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:template match="macro" mode="synopsis">
- <xsl:param name="indentation" select="0"/>
-
- <xsl:text> </xsl:text>
- <xsl:if
- test="not(local-name(preceding-sibling::*[position()=1])=local-name(.))">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <xsl:call-template name="macro-synopsis">
- <xsl:with-param name="link-type" select="'link'"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="macro" mode="reference">
- <xsl:call-template name="reference-documentation">
- <xsl:with-param name="refname" select="@name"/>
- <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
- <xsl:with-param name="anchor">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="name">
- <xsl:text>Macro </xsl:text>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text" select="@name"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="synopsis">
- <xsl:call-template name="header-link"/>
- <xsl:call-template name="macro-synopsis">
- <xsl:with-param name="link-type" select="'none'"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text">
- <xsl:apply-templates select="description"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="macro-synopsis">
- <xsl:param name="link-type"/>
-
- <xsl:call-template name="link-or-anchor">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id" select="."/>
- </xsl:with-param>
- <xsl:with-param name="text" select="@name"/>
- <xsl:with-param name="link-type" select="$link-type"/>
- </xsl:call-template>
-
- <xsl:if test="@kind='functionlike'">
- <xsl:text>(</xsl:text>
- <xsl:for-each select="macro-parameter">
- <xsl:if test="position() > 1">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:value-of select="@name"/>
- </xsl:for-each>
- <xsl:text>)</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="macro" mode="generate.id">
- <xsl:value-of select="@name"/>
- <xsl:if test="count(key('named-entities',
- translate(@name, $uppercase-letters, $lowercase-letters)))!=1">
- <xsl:text>_</xsl:text>
- <xsl:value-of select="generate-id(.)"/>
- </xsl:if>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <!-- Import the man pages stylesheet -->
- <xsl:import
- href="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"/>
-
- <xsl:param name="generate.manifest" select="1"/>
- <xsl:param name="manifest">man.manifest</xsl:param>
-
- <xsl:template match="literallayout">
- <xsl:text> .nf </xsl:text>
- <xsl:apply-templates/>
- <xsl:text> .fi </xsl:text>
- </xsl:template>
-
- <xsl:template match="para|simpara|remark" mode="list">
- <xsl:variable name="foo">
- <xsl:apply-templates/>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="literallayout">
- <xsl:copy-of select="$foo"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="normalize-space($foo)"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> </xsl:text>
- <xsl:if test="following-sibling::para or following-sibling::simpara or
- following-sibling::remark">
- <!-- Make sure multiple paragraphs within a list item don't -->
- <!-- merge together. -->
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="build.refentry.filename">
- <xsl:param name="node" select="."/>
- <xsl:variable name="section" select="$node/refmeta/manvolnum"/>
- <xsl:variable name="name" select="$node/refnamediv/refname[1]"/>
- <xsl:value-of select="concat('man', $section, '/',
- translate(normalize-space($name),
- '<>', '__'),
- '.', $section)"/>
-
- </xsl:template>
-
- <xsl:template match="refentry" mode="manifest">
- <xsl:call-template name="build.refentry.filename"/>
- <xsl:text> </xsl:text>
- </xsl:template>
-
- <xsl:template match="/">
- <xsl:choose>
- <xsl:when test="//refentry">
- <xsl:apply-templates select="//refentry"/>
- <xsl:if test="$generate.manifest=1">
- <xsl:call-template name="write.text.chunk">
- <xsl:with-param name="filename" select="$manifest"/>
- <xsl:with-param name="content">
- <xsl:value-of select="$manifest"/>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="//refentry" mode="manifest"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>No refentry elements!</xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-<xsl:template match="refentry">
- <xsl:variable name="section" select="refmeta/manvolnum"/>
- <xsl:variable name="name" select="refnamediv/refname[1]"/>
-
- <!-- standard man page width is 64 chars; 6 chars needed for the two
- (x) volume numbers, and 2 spaces, leaves 56 -->
- <xsl:variable name="twidth" select="(56 - string-length(refmeta/refentrytitle)) div 2"/>
-
- <xsl:variable name="reftitle"
- select="substring(refmeta/refentrytitle, 1, $twidth)"/>
-
- <xsl:variable name="title">
- <xsl:choose>
- <xsl:when test="refentryinfo/title">
- <xsl:value-of select="refentryinfo/title"/>
- </xsl:when>
- <xsl:when test="../referenceinfo/title">
- <xsl:value-of select="../referenceinfo/title"/>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="date">
- <xsl:choose>
- <xsl:when test="refentryinfo/date">
- <xsl:value-of select="refentryinfo/date"/>
- </xsl:when>
- <xsl:when test="../referenceinfo/date">
- <xsl:value-of select="../referenceinfo/date"/>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="productname">
- <xsl:choose>
- <xsl:when test="refentryinfo/productname">
- <xsl:value-of select="refentryinfo/productname"/>
- </xsl:when>
- <xsl:when test="../referenceinfo/productname">
- <xsl:value-of select="../referenceinfo/productname"/>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:call-template name="write.text.chunk">
- <xsl:with-param name="filename">
- <xsl:call-template name="build.refentry.filename"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:text>.\"Generated by db2man.xsl. Don't modify this, modify the source.
-.de Sh \" Subsection
-.br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
-..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Ip \" List item
-.br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
-..
-.TH "</xsl:text>
- <xsl:value-of select="translate($reftitle,'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
- <xsl:text>" </xsl:text>
- <xsl:value-of select="refmeta/manvolnum[1]"/>
- <xsl:text> "</xsl:text>
- <xsl:value-of select="normalize-space($date)"/>
- <xsl:text>" "</xsl:text>
- <xsl:value-of select="normalize-space($productname)"/>
- <xsl:text>" "</xsl:text>
- <xsl:value-of select="$title"/>
- <xsl:text>"
-</xsl:text>
- <xsl:apply-templates/>
- <xsl:text> </xsl:text>
-
- <!-- Author section -->
- <xsl:choose>
- <xsl:when test="refentryinfo//author">
- <xsl:apply-templates select="refentryinfo" mode="authorsect"/>
- </xsl:when>
- <xsl:when test="/book/bookinfo//author">
- <xsl:apply-templates select="/book/bookinfo" mode="authorsect"/>
- </xsl:when>
- <xsl:when test="/article/articleinfo//author">
- <xsl:apply-templates select="/article/articleinfo" mode="authorsect"/>
- </xsl:when>
- </xsl:choose>
-
- </xsl:with-param>
- </xsl:call-template>
- <!-- Now generate stub include pages for every page documented in
- this refentry (except the page itself) -->
- <xsl:for-each select="refnamediv/refname">
- <xsl:if test=". != $name">
- <xsl:call-template name="write.text.chunk">
- <xsl:with-param name="filename"
- select="concat(normalize-space(.), '.', $section)"/>
- <xsl:with-param name="content" select="concat('.so man',
- $section, '/', $name, '.', $section, ' ')"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:for-each>
-</xsl:template>
-
-</xsl:stylesheet>
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+<xsl:stylesheet exclude-result-prefixes="d"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
- xmlns:exsl="http://exslt.org/common"
- exclude-result-prefixes="exsl d"
- version="1.0">
+version="1.0">
<!-- Already included in the main style sheet -->
<!-- <xsl:import href="relative-href.xsl"/> -->
<!-- location of the various Boost elements -->
- <xsl:param name = "boost.root" select = "'../..'"/>
- <xsl:param name = "boost.website" select = "'http://www.boost.org'"/>
+ <xsl:param name = "boost.root" select = "'.'"/>
+ <xsl:param name = "api.website" select = "'http://wiki.docbook.org/topic/BoostBookIntegration'"/>
<!-- Logo image location, leave empty for no logo -->
<xsl:param name = "boost.image.src">
<xsl:if test = "$boost.defaults = 'Boost'">
- <xsl:value-of select = "concat($boost.root, '/boost.png')"/>
+ <xsl:value-of select = "concat($boost.root, '/db.png')"/>
</xsl:if>
</xsl:param>
<xsl:param name = "boost.image.alt">
<xsl:if test = "$boost.defaults = 'Boost'">
- <xsl:value-of select = "'Boost C++ Libraries'"/>
+ <xsl:value-of select = "'DocBook API Dcoumentation'"/>
</xsl:if>
</xsl:param>
<xsl:param name = "boost.image.w">
<xsl:if test = "$boost.defaults = 'Boost'">
- <xsl:value-of select = "277"/>
+ <xsl:value-of select = "177"/>
</xsl:if>
</xsl:param>
<xsl:param name = "boost.image.h">
<xsl:value-of select = "86"/>
</xsl:if>
</xsl:param>
- <xsl:param name = "boost.libraries">
+<!-- <xsl:param name = "boost.libraries">
<xsl:if test = "$boost.defaults = 'Boost'">
<xsl:value-of select = "concat($boost.root, '/libs/libraries.htm')"/>
</xsl:if>
</xsl:param>
-
+ -->
<!-- header -->
<xsl:template name = "header.navigation">
- <xsl:param name = "prev" select = "/foo"/>
- <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "prev" select = "/d:foo"/>
+ <xsl:param name = "next" select = "/d:foo"/>
<xsl:param name = "nav.context"/>
<xsl:variable name = "home" select = "/*[1]"/>
<xsl:with-param name="target" select="concat( $boost.root, '/index.html' )"/>
</xsl:call-template>
</xsl:variable>
- <xsl:variable name="libraries_link">
+<!-- <xsl:variable name="libraries_link">
<xsl:if test = "boolean($boost.libraries)">
<xsl:call-template name="href.target.relative">
<xsl:with-param name="target" select="$boost.libraries"/>
</xsl:call-template>
</xsl:if>
</xsl:variable>
- <xsl:variable name="people_link">
- <xsl:call-template name="href.target.relative">
- <xsl:with-param name="target" select="concat( $boost.website, '/users/people.html' )"/>
+ -->
+ <xsl:variable name="project_link">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="target" select="'http://wiki.docbook.org/topic/BoostBookIntegration'"/>
</xsl:call-template>
</xsl:variable>
- <xsl:variable name="faq_link">
+<!-- <xsl:variable name="faq_link">
<xsl:call-template name="href.target.relative">
<xsl:with-param name="target" select="concat( $boost.website, '/users/faq.html' )"/>
</xsl:call-template>
<xsl:with-param name="target" select="concat( $boost.root, '/more/index.htm' )"/>
</xsl:call-template>
</xsl:variable>
-
+ -->
<xsl:choose>
<xsl:when test = "$nav.border = 'Boost'">
<td align = "center" class = "boost-headtd"><a href = "{$home_link}" class = "boost-headelem">Home</a></td>
- <xsl:if test = "boolean($libraries_link)">
+<!-- <xsl:if test = "boolean($libraries_link)">
<td align = "center" class = "boost-headtd"><a href = "{$libraries_link}" class = "boost-headelem">Libraries</a></td>
</xsl:if>
- <td align = "center" class = "boost-headtd"><a href = "{$people_link}" class = "boost-headelem">People</a></td>
- <td align = "center" class = "boost-headtd"><a href = "{$faq_link}" class = "boost-headelem">FAQ</a></td>
- <td align = "center" class = "boost-headtd"><a href = "{$more_link}" class = "boost-headelem">More</a></td>
+ -->
+ <td align = "center" class = "boost-headtd"><a href = "{$project_link}" class = "boost-headelem">Project</a></td>
+<!-- <td align = "center" class = "boost-headtd"><a href = "{$faq_link}" class = "boost-headelem">FAQ</a></td>
+ <td align = "center" class = "boost-headtd"><a href = "{$more_link}" class = "boost-headelem">More</a></td> -->
</xsl:when><xsl:otherwise>
<td align = "center"><a href = "{$home_link}">Home</a></td>
- <td align = "center"><a href = "{$libraries_link}">Libraries</a></td>
- <td align = "center"><a href = "{$people_link}">People</a></td>
- <td align = "center"><a href = "{$faq_link}">FAQ</a></td>
- <td align = "center"><a href = "{$more_link}">More</a></td>
+<!-- <td align = "center"><a href = "{$libraries_link}">Libraries</a></td> -->
+ <td align = "center"><a href = "{$project_link}">Project</a></td>
+<!-- <td align = "center"><a href = "{$faq_link}">FAQ</a></td>
+ <td align = "center"><a href = "{$more_link}">More</a></td> -->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:with-param name="target" select="concat( $boost.root, '/index.html' )"/>
</xsl:call-template>
</xsl:variable>
- <xsl:variable name="libraries_link">
+<!-- <xsl:variable name="libraries_link">
<xsl:call-template name="href.target.relative">
<xsl:with-param name="target" select="$boost.libraries"/>
</xsl:call-template>
</xsl:variable>
- <xsl:variable name="people_link">
- <xsl:call-template name="href.target.relative">
- <xsl:with-param name="target" select="concat( $boost.website, '/users/people.html' )"/>
+ -->
+ <xsl:variable name="project_link">
+ <xsl:call-template name="href.target.uri">
+ <xsl:with-param name="target" select="'http://wiki.docbook.org/topic/BoostBookIntegration'"/>
</xsl:call-template>
</xsl:variable>
+<!--
<xsl:variable name="faq_link">
<xsl:call-template name="href.target.relative">
<xsl:with-param name="target" select="concat( $boost.website, '/users/faq.html' )"/>
<xsl:with-param name="target" select="concat( $boost.root, '/more/index.htm' )"/>
</xsl:call-template>
</xsl:variable>
-
+ -->
<td><div>
<xsl:if test = "$nav.border != 'Boost'">
<xsl:attribute name = "class">boost-toc</xsl:attribute>
</xsl:if>
<div><a href = "{$home_link}">Home</a></div>
- <div><a href = "{$libraries_link}">Libraries</a></div>
- <div><a href = "{$people_link}">People</a></div>
- <div><a href = "{$faq_link}">FAQ</a></div>
- <div><a href = "{$more_link}">More</a></div>
+<!-- <div><a href = "{$libraries_link}">Libraries</a></div> -->
+ <div><a href = "{$project_link}">Project</a></div>
+<!-- <div><a href = "{$faq_link}">FAQ</a></div>
+ <div><a href = "{$more_link}">More</a></div> -->
</div></td>
</xsl:template>
<!-- footer -->
<xsl:template name = "footer.navigation">
- <xsl:param name = "prev" select = "/foo"/>
- <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "prev" select = "/d:foo"/>
+ <xsl:param name = "next" select = "/d:foo"/>
<xsl:param name = "nav.context"/>
<hr/>
<!-- navbar -->
<xsl:template name = "navbar.docbook-homeinfo">
- <xsl:param name = "prev" select = "/foo"/>
- <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "prev" select = "/d:foo"/>
+ <xsl:param name = "next" select = "/d:foo"/>
<xsl:param name = "nav.context"/>
<xsl:variable name = "home" select = "/*[1]"/>
</xsl:template>
<xsl:template name = "navbar.docbook-prevnext">
- <xsl:param name = "prev" select = "/foo"/>
- <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "prev" select = "/d:foo"/>
+ <xsl:param name = "next" select = "/d:foo"/>
<xsl:param name = "nav.context"/>
<xsl:variable name = "up" select = "parent::*"/>
</xsl:template>
<xsl:template name = "navbar.spirit">
- <xsl:param name = "prev" select = "/foo"/>
- <xsl:param name = "next" select = "/foo"/>
+ <xsl:param name = "prev" select = "/d:foo"/>
+ <xsl:param name = "next" select = "/d:foo"/>
<xsl:param name = "nav.context"/>
<xsl:variable name = "home" select = "/*[1]"/>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:include href="annotation.xsl"/>
- <xsl:include href="template.xsl"/>
- <xsl:include href="function.xsl"/>
- <xsl:include href="type.xsl"/>
- <xsl:include href="source-highlight.xsl"/>
- <xsl:include href="utility.xsl"/>
- <xsl:include href="lookup.xsl"/>
- <xsl:include href="library.xsl"/>
- <xsl:include href="index.xsl"/>
- <xsl:include href="error.xsl"/>
- <xsl:include href="macro.xsl"/>
- <xsl:include href="testing/testsuite.xsl"/>
- <xsl:include href="caramel/concept2docbook.xsl"/>
-
- <xsl:template name="namespace-synopsis">
- <xsl:param name="indentation" select="0"/>
- <!-- Open namespace-->
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="concat('namespace ',@name)"/>
- </xsl:call-template>
- <xsl:text> {</xsl:text>
-
- <!-- Emit namespace types -->
- <xsl:apply-templates select="class|class-specialization|
- struct|struct-specialization|
- union|union-specialization|
- typedef|enum|data-member" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:apply-templates>
-
- <!-- Emit namespace functions -->
- <xsl:apply-templates
- select="free-function-group|function|overloaded-function"
- mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:apply-templates>
-
- <!-- Emit namespaces -->
- <xsl:apply-templates select="namespace" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:apply-templates>
-
- <!-- Close namespace -->
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <!-- Emit namespace synopsis -->
- <xsl:template match="namespace" mode="synopsis">
- <xsl:param name="indentation" select="0"/>
-
- <xsl:choose>
- <xsl:when test="count(ancestor::namespace)=0">
- <xsl:call-template name="namespace-synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> </xsl:text>
- <xsl:call-template name="namespace-synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Emit namespace reference -->
- <xsl:template match="namespace" mode="reference">
- <xsl:apply-templates select="namespace|free-function-group"
- mode="reference">
- <xsl:with-param name="indentation" select="0"/>
- </xsl:apply-templates>
- <xsl:apply-templates select="class|class-specialization|
- struct|struct-specialization|
- union|union-specialization|enum|function|
- overloaded-function|data-member|typedef"
- mode="namespace-reference"/>
- </xsl:template>
-
- <!-- Eat extra documentation when in the synopsis or reference sections -->
- <xsl:template match="para|section" mode="synopsis"/>
- <xsl:template match="para|section" mode="reference"/>
-
- <!-- Comment mode tries to wipe out any extra spacing in the output -->
- <xsl:template match="purpose" mode="comment">
- <xsl:apply-templates mode="comment"/>
- </xsl:template>
-
- <xsl:template match="simpara|para" mode="comment">
- <xsl:apply-templates select="text()|*" mode="comment"/>
- </xsl:template>
-
- <xsl:template match="text()" mode="comment">
- <xsl:value-of select="."/>
- </xsl:template>
-
- <xsl:template match="*" mode="comment">
- <xsl:apply-templates select="." mode="annotation"/>
- </xsl:template>
-</xsl:stylesheet>
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
-->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+<xsl:stylesheet exclude-result-prefixes="d"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://docbook.org/ns/docbook"
- xmlns:exsl="http://exslt.org/common"
- exclude-result-prefixes="exsl d"
- version="1.0">
+version="1.0">
-<xsl:import href="http://docbook.sourceforge.net/release/xsl-ns/current/lib/lib.xsl"/>
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/lib/lib.xsl"/>
<!-- ==================================================================== -->
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:param name="boost.syntax.highlight">1</xsl:param>
-
- <xsl:template name="source-highlight">
- <xsl:param name="text" select="."/>
- <xsl:choose>
- <xsl:when test="$boost.syntax.highlight='1'">
- <xsl:call-template name="highlight-text">
- <xsl:with-param name="text" select="$text"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:variable name="id-chars" select="'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_'"/>
- <xsl:variable name="keywords"
- select="' asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while '"/>
-
-
- <xsl:template name="highlight-identifier">
- <xsl:param name="identifier"/>
- <xsl:choose>
- <xsl:when test="contains($keywords, concat(' ', $identifier, ' '))">
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="$identifier"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$identifier"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="highlight-text-impl-ident">
- <xsl:param name="text"/>
- <xsl:param name="pos"/>
- <xsl:choose>
- <xsl:when test="string-length($text) + 1 = $pos">
- <xsl:call-template name="highlight-identifier">
- <xsl:with-param name="identifier" select="substring($text, 1, $pos - 1)"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($id-chars, substring($text, $pos, 1))">
- <xsl:call-template name ="highlight-text-impl-ident">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="pos" select="$pos + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="highlight-identifier">
- <xsl:with-param name="identifier" select="substring($text, 1, $pos - 1)"/>
- </xsl:call-template>
- <xsl:call-template name ="highlight-text-impl-root">
- <xsl:with-param name="text" select="substring($text, $pos)"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="highlight-text-impl-root">
- <xsl:param name="text"/>
- <xsl:choose>
- <xsl:when test="string-length($text) = 0"/>
- <xsl:when test="contains($id-chars, substring($text, 1, 1))">
- <xsl:call-template name="highlight-text-impl-ident">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="pos" select="2"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="substring($text, 1, 1)"/>
- <xsl:call-template name="highlight-text-impl-root">
- <xsl:with-param name="text" select="substring($text, 2)"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Perform C++ keyword highlighting on the given text -->
- <xsl:template name="highlight-text">
- <xsl:param name="text" select="."/>
- <xsl:call-template name="highlight-text-impl-root">
- <xsl:with-param name="text" select="$text"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="*" mode="highlight">
- <xsl:element name="{name(.)}">
- <xsl:for-each select="./@*">
- <xsl:choose>
- <xsl:when test="local-name(.)='last-revision'">
- <xsl:attribute
- name="rev:last-revision"
- namespace="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
->
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="{name(.)}">
- <xsl:value-of select="."/>
- </xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- <xsl:apply-templates mode="highlight"/>
- </xsl:element>
- </xsl:template>
-
- <xsl:template match="text()" mode="highlight">
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="."/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="classname|methodname|functionname|libraryname|enumname|
- conceptname|macroname|globalname" mode="highlight">
- <xsl:apply-templates select="." mode="annotation"/>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <!-- Determine the length of a template header synopsis -->
- <xsl:template name="template.synopsis.length">
- <xsl:variable name="text">
- <xsl:apply-templates select="template" mode="synopsis">
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="wrap" select="false()"/>
- <xsl:with-param name="highlight" select="false()"/>
- </xsl:apply-templates>
- </xsl:variable>
- <xsl:value-of select="string-length($text)"/>
- </xsl:template>
-
- <!-- Determine the length of a template header reference -->
- <xsl:template name="template.reference.length">
- <xsl:choose>
- <xsl:when test="not(template)">
- 0
- </xsl:when>
- <xsl:when test="template/*/purpose">
- <!-- TBD: The resulting value need only be greater than the number of
- columns. We chose to add 17 because it's funny for C++
- programmers. :) -->
- <xsl:value-of select="$max-columns + 17"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="template.synopsis.length"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Output a template header in synopsis mode -->
- <xsl:template match="template" mode="synopsis">
- <xsl:param name="indentation" select="0"/>
- <xsl:param name="wrap" select="true()"/>
- <xsl:param name="highlight" select="true()"/>
-
- <xsl:call-template name="template.synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="wrap" select="$wrap"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Output a template header in reference mode -->
- <xsl:template match="template" mode="reference">
- <xsl:param name="indentation" select="0"/>
- <xsl:param name="highlight" select="true()"/>
- <xsl:call-template name="template.reference">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Emit a template header synopsis -->
- <xsl:template name="template.synopsis">
- <xsl:param name="indentation" select="0"/>
- <xsl:param name="wrap" select="true()"/>
- <xsl:param name="highlight" select="true()"/>
-
- <xsl:choose>
- <xsl:when test="$highlight">
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="'template'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>template</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text><</xsl:text>
- <xsl:call-template name="template.synopsis.parameters">
- <xsl:with-param name="indentation" select="$indentation + 9"/>
- <xsl:with-param name="wrap" select="$wrap"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
- <xsl:text>> </xsl:text>
- </xsl:template>
-
- <!-- Display a list of template parameters for a synopsis (no comments) -->
- <xsl:template name="template.synopsis.parameters">
- <xsl:param name="indentation"/>
- <xsl:param name="wrap" select="true()"/>
- <xsl:param name="highlight" select="true()"/>
-
- <xsl:param name="column" select="$indentation"/>
- <xsl:param name="prefix" select="''"/>
- <xsl:param name="parameters" select="template-type-parameter|template-varargs|template-nontype-parameter"/>
- <xsl:param name="first-on-line" select="true()"/>
-
- <xsl:if test="$parameters">
- <!-- Emit the prefix (either a comma-space, or empty if this is
- the first parameter) -->
- <xsl:value-of select="$prefix"/>
-
- <!-- Get the actual parameter and its attributes -->
- <xsl:variable name="parameter" select="$parameters[position()=1]"/>
- <xsl:variable name="rest" select="$parameters[position()!=1]"/>
-
- <!-- Compute the actual text of this parameter -->
- <xsl:variable name="text">
- <xsl:call-template name="template.parameter">
- <xsl:with-param name="parameter" select="$parameter"/>
- <xsl:with-param name="is-last" select="not(rest)"/>
- <xsl:with-param name="highlight" select="false()"/>
- </xsl:call-template>
- </xsl:variable>
-
- <!-- Where will this template parameter finish? -->
- <xsl:variable name="end-column"
- select="$column + string-length($prefix) + string-length($text)"/>
-
- <!-- Should the text go on this line or on the next? -->
- <xsl:choose>
- <xsl:when test="$first-on-line or ($end-column < $max-columns) or
- not($wrap)">
- <!-- Print on this line -->
- <xsl:call-template name="template.parameter">
- <xsl:with-param name="parameter" select="$parameter"/>
- <xsl:with-param name="is-last" select="not($rest)"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
-
- <!-- Recurse -->
- <xsl:call-template name="template.synopsis.parameters">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="wrap" select="$wrap"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- <xsl:with-param name="column" select="$end-column"/>
- <xsl:with-param name="prefix" select="', '"/>
- <xsl:with-param name="parameters" select="$rest"/>
- <xsl:with-param name="first-on-line" select="false()"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <!-- Print on next line -->
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <xsl:call-template name="template.parameter">
- <xsl:with-param name="parameter" select="$parameter"/>
- <xsl:with-param name="is-last" select="not($rest)"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
-
- <xsl:call-template name="template.synopsis.parameters">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="wrap" select="$wrap"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- <xsl:with-param name="column"
- select="$indentation + string-length($text)"/>
- <xsl:with-param name="prefix" select="', '"/>
- <xsl:with-param name="parameters" select="$rest"/>
- <xsl:with-param name="first-on-line" select="false()"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <!-- Emit a template header reference -->
- <xsl:template name="template.reference">
- <xsl:param name="indentation" select="0"/>
- <xsl:param name="highlight" select="true()"/>
-
- <xsl:if test="template-type-parameter|template-varargs|template-nontype-parameter">
- <xsl:choose>
- <xsl:when test="$highlight">
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="'template'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>template</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text><</xsl:text>
- <xsl:call-template name="template.reference.parameters">
- <xsl:with-param name="indentation" select="$indentation + 9"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
- <xsl:text>> </xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- Display a set of template parameters for a reference -->
- <xsl:template name="template.reference.parameters">
- <xsl:param name="indentation"/>
- <xsl:param name="highlight" select="true()"/>
- <xsl:param name="parameters" select="template-type-parameter|template-varargs|template-nontype-parameter"/>
-
- <xsl:choose>
- <xsl:when test="$parameters/purpose">
- <xsl:call-template name="template.reference.parameters.comments">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="template.synopsis.parameters">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="wrap" select="true()"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Output template parameters when there are comments with the parameters.
- For clarity, we output each template parameter on a separate line. -->
- <xsl:template name="template.reference.parameters.comments">
- <xsl:param name="indentation"/>
- <xsl:param name="highlight" select="true()"/>
- <xsl:param name="parameters" select="template-type-parameter|template-varargs|template-nontype-parameter"/>
-
- <xsl:if test="$parameters">
- <!-- Get the actual parameter and its attributes -->
- <xsl:variable name="parameter" select="$parameters[position()=1]"/>
- <xsl:variable name="rest" select="$parameters[position()!=1]"/>
-
- <!-- Display the parameter -->
- <xsl:call-template name="template.parameter">
- <xsl:with-param name="parameter" select="$parameter"/>
- <xsl:with-param name="is-last" select="not($rest)"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
-
- <xsl:if test="$rest">
- <xsl:text>, </xsl:text>
- </xsl:if>
-
- <!-- Display the comment -->
- <xsl:if test="$parameter/purpose">
- <xsl:call-template name="highlight-comment">
- <xsl:with-param name="text">
- <xsl:text> // </xsl:text>
- <xsl:apply-templates
- select="$parameter/purpose/*|$parameter/purpose/text()"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Indent the next line -->
- <xsl:if test="$parameter/purpose or $rest">
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Recurse to print the rest of the parameters -->
- <xsl:call-template name="template.reference.parameters.comments">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- <xsl:with-param name="parameters" select="$rest"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- Print a template parameter -->
- <xsl:template name="template.parameter">
- <xsl:param name="parameter"/>
- <xsl:param name="is-last"/>
- <xsl:param name="highlight" select="true()"/>
- <xsl:apply-templates select="$parameter"
- mode="print.parameter">
- <xsl:with-param name="parameter" select="$parameter"/>
- <xsl:with-param name="is-last" select="$is-last"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template name="template.parameter.name">
- <xsl:param name="name" select="@name"/>
- <xsl:param name="highlight" select="true()"/>
-
- <xsl:choose>
- <xsl:when test="$highlight">
- <xsl:call-template name="concept.link">
- <xsl:with-param name="name"
- select="translate($name, '0123456789', '')"/>
- <xsl:with-param name="text" select="$name"/>
- <xsl:with-param name="warn" select="false"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="template-type-parameter" mode="print.parameter">
- <xsl:param name="parameter"/>
- <xsl:param name="is-last"/>
- <xsl:param name="highlight"/>
-
- <xsl:choose>
- <xsl:when test="$highlight">
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="'typename'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>typename</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="$parameter/@pack=1"><xsl:text>...</xsl:text></xsl:if>
- <xsl:text> </xsl:text>
-
- <xsl:call-template name="template.parameter.name">
- <xsl:with-param name="name" select="$parameter/@name"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
-
- <xsl:variable name="def">
- <xsl:choose>
- <xsl:when test="$parameter/@default">
- <xsl:message>
- <xsl:text>Warning: 'default' attribute of template parameter element is deprecated. Use 'default' element.</xsl:text>
- <xsl:call-template name="print.warning.context"/>
- </xsl:message>
- <xsl:choose>
- <xsl:when test="$highlight and false()">
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text">
- <xsl:value-of select="$parameter/@default"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$parameter/@default"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$parameter/default">
- <xsl:choose>
- <xsl:when test="$highlight">
- <xsl:apply-templates
- select="$parameter/default/*|$parameter/default/text()"
- mode="highlight"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string($parameter/default)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:if test="not($def='')">
- <xsl:text> = </xsl:text>
-
- <xsl:copy-of select="$def"/>
-
- <!-- If this is the last parameter, add an extra space to
- avoid printing >> -->
- <xsl:if
- test="$is-last and (substring($def, string-length($def))='>')">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="template-nontype-parameter" mode="print.parameter">
- <xsl:param name="parameter"/>
- <xsl:param name="is-last"/>
- <xsl:param name="highlight"/>
-
- <xsl:choose>
- <xsl:when test="$highlight">
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text">
- <xsl:apply-templates
- select="$parameter/type/*|$parameter/type/text()"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$parameter/type/*|$parameter/type/text()"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="$parameter/@pack=1"><xsl:text>...</xsl:text></xsl:if>
- <xsl:text> </xsl:text>
-
- <xsl:call-template name="template.parameter.name">
- <xsl:with-param name="name" select="$parameter/@name"/>
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:call-template>
-
- <xsl:variable name="def">
- <xsl:value-of select="string($parameter/default)"/>
- </xsl:variable>
-
- <xsl:if test="not($def='')">
- <xsl:text> = </xsl:text>
-
- <xsl:choose>
- <xsl:when test="$highlight">
- <xsl:apply-templates select="$parameter/default/*|$parameter/default/text()" mode="highlight"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$def"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- If this is the last parameter, add an extra space to
- avoid printing >> -->
- <xsl:if
- test="$is-last and (substring($def, string-length($def))='>')">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="template-varargs" mode="print.parameter">
- <xsl:text>...</xsl:text>
- </xsl:template>
-
- <xsl:template match="specialization">
- <xsl:param name="highlight" select="true()"/>
- <xsl:text><</xsl:text>
- <xsl:apply-templates select="template-arg">
- <xsl:with-param name="highlight" select="$highlight"/>
- </xsl:apply-templates>
- <xsl:text>></xsl:text>
- </xsl:template>
-
- <xsl:template match="template-arg">
- <xsl:if test="position() > 1">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:apply-templates mode="highlight"/>
- <xsl:if test="@pack=1">
- <xsl:text>...</xsl:text>
- </xsl:if>
- </xsl:template>
-</xsl:stylesheet>
-
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:include href="http://docbook.sourceforge.net/release/xsl/current/html/chunker.xsl"/>
- <xsl:include href="http://docbook.sourceforge.net/release/xsl/current/common/common.xsl"/>
-
- <!-- The root of the Boost directory -->
- <xsl:param name="boost.root"/>
-
- <!-- The number of columns in a source file line -->
- <xsl:param name="boost.source.columns" select="78"/>
-
- <xsl:output method="text"/>
- <xsl:template match="/">
- <xsl:if test="$boost.root">
- <!-- Output testsuite Jamfiles -->
- <xsl:apply-templates select="//testsuite" mode="Jamfile"/>
-
- <!-- Output any source files that are written in XML -->
- <xsl:apply-templates select="//source" mode="testsuite.generate"/>
- </xsl:if>
-
- <xsl:if test="not($boost.root)">
- <xsl:message>
- Please set the XSL stylesheet parameter "boost.root" to the top-level
- Boost directory (i.e., BOOST_ROOT)
- </xsl:message>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="testsuite" mode="Jamfile">
- <xsl:variable name="subproject"
- select="concat('libs/',ancestor::library/attribute::dirname,'/test')"/>
- <xsl:variable name="filename"
- select="concat($boost.root,'/libs/',ancestor::library/attribute::dirname,
- '/test/Jamfile')"/>
- <xsl:call-template name="write.text.chunk">
- <xsl:with-param name="filename" select="$filename"/>
- <xsl:with-param name="content">
- <xsl:call-template name="source.print.header">
- <xsl:with-param name="prefix" select="'#'"/>
- </xsl:call-template>
-
-# Testing Jamfile autogenerated from XML source
-subproject <xsl:value-of select="$subproject"/> ;
-
-# bring in rules for testing
-SEARCH on testing.jam = $(BOOST_BUILD_PATH) ;
-include testing.jam ;
-
-# Make tests run by default.
-DEPENDS all : test ;
-
-{
- # look in BOOST_ROOT for sources first, just in this Jamfile
- local SEARCH_SOURCE = $(BOOST_ROOT) $(SEARCH_SOURCE) ;
-
- test-suite <xsl:value-of select="ancestor::library/attribute::dirname"/>
- : <xsl:apply-templates mode="Jamfile"/> ;
-}
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="compile-test|link-test|run-test|compile-fail-test|link-fail-test|run-fail-test"
- mode="Jamfile">
- <xsl:variable name="fullname"
- select="concat(substring-before(local-name(.), '-test'), ' libs/',
- ancestor::library/attribute::dirname, '/test/',
- @filename)"/>
- <xsl:text>[ </xsl:text>
- <xsl:value-of select="$fullname"/>
- <xsl:apply-templates select="lib" mode="Jamfile"/>
- <xsl:text> : </xsl:text>
- <!-- ... -->
- <xsl:text> : </xsl:text>
- <!-- ... -->
- <xsl:text> : </xsl:text>
- <xsl:apply-templates select="requirement" mode="Jamfile"/>
- <!-- ... -->
- <xsl:text> : </xsl:text>
- <xsl:if test="@name">
- <xsl:value-of select="@name"/>
- </xsl:if>
- <xsl:text> ]</xsl:text>
- </xsl:template>
-
- <xsl:template match="lib" mode="Jamfile">
- <xsl:text> <lib></xsl:text><xsl:value-of select="text()"/>
- </xsl:template>
-
- <xsl:template match="requirement" mode="Jamfile">
- <xsl:if test="count(preceding-sibling::requirement) > 0">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:value-of select="concat('<', @name, '>')"/>
- <xsl:value-of select="."/>
- </xsl:template>
-
- <xsl:template match="source" mode="testsuite.generate">
- <xsl:variable name="filename"
- select="concat($boost.root,'/libs/',ancestor::library/attribute::dirname,
- '/test/',../@filename)"/>
-
- <xsl:variable name="prefix" select="'//'"/>
-
- <xsl:call-template name="write.text.chunk">
- <xsl:with-param name="filename" select="$filename"/>
- <xsl:with-param name="content">
- <xsl:call-template name="source.print.header">
- <xsl:with-param name="prefix" select="'//'"/>
- </xsl:call-template>
- <!-- Source code -->
- <xsl:apply-templates mode="testsuite.generate"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="snippet" mode="testsuite.generate">
- <xsl:variable name="snippet-name" select="@name"/>
- <xsl:value-of select="//programlisting[@name=$snippet-name]"/>
- </xsl:template>
-
- <!-- Prints a header to a source file containing the library name,
- copyright information, license information, and a link to the Boost
- web site. The text is output using the "prefix" parameter at the
- beginning of each line (it should denote a single-line comment) and
- will only print up to boost.source.columns characters per line
- (including the prefix). -->
- <xsl:template name="source.print.header">
- <xsl:param name="prefix"/>
-
- <!-- Library name -->
- <xsl:value-of select="concat($prefix, ' ',
- ancestor::library/attribute::name,
- ' library')"/>
- <xsl:text> </xsl:text>
-
- <!-- Copyrights -->
- <xsl:apply-templates select="ancestor::library/libraryinfo/copyright"
- mode="testsuite.generate">
- <xsl:with-param name="prefix" select="$prefix"/>
- </xsl:apply-templates>
-
- <!-- Legal notice -->
- <xsl:apply-templates select="ancestor::library/libraryinfo/legalnotice"
- mode="testsuite.generate">
- <xsl:with-param name="prefix" select="$prefix"/>
- </xsl:apply-templates>
-
- <xsl:text> </xsl:text>
-
- <!-- For more information... -->
- <xsl:value-of
- select="concat($prefix,
- ' For more information, see http://www.boost.org/')"/>
- <xsl:text> </xsl:text>
- </xsl:template>
-
- <xsl:template match="copyright" mode="testsuite.generate">
- <xsl:param name="prefix"/>
-
- <xsl:text> </xsl:text>
-
- <xsl:value-of select="concat($prefix, ' Copyright (C) ')"/>
- <xsl:call-template name="copyright.years">
- <xsl:with-param name="years" select="year"/>
- <xsl:with-param name="print.ranges" select="1"/>
- <xsl:with-param name="single.year.ranges" select="1"/>
- </xsl:call-template>
-
- <xsl:text> </xsl:text>
-
- <xsl:apply-templates select="holder" mode="titlepage.mode"/>
- </xsl:template>
-
- <xsl:template match="legalnotice" mode="testsuite.generate">
- <xsl:param name="prefix"/>
-
- <xsl:variable name="text" select="normalize-space(.)"/>
-
- <xsl:text> </xsl:text>
- <xsl:value-of select="concat($prefix, ' ')"/>
-
- <xsl:call-template name="source.print.legalnotice">
- <xsl:with-param name="prefix" select="$prefix"/>
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="column" select="string-length($prefix) + 1"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="source.print.legalnotice">
- <xsl:param name="prefix"/>
- <xsl:param name="text"/>
- <xsl:param name="column"/>
-
- <xsl:if test="contains($text, ' ') or string-length($text) > 0">
- <xsl:variable name="word">
- <xsl:choose>
- <xsl:when test="contains($text, ' ')">
- <xsl:value-of select="substring-before($text, ' ')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="rest" select="substring-after($text, ' ')"/>
-
- <xsl:choose>
- <xsl:when
- test="$column + string-length($word) > $boost.source.columns">
- <xsl:text> </xsl:text>
- <xsl:value-of select="concat($prefix, ' ')"/>
- <xsl:call-template name="source.print.legalnotice">
- <xsl:with-param name="prefix" select="$prefix"/>
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="column" select="string-length($prefix) + 1"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($word, ' ')"/>
- <xsl:call-template name="source.print.legalnotice">
- <xsl:with-param name="prefix" select="$prefix"/>
- <xsl:with-param name="text" select="$rest"/>
- <xsl:with-param name="column"
- select="$column + string-length($word) + 1"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="*" mode="testsuite.generate"/>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:template match="testsuite">
- <section>
- <xsl:choose>
- <xsl:when test="@id">
- <xsl:attribute name="id">
- <xsl:value-of select="@id"/>
- </xsl:attribute>
- </xsl:when>
- <xsl:when test="../@id">
- <xsl:attribute name="id">
- <xsl:value-of select="concat(../@id, '.tests')"/>
- </xsl:attribute>
- </xsl:when>
- </xsl:choose>
-
- <title>Testsuite</title>
-
- <xsl:if test="compile-test|link-test|run-test">
- <section>
- <xsl:if test="@id">
- <xsl:attribute name="id">
- <xsl:value-of select="@id"/>
- <xsl:text>.acceptance</xsl:text>
- </xsl:attribute>
- </xsl:if>
-
- <title>Acceptance tests</title>
- <informaltable>
- <tgroup cols="3">
- <colspec colnum="2" colwidth="1in"/>
- <thead>
- <row>
- <entry>Test</entry>
- <entry>Type</entry>
- <entry>Description</entry>
- <entry>If failing...</entry>
- </row>
- </thead>
- <tbody>
- <xsl:apply-templates select="compile-test|link-test|run-test"/>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
- </xsl:if>
-
- <xsl:if test="compile-fail-test|link-fail-test|run-fail-test">
- <section>
- <xsl:if test="@id">
- <xsl:attribute name="id">
- <xsl:value-of select="@id"/>
- <xsl:text>.negative</xsl:text>
- </xsl:attribute>
- </xsl:if>
- <title>Negative tests</title>
- <informaltable>
- <tgroup cols="3">
- <colspec colnum="2" colwidth="1in"/>
- <thead>
- <row>
- <entry>Test</entry>
- <entry>Type</entry>
- <entry>Description</entry>
- <entry>If failing...</entry>
- </row>
- </thead>
- <tbody>
- <xsl:apply-templates
- select="compile-fail-test|link-fail-test|run-fail-test"/>
- </tbody>
- </tgroup>
- </informaltable>
- </section>
- </xsl:if>
- </section>
- </xsl:template>
-
- <xsl:template match="compile-test|link-test|run-test|
- compile-fail-test|link-fail-test|run-fail-test">
- <row>
- <entry>
- <simpara>
- <ulink>
- <xsl:attribute name="url">
- <xsl:value-of
- select="concat('../../libs/',
- ancestor::library/attribute::dirname, '/test/',
- @filename)"/>
- </xsl:attribute>
- <xsl:value-of select="@filename"/>
- </ulink>
- </simpara>
- </entry>
- <entry>
- <simpara>
- <xsl:value-of select="substring-before(local-name(.), '-test')"/>
- </simpara>
- </entry>
- <entry><xsl:apply-templates select="purpose/*"/></entry>
- <entry><xsl:apply-templates select="if-fails/*"/></entry>
- </row>
- </xsl:template>
-
- <xsl:template match="snippet">
- <xsl:variable name="snippet-name" select="@name"/>
- <xsl:apply-templates select="//programlisting[@name=$snippet-name]"/>
- </xsl:template>
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
- Copyright (c) 2007 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)
- -->
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
-
- <xsl:include href="global.xsl"/>
- <xsl:strip-space elements="inherit purpose"/>
-
- <!-- When true, the stylesheet will emit compact definitions of
- enumerations when the enumeration does not have any detailed
- description. A compact definition renders the enum definition along
- with a comment for the purpose of the enum (if it exists) directly
- within the synopsis. A non-compact definition will create a
- separate refentry element for the enum. -->
- <xsl:param name="boost.compact.enum">1</xsl:param>
-
- <!-- When true, the stylesheet will emit compact definitions of
- typedefs when the typedef does not have any detailed
- description. -->
- <xsl:param name="boost.compact.typedef">1</xsl:param>
-
- <xsl:template match="class|struct|union" mode="generate.id">
- <xsl:call-template name="fully-qualified-id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="class-specialization|struct-specialization|union-specialization" mode="generate.id">
- <xsl:call-template name="fully-qualified-id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="typedef" mode="generate.id">
- <xsl:call-template name="fully-qualified-id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="enum" mode="generate.id">
- <xsl:call-template name="fully-qualified-id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="enumvalue" mode="generate.id">
- <xsl:call-template name="fully-qualified-id">
- <xsl:with-param name="node" select="parent::enum"/>
- </xsl:call-template>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="@name"/>
- </xsl:template>
-
- <!-- Display the full name of the current node, e.g., "Class
- template function". -->
- <xsl:template name="type.display.name">
- <xsl:choose>
- <xsl:when test="contains(local-name(.), 'class')">
- <xsl:text>Class </xsl:text>
- </xsl:when>
- <xsl:when test="contains(local-name(.), 'struct')">
- <xsl:text>Struct </xsl:text>
- </xsl:when>
- <xsl:when test="contains(local-name(.), 'union')">
- <xsl:text>Union </xsl:text>
- </xsl:when>
- <xsl:when test="local-name(.)='enum'">
- <xsl:text>Type </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>
-Unknown type element "<xsl:value-of select="local-name(.)"/>" in type.display.name
- </xsl:message>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="template and count(template/*) > 0">
- <xsl:text>template </xsl:text>
- </xsl:if>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text">
- <xsl:value-of select="@name"/>
- <xsl:apply-templates select="specialization"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Determine the class key for the given node -->
- <xsl:template name="type.class.key">
- <xsl:param name="node" select="."/>
- <xsl:choose>
- <xsl:when test="contains(local-name($node), '-specialization')">
- <xsl:value-of select="substring-before(local-name($node), '-')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="local-name($node)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Emit class synopsis -->
- <xsl:template match="class|class-specialization|
- struct|struct-specialization|
- union|union-specialization" mode="synopsis">
- <xsl:param name="indentation"/>
-
- <!-- 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>
-
- <!-- Spacing -->
- <xsl:if test="not (local-name(preceding-sibling::*[position()=1])=local-name(.)) and (position() > 1)">
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <xsl:text> </xsl:text>
-
- <!-- Calculate how long this declaration would be if we put it all
- on one line -->
- <xsl:variable name="full-decl-string">
- <xsl:apply-templates select="template" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="wrap" select="false()"/>
- </xsl:apply-templates>
- <xsl:value-of select="$class-key"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:apply-templates select="specialization"/>
- <xsl:text>;</xsl:text>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="(string-length($full-decl-string) +
- string-length($indentation)) < $max-columns">
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <xsl:apply-templates select="template" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:apply-templates>
-
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="$class-key"/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="text">
- <xsl:value-of select="@name"/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:apply-templates select="specialization"/>
- <xsl:text>;</xsl:text>
- </xsl:when>
-
- <xsl:otherwise>
- <!-- 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="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:apply-templates>
- <xsl:text> </xsl:text>
-
- <!-- Indent class templates' names in the synopsis -->
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <!-- 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:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text" select="string(@name)"/>
- </xsl:call-template>
- <xsl:apply-templates select="specialization"/>
- <xsl:text>;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- Free functions associated with the class -->
- <xsl:apply-templates select="free-function-group" mode="header-synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="class" select="@name"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <!-- Emit a typedef synopsis -->
- <xsl:template name="type.typedef.display.aligned">
- <xsl:param name="compact"/>
- <xsl:param name="indentation"/>
- <xsl:param name="is-reference"/>
- <xsl:param name="max-type-length"/>
- <xsl:param name="max-name-length"/>
-
- <!-- What type of link the typedef name should have. This shall
- be one of 'anchor' (the typedef output will be the target of
- links), 'link' (the typedef output will link to a definition), or
- 'none' (the typedef output will not be either a link or a link
- target) -->
- <xsl:param name="link-type">
- <xsl:choose>
- <xsl:when test="$is-reference">
- <xsl:text>anchor</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>link</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
-
- <!-- The id we should link to or anchor as -->
- <xsl:param name="link-to">
- <xsl:call-template name="generate.id"/>
- </xsl:param>
-
- <!-- The id we should link to or anchor as -->
- <xsl:param name="typedef-name">
- <xsl:value-of select="@name"/>
- </xsl:param>
-
- <!-- Padding for the typedef types -->
- <xsl:variable name="type-padding">
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$max-type-length"/>
- </xsl:call-template>
- </xsl:variable>
-
- <!-- Padding for the typedef names -->
- <xsl:variable name="name-padding">
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$max-name-length"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:text> </xsl:text>
- <xsl:choose>
- <!-- Create a vertical ellipsis -->
- <xsl:when test="@name = '...'">
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation + 3"/>
- </xsl:call-template>
- <xsl:text>. </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation + 3"/>
- </xsl:call-template>
- <xsl:text>. </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation + 3"/>
- </xsl:call-template>
- <xsl:text>.</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <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="'typedef'"/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
-
- <!-- Length of the type -->
- <xsl:variable name="type-length">
- <xsl:choose>
- <xsl:when test="@type">
- <xsl:message>
- <xsl:text>Warning: `type' attribute of `typedef' element is deprecated. Use 'type' element instead.</xsl:text>
- </xsl:message>
- <xsl:call-template name="print.warning.context"/>
- <xsl:value-of select="string-length(@type)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string-length(type)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Emit the type -->
- <xsl:choose>
- <xsl:when test="@type">
- <xsl:value-of select="@type"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="type/*|type/text()"
- mode="highlight"/>
- <!--
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text">
- <xsl:apply-templates select="type/*|type/text()"/>
- </xsl:with-param>
- </xsl:call-template>
- -->
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:choose>
- <xsl:when test="$max-type-length > 0">
- <xsl:value-of select="substring($type-padding, 1,
- $max-type-length - $type-length)"/>
- <xsl:text> </xsl:text>
- <xsl:variable name="truncated-typedef-name" select="substring(@name,
- 1, $max-name-length)"/>
- <xsl:call-template name="link-or-anchor">
- <xsl:with-param name="to" select="$link-to"/>
- <xsl:with-param name="text" select="$truncated-typedef-name"/>
- <xsl:with-param name="link-type" select="$link-type"/>
- <xsl:with-param name="highlight" select="true()"/>
- </xsl:call-template>
- <xsl:value-of select="substring(concat(';', $name-padding),
- 1, $max-name-length - string-length($truncated-typedef-name))"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> </xsl:text>
- <xsl:call-template name="link-or-anchor">
- <xsl:with-param name="to" select="$link-to"/>
- <xsl:with-param name="text" select="$typedef-name"/>
- <xsl:with-param name="link-type" select="$link-type"/>
- <xsl:with-param name="highlight" select="true()"/>
- </xsl:call-template>
- <xsl:text>;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test="$compact and purpose">
- <xsl:text> </xsl:text>
- <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:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="typedef" mode="synopsis">
- <xsl:param name="indentation"/>
- <xsl:param name="max-type-length" select="0"/>
- <xsl:param name="max-name-length" select="0"/>
- <xsl:param name="allow-anchor" select="true()"/>
-
- <!-- True if we should compact this typedef -->
- <xsl:variable name="compact"
- select="not (para|description) and ($boost.compact.typedef='1')"/>
-
- <xsl:choose>
- <xsl:when test="$compact">
- <!-- Spacing -->
- <xsl:if test="not (local-name(preceding-sibling::*[position()=1])=local-name(.)) and (position() > 1)">
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <xsl:call-template name="type.typedef.display.aligned">
- <xsl:with-param name="compact" select="$compact"/>
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="is-reference" select="$allow-anchor"/>
- <xsl:with-param name="max-type-length" select="$max-type-length"/>
- <xsl:with-param name="max-name-length" select="$max-name-length"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="type.typedef.display.aligned">
- <xsl:with-param name="compact" select="$compact"/>
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="is-reference" select="false()"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Emit a typedef reference entry -->
- <xsl:template match="typedef" mode="namespace-reference">
- <!-- True if this typedef was compacted -->
- <xsl:variable name="compact"
- select="not (para|description) and ($boost.compact.typedef='1')"/>
-
- <xsl:if test="not ($compact)">
- <xsl:call-template name="reference-documentation">
- <xsl:with-param name="refname" select="@name"/>
- <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
- <xsl:with-param name="anchor">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="name">
- <xsl:text>Type definition </xsl:text>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text" select="@name"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="synopsis">
- <xsl:call-template name="header-link"/>
- <xsl:call-template name="type.typedef.display.aligned">
- <xsl:with-param name="compact" select="false()"/>
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="link-type" select="'none'"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text">
- <xsl:apply-templates select="description"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="typedef" mode="reference">
- <!-- True if this typedef was compacted -->
- <xsl:variable name="compact"
- select="not (para|description) and ($boost.compact.typedef='1')"/>
-
- <xsl:if test="not ($compact)">
- <listitem>
- <para>
- <xsl:call-template name="type.typedef.display.aligned">
- <xsl:with-param name="compact" select="false()"/>
- <xsl:with-param name="indentation" select="0"/>
- <xsl:with-param name="is-reference" select="true()"/>
- <xsl:with-param name="link-type" select="'anchor'"/>
- </xsl:call-template>
- </para>
- <xsl:apply-templates select="description"/>
- </listitem>
- </xsl:if>
- </xsl:template>
-
- <!-- Emit a list of static constants -->
- <xsl:template match="static-constant" mode="synopsis">
- <xsl:param name="indentation"/>
- <xsl:text> </xsl:text>
-
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text" select="'static const '"/>
- </xsl:call-template>
-
- <xsl:apply-templates select="type" mode="highlight"/>
-
- <xsl:if test="not(@name = '')">
- <xsl:text> </xsl:text>
- <xsl:value-of select="@name"/>
- </xsl:if>
-
- <xsl:text> = </xsl:text>
-
- <xsl:call-template name="source-highlight">
- <xsl:with-param name="text">
- <xsl:apply-templates select="default/*|default/text()"/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text>;</xsl:text>
-
- <xsl:if test="purpose">
- <xsl:text> </xsl:text>
- <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:if>
- </xsl:template>
-
- <!-- Format base classes on a single line -->
- <xsl:template name="print.base.classes.single">
- <xsl:apply-templates select="inherit"/>
- </xsl:template>
-
- <xsl:template name="print.base.classes.multi">
- <xsl:param name="indentation"/>
-
- <xsl:variable name="n" select="count(inherit)"/>
- <xsl:for-each select="inherit">
- <!-- Indentation -->
- <xsl:if test="position() > 1">
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Output the access specifier -->
- <xsl:variable name="access">
- <xsl:choose>
- <xsl:when test="@access">
- <xsl:value-of select="@access"/>
- </xsl:when>
- <xsl:when test="parent::class|parent::class-specialization">
- <xsl:text>private</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>public</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="@access"/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
-
- <!-- Output the type -->
- <xsl:choose>
- <xsl:when test="type">
- <xsl:apply-templates select="type/*|type/text()" mode="annotation"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>
- <xsl:text>Warning: missing 'type' element inside 'inherit'</xsl:text>
- </xsl:message>
- <xsl:call-template name="print.warning.context"/>
- <xsl:apply-templates mode="annotation"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:if test="@pack=1"><xsl:text>...</xsl:text></xsl:if>
-
- <!-- Output a comma if not at the end -->
- <xsl:if test="position() < $n">
- <xsl:text>,</xsl:text>
- </xsl:if>
-
- <!-- Output a comment if we have one -->
- <xsl:if test="purpose">
- <xsl:choose>
- <xsl:when test="position() < $n">
- <xsl:text> </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <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:if>
-
- <xsl:if test="position() < $n">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="print.base.classes">
- <xsl:param name="indentation" select="0"/>
- <xsl:param name="base-indentation" select="0"/>
-
- <xsl:variable name="single-line-candidate" select="not(inherit/purpose)"/>
- <xsl:variable name="single-line">
- <xsl:if test="$single-line-candidate">
- <xsl:call-template name="print.base.classes.single"/>
- </xsl:if>
- </xsl:variable>
-
- <xsl:choose>
- <xsl:when test="$single-line-candidate and
- (string-length($single-line) + $indentation + 3
- < $max-columns)">
- <xsl:text> : </xsl:text>
- <xsl:call-template name="print.base.classes.single"/>
- <xsl:text> {</xsl:text>
- </xsl:when>
- <xsl:when test="$single-line-candidate and
- (string-length($single-line) + $base-indentation + 2
- < $max-columns)">
- <xsl:text> : </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$base-indentation + 2"/>
- </xsl:call-template>
- <xsl:call-template name="print.base.classes.single"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$base-indentation"/>
- </xsl:call-template>
- <xsl:text>{</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> : </xsl:text>
- <xsl:call-template name="print.base.classes.multi">
- <xsl:with-param name="indentation" select="$indentation + 3"/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$base-indentation"/>
- </xsl:call-template>
- <xsl:text>{</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Emit a list of base classes without comments and on a single line -->
- <xsl:template match="inherit">
- <xsl:choose>
- <xsl:when test="position()=1">
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>, </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="@access"/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- <xsl:apply-templates mode="annotation">
- <xsl:with-param name="highlight" select="true()"/>
- </xsl:apply-templates>
- <xsl:if test="@pack=1"><xsl:text>...</xsl:text></xsl:if>
- </xsl:template>
-
- <!-- Find the maximum length of the types in typedefs -->
- <xsl:template name="find-max-type-length">
- <xsl:param name="typedefs" select="typedef"/>
- <xsl:param name="max-length" select="0"/>
- <xsl:param name="want-name" select="false()"/>
-
- <xsl:choose>
- <xsl:when test="$typedefs">
- <xsl:variable name="typedef" select="$typedefs[position()=1]"/>
- <xsl:variable name="rest" select="$typedefs[position()!=1]"/>
-
- <!-- Find the length of the type -->
- <xsl:variable name="length">
- <xsl:choose>
- <xsl:when test="$typedef/@name != '...'">
- <xsl:choose>
- <xsl:when test="$want-name">
- <xsl:value-of select="string-length($typedef/@name) + 1"/>
- </xsl:when>
- <xsl:when test="$typedef/@type">
- <xsl:value-of select="string-length($typedef/@type)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string-length($typedef/type)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- 0
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- Pass on the larger length -->
- <xsl:choose>
- <xsl:when test="$length > $max-length">
- <xsl:call-template name="find-max-type-length">
- <xsl:with-param name="typedefs" select="$rest"/>
- <xsl:with-param name="max-length" select="$length"/>
- <xsl:with-param name="want-name" select="$want-name"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="find-max-type-length">
- <xsl:with-param name="typedefs" select="$rest"/>
- <xsl:with-param name="max-length" select="$max-length"/>
- <xsl:with-param name="want-name" select="$want-name"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$max-length"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="constructor" mode="synopsis">
- <xsl:param name="indentation"/>
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="context" select="../@name"/>
- <xsl:with-param name="is-reference" select="false()"/>
- <xsl:with-param name="constructor-for">
- <xsl:call-template name="object-name"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="copy-assignment" mode="synopsis">
- <xsl:param name="indentation"/>
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="context" select="../@name"/>
- <xsl:with-param name="is-reference" select="false()"/>
- <xsl:with-param name="copy-assign-for">
- <xsl:call-template name="object-name"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="destructor" mode="synopsis">
- <xsl:param name="indentation"/>
- <xsl:call-template name="function">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="context" select="../@name"/>
- <xsl:with-param name="is-reference" select="false()"/>
- <xsl:with-param name="destructor-for">
- <xsl:call-template name="object-name"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="class-members-synopsis">
- <xsl:param name="indentation" select="0"/>
- <!-- Used to suppress anchors in nested synopsis, so we don't get multiple anchors -->
- <xsl:param name="allow-synopsis-anchors" select="false()"/>
-
- <!-- Typedefs -->
- <xsl:if test="typedef">
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:call-template>
- <emphasis>
- <xsl:text>// </xsl:text>
- <!-- True if there are any non-compacted typedefs -->
- <xsl:variable name="have-typedef-references"
- select="typedef and ((typedef/para|typedef/description) or ($boost.compact.typedef='0'))"/>
- <xsl:choose>
- <xsl:when test="$have-typedef-references">
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- <xsl:text>types</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="text" select="'types'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>types</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </emphasis>
-
- <xsl:variable name="max-type-length">
- <xsl:call-template name="find-max-type-length"/>
- </xsl:variable>
- <xsl:variable name="max-name-length">
- <xsl:call-template name="find-max-type-length">
- <xsl:with-param name="want-name" select="true()"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:apply-templates select="typedef" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- <xsl:with-param name="max-type-length"
- select="$max-type-length"/>
- <xsl:with-param name="max-name-length"
- select="$max-name-length"/>
- <xsl:with-param name="allow-anchor" select="$allow-synopsis-anchors"/>
- </xsl:apply-templates>
- </xsl:if>
-
- <!-- Static constants -->
- <xsl:if test="static-constant">
- <xsl:text> </xsl:text>
- <xsl:if test="typedef">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:call-template>
- <xsl:call-template name="highlight-comment">
- <xsl:with-param name="text" select="'// static constants'"/>
- </xsl:call-template>
- <xsl:apply-templates select="static-constant" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:apply-templates>
- </xsl:if>
-
- <!-- Nested classes/structs/unions -->
- <xsl:if test="class|class-specialization|struct|struct-specialization|union|union-specialization">
- <xsl:text> </xsl:text>
- <xsl:if test="typedef|static-constant">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:call-template>
- <xsl:call-template name="highlight-comment">
- <xsl:with-param name="text" select="'// member classes/structs/unions'"/>
- </xsl:call-template>
- <xsl:apply-templates select="class|class-specialization|
- struct|struct-specialization|
- union|union-specialization"
- mode="reference">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:apply-templates>
- </xsl:if>
-
- <!-- Enums -->
- <xsl:apply-templates select="enum" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:apply-templates>
-
- <!-- Construct/Copy/Destruct -->
- <xsl:call-template name="construct-copy-destruct-synopsis">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:call-template>
-
- <!-- Member functions -->
- <xsl:apply-templates
- select="method-group|method|overloaded-method"
- mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </xsl:apply-templates>
-
- <!-- Data members -->
- <xsl:apply-templates select="data-member" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation + 2"/>
- </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> </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:param name="allow-synopsis-anchors" select="false()"/>
-
- <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:with-param name="allow-synopsis-anchors" select="$allow-synopsis-anchors"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="class-type-synopsis">
- <xsl:param name="indentation" select="0"/>
- <xsl:param name="allow-synopsis-anchors" select="false()"/>
-
- <!-- 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> </xsl:text>
-
- <!-- If this nested class has a "purpose" element, use it as a
- comment. -->
- <xsl:if test="purpose">
- <xsl:text> </xsl:text>
- <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: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> </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>
-
- <!-- Make the class name a link to the class reference page (useful for nested classes) -->
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text">
- <xsl:value-of select="@name"/>
- </xsl:with-param>
- </xsl:call-template>
-
- <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|
- method|overloaded-method|data-member|
- class|class-specialization|
- struct|struct-specialization|
- union|union-specialization) > 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:with-param name="allow-synopsis-anchors" select="$allow-synopsis-anchors"/>
- </xsl:call-template>
-
- <xsl:apply-templates select="access" mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="allow-synopsis-anchors" select="$allow-synopsis-anchors"/>
- </xsl:apply-templates>
-
- <!-- Closing brace -->
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- <xsl:text>};</xsl:text>
- </xsl:template>
-
- <!-- Emit nested class reference documentation -->
- <xsl:template match="class|class-specialization|
- struct|struct-specialization|
- union|union-specialization" mode="reference">
- <xsl:param name="indentation"/>
-
- <xsl:call-template name="class-type-synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="member-typedefs-reference">
- <!-- True if there are any non-compacted typedefs -->
- <xsl:variable name="have-typedef-references"
- select="typedef and ((typedef/para|typedef/description) or ($boost.compact.typedef='0'))"/>
- <xsl:if test="$have-typedef-references">
- <xsl:call-template name="member-documentation">
- <xsl:with-param name="name">
- <xsl:call-template name="anchor">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- <xsl:text>types</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="text" select="''"/>
- </xsl:call-template>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text">
- <xsl:call-template name="object-name"/>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- <xsl:call-template name="access-name"/>
- <xsl:text> types</xsl:text>
- </xsl:with-param>
- <xsl:with-param name="text">
- <orderedlist>
- <xsl:apply-templates select="typedef" mode="reference"/>
- </orderedlist>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="class-members-reference">
-
- <xsl:call-template name="member-typedefs-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 -->
- <xsl:template match="class|class-specialization|
- struct|struct-specialization|
- union|union-specialization" mode="namespace-reference">
- <xsl:param name="indentation" select="0"/>
-
- <xsl:call-template name="separator"/>
- <xsl:call-template name="reference-documentation">
- <xsl:with-param name="refname">
- <xsl:call-template name="fully-qualified-name">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
- <xsl:with-param name="anchor">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="name">
- <xsl:call-template name="type.display.name"/>
- </xsl:with-param>
- <xsl:with-param name="synopsis">
- <xsl:call-template name="header-link"/>
- <xsl:call-template name="class-type-synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="allow-synopsis-anchors" select="true()"/>
- </xsl:call-template>
- <!-- Associated free functions -->
- <xsl:apply-templates select="free-function-group"
- mode="synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="class" select="@name"/>
- </xsl:apply-templates>
- </xsl:with-param>
- <xsl:with-param name="text">
- <!-- Paragraphs go into the top of the "Description" section. -->
- <xsl:if test="para">
- <xsl:message>
- <xsl:text>Warning: Use of 'para' elements in 'class' element is deprecated. Wrap them in a 'description' element.</xsl:text>
- </xsl:message>
- <xsl:call-template name="print.warning.context"/>
- <xsl:apply-templates select="para" mode="annotation"/>
- </xsl:if>
- <xsl:apply-templates select="description"/>
-
- <xsl:call-template name="class-members-reference"/>
- <xsl:apply-templates select="access" mode="namespace-reference"/>
-
- <xsl:apply-templates select="free-function-group" mode="reference">
- <xsl:with-param name="class" select="@name"/>
- </xsl:apply-templates>
-
- <!-- Specializations of this class -->
- <!-- TBD: fix this. We should key off the class name and match
- fully-qualified names -->
- <xsl:variable name="name" select="@name"/>
- <xsl:if test="local-name(.)='class' and
- ../class-specialization[@name=$name]">
- <refsect2>
- <title>Specializations</title>
- <itemizedlist>
- <xsl:apply-templates
- select="../class-specialization[@name=$name]"
- mode="specialization-list"/>
- </itemizedlist>
- </refsect2>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Output a link to a specialization -->
- <xsl:template match="class-specialization|
- struct-specialization|
- union-specialization" mode="specialization-list">
- <listitem>
- <para>
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text">
- <xsl:call-template name="type.display.name"/>
- </xsl:with-param>
- </xsl:call-template>
- </para>
- </listitem>
- </xsl:template>
-
- <!-- Data member synopsis -->
- <xsl:template match="data-member" mode="synopsis">
- <xsl:param name="indentation"/>
-
- <xsl:choose>
- <xsl:when test="ancestor::class|ancestor::class-specialization|
- ancestor::struct|ancestor::struct-specialization|
- ancestor::union|ancestor::union-specialization">
-
- <!-- Spacing -->
- <xsl:if
- test="not(local-name(preceding-sibling::*[position()=1])=local-name(.)) and (position() > 1)">
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <!-- Indent -->
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
-
- <xsl:if test="@specifiers">
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="@specifiers"/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <xsl:apply-templates select="type" mode="highlight"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text>;</xsl:text>
-
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="global-synopsis">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- If there is a <purpose>, then add it as an
- inline comment immediately following the data
- member definition in the synopsis -->
- <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/*|purpose/text()"
- mode="purpose"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- Data member reference -->
- <xsl:template match="data-member" mode="reference">
- <xsl:choose>
- <xsl:when test="ancestor::class|ancestor::class-specialization|
- ancestor::struct|ancestor::struct-specialization|
- ancestor::union|ancestor::union-specialization"/>
- <xsl:otherwise>
- <xsl:call-template name="global-reference"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Enumeration synopsis -->
- <xsl:template match="enum" mode="synopsis">
- <xsl:param name="indentation"/>
-
- <!-- Spacing -->
- <xsl:if
- test="(not (local-name(preceding-sibling::*[position()=1])=local-name(.))
- and (position() > 1)) or
- not (para or description or not ($boost.compact.enum=1))">
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <!-- Indent -->
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
-
- <xsl:choose>
- <!-- When there is a detailed description, we only put the
- declaration in the synopsis and will put detailed documentation
- in either a <refentry/> or in class documentation. -->
- <xsl:when test="para or description or not ($boost.compact.enum=1)">
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="'enum'"/>
- </xsl:call-template>
-
- <xsl:text> </xsl:text>
-
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text" select="string(@name)"/>
- <xsl:with-param name="higlhight" select="false()"/>
- </xsl:call-template>
- </xsl:when>
- <!-- When there is no detailed description, we put the enum
- definition within the synopsis. The purpose of the enum (if
- available) is formatted as a comment prior to the
- definition. This way, we do not create a separate block of text
- for what is generally a very small amount of information. -->
- <xsl:otherwise>
- <xsl:if test="purpose">
- <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> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="'enum'"/>
- </xsl:call-template>
-
- <xsl:text> </xsl:text>
-
- <xsl:call-template name="anchor">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text" select="@name"/>
- <xsl:with-param name="higlhight" select="false()"/>
- </xsl:call-template>
-
- <xsl:text> { </xsl:text>
- <xsl:call-template name="type.enum.list.compact">
- <xsl:with-param name="indentation"
- select="$indentation + string-length(@name) + 8"/>
- <xsl:with-param name="compact" select="true()"/>
- </xsl:call-template>
- <xsl:text> }</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>;</xsl:text>
- </xsl:template>
-
- <!-- Enumeration reference at namespace level -->
- <xsl:template match="enum" mode="namespace-reference">
- <xsl:if test="para or description or not ($boost.compact.enum=1)">
- <xsl:call-template name="reference-documentation">
- <xsl:with-param name="name">
- <xsl:call-template name="type.display.name"/>
- </xsl:with-param>
- <xsl:with-param name="refname">
- <xsl:call-template name="fully-qualified-name">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="purpose" select="purpose/*|purpose/text()"/>
- <xsl:with-param name="anchor">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="."/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="synopsis">
- <xsl:call-template name="header-link"/>
- <xsl:call-template name="type.enum.display"/>
- </xsl:with-param>
-
- <xsl:with-param name="text">
- <!-- Paragraphs go into the top of the "Description" section. -->
- <xsl:if test="para">
- <xsl:message>
- <xsl:text>Warning: Use of 'para' elements in 'enum' element is deprecated. Wrap them in a 'description' element.</xsl:text>
- </xsl:message>
- <xsl:call-template name="print.warning.context"/>
- <xsl:apply-templates select="para" mode="annotation"/>
- </xsl:if>
- <xsl:apply-templates select="description"/>
- <xsl:if test="enumvalue/purpose | enumvalue/description">
- <variablelist spacing="compact">
- <xsl:apply-templates select="enumvalue" mode="reference"/>
- </variablelist>
- </xsl:if>
- </xsl:with-param>
-
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- Output an enumeration along with its values -->
- <xsl:template name="type.enum.display">
- <!-- Spacing -->
- <xsl:if test="position() > 1">
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <xsl:text> </xsl:text>
-
- <xsl:call-template name="highlight-keyword">
- <xsl:with-param name="keyword" select="'enum'"/>
- </xsl:call-template>
-
- <!-- Header -->
- <xsl:variable name="header" select="concat(' ', @name, ' { ')"/>
- <xsl:value-of select="$header"/>
-
- <!-- Print the enumeration values -->
- <xsl:call-template name="type.enum.list.compact">
- <xsl:with-param name="indentation" select="4 + string-length($header)"/>
- </xsl:call-template>
-
- <xsl:text> };</xsl:text>
- </xsl:template>
-
- <!-- List enumeration values in a compact form e.g.,
- enum Name { value1 = foo, value2 = bar, ... };
- This routine prints only the enumeration values; the caller is
- responsible for printing everything outside the braces
- (inclusive). -->
- <xsl:template name="type.enum.list.compact">
- <xsl:param name="indentation"/>
- <xsl:param name="compact" select="false()"/>
-
- <!-- Internal: The column we are on -->
- <xsl:param name="column" select="$indentation"/>
-
- <!-- Internal: The index of the current enumvalue
- we're processing -->
- <xsl:param name="pos" select="1"/>
-
- <!-- Internal: a prefix that we need to print prior to printing
- this value. -->
- <xsl:param name="prefix" select="''"/>
-
- <xsl:if test="not($pos > count(enumvalue))">
- <xsl:variable name="value" select="enumvalue[position()=$pos]"/>
-
- <!-- Compute the string to be printed for this value -->
- <xsl:variable name="result">
- <xsl:value-of select="$prefix"/>
- <xsl:value-of select="$value/attribute::name"/>
-
- <xsl:if test="$value/default">
- <xsl:text> = </xsl:text>
- <xsl:value-of select="$value/default/*|$value/default/text()"/>
- </xsl:if>
- </xsl:variable>
-
- <!-- The column we will end on, assuming that this value fits on
- this line -->
- <xsl:variable name="end" select="$column + string-length($result)"/>
-
- <!-- The column we will actually end on -->
- <xsl:variable name="end2">
- <xsl:choose>
- <!-- If the enumeration value fits on this line, put it there -->
- <xsl:when test="$end < $max-columns">
- <xsl:value-of select="$end"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$indentation
- + string-length($result)
- - string-length($prefix)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:value-of select="$prefix"/>
-
- <!-- If the enumeration value doesn't fit on this line,
- put it on a new line -->
- <xsl:if test="not($end < $max-columns)">
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation"/>
- </xsl:call-template>
- </xsl:if>
-
- <!-- If the enumeration value has a description, link it
- to its description. -->
- <xsl:choose>
- <xsl:when test="($value/purpose or $value/description) and not($compact)">
- <xsl:call-template name="internal-link">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id">
- <xsl:with-param name="node" select="$value"/>
- </xsl:call-template>
- </xsl:with-param>
- <xsl:with-param name="text" select="$value/attribute::name"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$value/attribute::name"/>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- If the enumeration value has a default,
- print it. -->
- <xsl:if test="$value/default">
- <xsl:text> = </xsl:text>
- <xsl:apply-templates
- select="$value/default/*|$value/default/text()"/>
- </xsl:if>
-
- <!-- Recursively generate the rest of the enumeration list -->
- <xsl:call-template name="type.enum.list.compact">
- <xsl:with-param name="indentation" select="$indentation"/>
- <xsl:with-param name="compact" select="$compact"/>
- <xsl:with-param name="column" select="$end2"/>
- <xsl:with-param name="pos" select="$pos + 1"/>
- <xsl:with-param name="prefix" select="', '"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- Enumeration reference at namespace level -->
- <xsl:template match="enumvalue" mode="reference">
- <xsl:if test="purpose or description">
- <varlistentry>
- <term>
- <xsl:call-template name="monospaced">
- <xsl:with-param name="text" select="@name"/>
- </xsl:call-template>
- <!-- Note: the anchor must come after the text here, and not
- before it; otherwise, FOP goes into an infinite loop. -->
- <xsl:call-template name="anchor">
- <xsl:with-param name="to">
- <xsl:call-template name="generate.id"/>
- </xsl:with-param>
- <xsl:with-param name="text" select="''"/>
- </xsl:call-template>
- </term>
- <listitem>
- <xsl:apply-templates select="purpose|description" mode="comment"/>
- </listitem>
- </varlistentry>
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <!-- Indent the current line-->
- <xsl:template name="indent">
- <xsl:param name="indentation"/>
- <xsl:if test="$indentation > 0">
- <xsl:text> </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="indentation" select="$indentation - 1"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- get name of first ancestor-or-self which is a class, struct or union -->
- <xsl:template name="object-name">
- <xsl:variable name="ancestors" 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"/>
- <xsl:value-of select="$ancestors[last()]/@name"/>
- </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>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"
- version="1.0">
-
- <!-- Import the HTML chunking stylesheet -->
- <xsl:import
- href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>
- <xsl:import
- href="http://docbook.sourceforge.net/release/xsl/current/xhtml/math.xsl"/>
-
- <xsl:include href="chunk-common.xsl"/>
- <xsl:include href="docbook-layout.xsl"/>
- <xsl:include href="navbar.xsl"/>
- <xsl:include href="admon.xsl"/>
- <xsl:include href="xref.xsl"/>
- <xsl:include href="relative-href.xsl"/>
- <xsl:include href="callout.xsl"/>
-
- <xsl:param name="html.stylesheet">
- <xsl:choose>
- <xsl:when test = "$boost.defaults = 'Boost'">
- <xsl:value-of select = "concat($boost.root, '/doc/src/boostbook.css')"/>
- </xsl:when>
- <xsl:otherwise>
- boostbook.css
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
-
- <xsl:param name="admon.style"/>
- <xsl:param name="admon.graphics">1</xsl:param>
- <xsl:param name="boostbook.verbose" select="0"/>
- <xsl:param name="navig.graphics" select="1"/>
- <xsl:param name="navig.graphics.extension" select="'.png'"/>
- <xsl:param name="chapter.autolabel" select="1"/>
- <xsl:param name="use.id.as.filename" select="1"/>
- <xsl:param name="refentry.generate.name" select="0"/>
- <xsl:param name="refentry.generate.title" select="1"/>
- <xsl:param name="make.year.ranges" select="1"/>
- <xsl:param name="generate.manifest" select="1"/>
- <xsl:param name="generate.section.toc.level" select="3"/>
- <xsl:param name="doc.standalone">false</xsl:param>
- <xsl:param name="chunker.output.indent">yes</xsl:param>
- <xsl:param name="chunk.quietly" select="not(number($boostbook.verbose))"/>
- <xsl:param name="toc.max.depth">2</xsl:param>
- <xsl:param name="callout.graphics.number.limit">15</xsl:param>
- <xsl:param name = "admon.graphics.path"
- select = "concat($boost.root, '/doc/xhtml/images/')"/>
- <xsl:param name = "navig.graphics.path"
- select = "concat($boost.root, '/doc/xhtml/images/')"/>
- <xsl:param name = "callout.graphics.path"
- select = "concat($boost.root, '/doc/src/images/callouts/')"/>
-
-
- <xsl:param name="admon.style">
- <!-- Remove the style. Let the CSS do the styling -->
-</xsl:param>
-
-<!-- Always have graphics -->
-<xsl:param name="admon.graphics" select="1"/>
-
- <xsl:param name="generate.toc">
-appendix toc,title
-article/appendix nop
-article toc,title
-book toc,title
-chapter toc,title
-part toc,title
-preface toc,title
-qandadiv toc
-qandaset toc
-reference toc,title
-sect1 toc
-sect2 toc
-sect3 toc
-sect4 toc
-sect5 toc
-section toc
-set toc,title
- </xsl:param>
-
-
- <xsl:template name="format.cvs.revision">
- <xsl:param name="text"/>
-
- <!-- Remove the "$Date: " -->
- <xsl:variable name="text.noprefix"
- select="substring-after($text, '$Date: ')"/>
-
- <!-- Grab the year -->
- <xsl:variable name="year" select="substring-before($text.noprefix, '/')"/>
- <xsl:variable name="text.noyear"
- select="substring-after($text.noprefix, '/')"/>
-
- <!-- Grab the month -->
- <xsl:variable name="month" select="substring-before($text.noyear, '/')"/>
- <xsl:variable name="text.nomonth"
- select="substring-after($text.noyear, '/')"/>
-
- <!-- Grab the year -->
- <xsl:variable name="day" select="substring-before($text.nomonth, ' ')"/>
- <xsl:variable name="text.noday"
- select="substring-after($text.nomonth, ' ')"/>
-
- <!-- Get the time -->
- <xsl:variable name="time" select="substring-before($text.noday, ' ')"/>
-
- <xsl:variable name="month.name">
- <xsl:choose>
- <xsl:when test="$month=1">January</xsl:when>
- <xsl:when test="$month=2">February</xsl:when>
- <xsl:when test="$month=3">March</xsl:when>
- <xsl:when test="$month=4">April</xsl:when>
- <xsl:when test="$month=5">May</xsl:when>
- <xsl:when test="$month=6">June</xsl:when>
- <xsl:when test="$month=7">July</xsl:when>
- <xsl:when test="$month=8">August</xsl:when>
- <xsl:when test="$month=9">September</xsl:when>
- <xsl:when test="$month=10">October</xsl:when>
- <xsl:when test="$month=11">November</xsl:when>
- <xsl:when test="$month=12">December</xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:value-of select="concat($month.name, ' ', $day, ', ', $year, ' at ',
- $time, ' GMT')"/>
- </xsl:template>
-
-
- <xsl:template name="format.svn.revision">
- <xsl:param name="text"/>
-
- <!-- Remove the "$Date: " -->
- <xsl:variable name="text.noprefix"
- select="substring-after($text, '$Date: ')"/>
-
- <!-- Grab the year -->
- <xsl:variable name="year" select="substring-before($text.noprefix, '-')"/>
- <xsl:variable name="text.noyear"
- select="substring-after($text.noprefix, '-')"/>
-
- <!-- Grab the month -->
- <xsl:variable name="month" select="substring-before($text.noyear, '-')"/>
- <xsl:variable name="text.nomonth"
- select="substring-after($text.noyear, '-')"/>
-
- <!-- Grab the year -->
- <xsl:variable name="day" select="substring-before($text.nomonth, ' ')"/>
- <xsl:variable name="text.noday"
- select="substring-after($text.nomonth, ' ')"/>
-
- <!-- Get the time -->
- <xsl:variable name="time" select="substring-before($text.noday, ' ')"/>
- <xsl:variable name="text.notime"
- select="substring-after($text.noday, ' ')"/>
-
- <!-- Get the timezone -->
- <xsl:variable name="timezone" select="substring-before($text.notime, ' ')"/>
-
- <xsl:variable name="month.name">
- <xsl:choose>
- <xsl:when test="$month=1">January</xsl:when>
- <xsl:when test="$month=2">February</xsl:when>
- <xsl:when test="$month=3">March</xsl:when>
- <xsl:when test="$month=4">April</xsl:when>
- <xsl:when test="$month=5">May</xsl:when>
- <xsl:when test="$month=6">June</xsl:when>
- <xsl:when test="$month=7">July</xsl:when>
- <xsl:when test="$month=8">August</xsl:when>
- <xsl:when test="$month=9">September</xsl:when>
- <xsl:when test="$month=10">October</xsl:when>
- <xsl:when test="$month=11">November</xsl:when>
- <xsl:when test="$month=12">December</xsl:when>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:value-of select="concat($month.name, ' ', $day, ', ', $year, ' at ',
- $time, ' ', $timezone)"/>
- </xsl:template>
-
- <!-- Footer Copyright -->
- <xsl:template match="copyright" mode="boost.footer">
- <xsl:if test="position() > 1">
- <br/>
- </xsl:if>
- <xsl:call-template name="gentext">
- <xsl:with-param name="key" select="'Copyright'"/>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:call-template name="dingbat">
- <xsl:with-param name="dingbat">copyright</xsl:with-param>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:call-template name="copyright.years">
- <xsl:with-param name="years" select="year"/>
- <xsl:with-param name="print.ranges" select="$make.year.ranges"/>
- <xsl:with-param name="single.year.ranges"
- select="$make.single.year.ranges"/>
- </xsl:call-template>
- <xsl:call-template name="gentext.space"/>
- <xsl:apply-templates select="holder" mode="titlepage.mode"/>
- </xsl:template>
-
- <!-- Footer License -->
- <xsl:template match="legalnotice" mode="boost.footer">
- <xsl:apply-templates select="para" mode="titlepage.mode" />
- </xsl:template>
-
- <xsl:template name="user.footer.content">
- <table width="100%">
- <tr>
- <td align="left">
- <xsl:variable name="revision-nodes"
- select="ancestor-or-self::*
- [not (attribute::rev:last-revision='')]"/>
- <xsl:if test="count($revision-nodes) > 0">
- <xsl:variable name="revision-node"
- select="$revision-nodes[last()]"/>
- <xsl:variable name="revision-text">
- <xsl:value-of
- select="normalize-space($revision-node/attribute::rev:last-revision)"/>
- </xsl:variable>
- <xsl:if test="string-length($revision-text) > 0">
- <p>
- <small>
- <xsl:text>Last revised: </xsl:text>
- <xsl:choose>
- <xsl:when test="contains($revision-text, '/')">
- <xsl:call-template name="format.cvs.revision">
- <xsl:with-param name="text" select="$revision-text"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="format.svn.revision">
- <xsl:with-param name="text" select="$revision-text"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </small>
- </p>
- </xsl:if>
- </xsl:if>
- </td>
- <td align="right">
- <div class = "copyright-footer">
- <xsl:apply-templates select="ancestor::*/*/copyright"
- mode="boost.footer"/>
- <xsl:apply-templates select="ancestor::*/*/legalnotice"
- mode="boost.footer"/>
- </div>
- </td>
- </tr>
- </table>
- </xsl:template>
-
- <!-- We don't want refentry's to show up in the TOC because they
- will merely be redundant with the synopsis. -->
- <xsl:template match="refentry" mode="toc"/>
-
- <!-- override the behaviour of some DocBook elements for better
- rendering facilities -->
-
- <xsl:template match = "programlisting[ancestor::informaltable]">
- <pre class = "table-{name(.)}"><xsl:apply-templates/></pre>
- </xsl:template>
-
- <xsl:template match = "refsynopsisdiv">
- <h2 class = "{name(.)}-title">Synopsis</h2>
- <div class = "{name(.)}">
- <xsl:apply-templates/>
- </div>
- </xsl:template>
-
-<!-- ============================================================ -->
-
-<xsl:template name="output.html.stylesheets">
- <xsl:param name="stylesheets" select="''"/>
-
- <xsl:choose>
- <xsl:when test="contains($stylesheets, ' ')">
- <link rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="href.target.relative">
- <xsl:with-param name="target" select="substring-before($stylesheets, ' ')"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:if test="$html.stylesheet.type != ''">
- <xsl:attribute name="type">
- <xsl:value-of select="$html.stylesheet.type"/>
- </xsl:attribute>
- </xsl:if>
- </link>
- <xsl:call-template name="output.html.stylesheets">
- <xsl:with-param name="stylesheets" select="substring-after($stylesheets, ' ')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="$stylesheets != ''">
- <link rel="stylesheet">
- <xsl:attribute name="href">
- <xsl:call-template name="href.target.relative">
- <xsl:with-param name="target" select="$stylesheets"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:if test="$html.stylesheet.type != ''">
- <xsl:attribute name="type">
- <xsl:value-of select="$html.stylesheet.type"/>
- </xsl:attribute>
- </xsl:if>
- </link>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-</xsl:stylesheet>
http://www.boost.org/LICENSE_1_0.txt)
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks"
xmlns:d="http://docbook.org/ns/docbook"
- xmlns:exsl="http://exslt.org/common"
- exclude-result-prefixes="suwl exsl d"
+xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks"
+ exclude-result-prefixes="suwl d"
version="1.0">
<!-- Import the HTML chunking stylesheet -->
<xsl:import
- href="http://docbook.sourceforge.net/release/xsl-ns/current/html/xref.xsl"/>
+ href="http://docbook.sourceforge.net/release/xsl/current/html/xref.xsl"/>
<xsl:template name="adjust-url">
</xsl:template>
-<xsl:template match="ulink" name="ulink">
+<xsl:template match="d:link" name="ulink">
<xsl:variable name="link">
<a>
- <xsl:if test="@id">
+ <xsl:if test="@xml:id">
<xsl:attribute name="name">
- <xsl:value-of select="@id"/>
+ <xsl:value-of select="@xml:id"/>
</xsl:attribute>
</xsl:if>
<xsl:attribute name="href">
<xsl:with-param name="target" select="@url"/>
</xsl:call-template>
</xsl:attribute>
- <xsl:if test="$ulink.target != ''">
+ <xsl:if test="$link.target != ''">
<xsl:attribute name="target">
- <xsl:value-of select="$ulink.target"/>
+ <xsl:value-of select="$link.target"/>
</xsl:attribute>
</xsl:if>
<xsl:choose>