mirror of
https://github.com/boostorg/boostbook.git
synced 2025-05-09 15:03:57 +00:00
Imported BoostBook XSL stylesheets and DTD
[SVN r17862]
This commit is contained in:
commit
df433e64bd
96
.gitattributes
vendored
Normal file
96
.gitattributes
vendored
Normal file
@ -0,0 +1,96 @@
|
||||
* text=auto !eol svneol=native#text/plain
|
||||
*.gitattributes text svneol=native#text/plain
|
||||
|
||||
# Scriptish formats
|
||||
*.bat text svneol=native#text/plain
|
||||
*.bsh text svneol=native#text/x-beanshell
|
||||
*.cgi text svneol=native#text/plain
|
||||
*.cmd text svneol=native#text/plain
|
||||
*.js text svneol=native#text/javascript
|
||||
*.php text svneol=native#text/x-php
|
||||
*.pl text svneol=native#text/x-perl
|
||||
*.pm text svneol=native#text/x-perl
|
||||
*.py text svneol=native#text/x-python
|
||||
*.sh eol=lf svneol=LF#text/x-sh
|
||||
configure eol=lf svneol=LF#text/x-sh
|
||||
|
||||
# Image formats
|
||||
*.bmp binary svneol=unset#image/bmp
|
||||
*.gif binary svneol=unset#image/gif
|
||||
*.ico binary svneol=unset#image/ico
|
||||
*.jpeg binary svneol=unset#image/jpeg
|
||||
*.jpg binary svneol=unset#image/jpeg
|
||||
*.png binary svneol=unset#image/png
|
||||
*.tif binary svneol=unset#image/tiff
|
||||
*.tiff binary svneol=unset#image/tiff
|
||||
*.svg text svneol=native#image/svg%2Bxml
|
||||
|
||||
# Data formats
|
||||
*.pdf binary svneol=unset#application/pdf
|
||||
*.avi binary svneol=unset#video/avi
|
||||
*.doc binary svneol=unset#application/msword
|
||||
*.dsp text svneol=crlf#text/plain
|
||||
*.dsw text svneol=crlf#text/plain
|
||||
*.eps binary svneol=unset#application/postscript
|
||||
*.gz binary svneol=unset#application/gzip
|
||||
*.mov binary svneol=unset#video/quicktime
|
||||
*.mp3 binary svneol=unset#audio/mpeg
|
||||
*.ppt binary svneol=unset#application/vnd.ms-powerpoint
|
||||
*.ps binary svneol=unset#application/postscript
|
||||
*.psd binary svneol=unset#application/photoshop
|
||||
*.rdf binary svneol=unset#text/rdf
|
||||
*.rss text svneol=unset#text/xml
|
||||
*.rtf binary svneol=unset#text/rtf
|
||||
*.sln text svneol=native#text/plain
|
||||
*.swf binary svneol=unset#application/x-shockwave-flash
|
||||
*.tgz binary svneol=unset#application/gzip
|
||||
*.vcproj text svneol=native#text/xml
|
||||
*.vcxproj text svneol=native#text/xml
|
||||
*.vsprops text svneol=native#text/xml
|
||||
*.wav binary svneol=unset#audio/wav
|
||||
*.xls binary svneol=unset#application/vnd.ms-excel
|
||||
*.zip binary svneol=unset#application/zip
|
||||
|
||||
# Text formats
|
||||
.htaccess text svneol=native#text/plain
|
||||
*.bbk text svneol=native#text/xml
|
||||
*.cmake text svneol=native#text/plain
|
||||
*.css text svneol=native#text/css
|
||||
*.dtd text svneol=native#text/xml
|
||||
*.htm text svneol=native#text/html
|
||||
*.html text svneol=native#text/html
|
||||
*.ini text svneol=native#text/plain
|
||||
*.log text svneol=native#text/plain
|
||||
*.mak text svneol=native#text/plain
|
||||
*.qbk text svneol=native#text/plain
|
||||
*.rst text svneol=native#text/plain
|
||||
*.sql text svneol=native#text/x-sql
|
||||
*.txt text svneol=native#text/plain
|
||||
*.xhtml text svneol=native#text/xhtml%2Bxml
|
||||
*.xml text svneol=native#text/xml
|
||||
*.xsd text svneol=native#text/xml
|
||||
*.xsl text svneol=native#text/xml
|
||||
*.xslt text svneol=native#text/xml
|
||||
*.xul text svneol=native#text/xul
|
||||
*.yml text svneol=native#text/plain
|
||||
boost-no-inspect text svneol=native#text/plain
|
||||
CHANGES text svneol=native#text/plain
|
||||
COPYING text svneol=native#text/plain
|
||||
INSTALL text svneol=native#text/plain
|
||||
Jamfile text svneol=native#text/plain
|
||||
Jamroot text svneol=native#text/plain
|
||||
Jamfile.v2 text svneol=native#text/plain
|
||||
Jamrules text svneol=native#text/plain
|
||||
Makefile* text svneol=native#text/plain
|
||||
README text svneol=native#text/plain
|
||||
TODO text svneol=native#text/plain
|
||||
|
||||
# Code formats
|
||||
*.c text svneol=native#text/plain
|
||||
*.cpp text svneol=native#text/plain
|
||||
*.h text svneol=native#text/plain
|
||||
*.hpp text svneol=native#text/plain
|
||||
*.ipp text svneol=native#text/plain
|
||||
*.tpp text svneol=native#text/plain
|
||||
*.jam text svneol=native#text/plain
|
||||
*.java text svneol=native#text/plain
|
398
dtd/boostbook.dtd
Normal file
398
dtd/boostbook.dtd
Normal file
@ -0,0 +1,398 @@
|
||||
<!--
|
||||
BoostBook DTD version 1.0
|
||||
|
||||
For further information, see: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Boost_Documentation_Format
|
||||
|
||||
Copyright (c) 2002 by Peter Simons <simons@computer.org>.
|
||||
All Rights Reserved.
|
||||
|
||||
This DTD module is identified by the PUBLIC and SYSTEM identifiers:
|
||||
|
||||
PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
|
||||
SYSTEM "http://cryp.to/boost-sandbox/libs/documentation/dtd/boostbook.dtd"
|
||||
|
||||
$Revision$
|
||||
$Date$
|
||||
-->
|
||||
|
||||
<!--========== Define XInclude features. ==========-->
|
||||
<!-- This is not really integrated into the DTD yet. Needs more
|
||||
research. -->
|
||||
<!--
|
||||
<!ELEMENT xi:include (xi:fallback)?>
|
||||
<!ATTLIST xi:include
|
||||
xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
|
||||
href CDATA #REQUIRED
|
||||
parse (xml|text) "xml"
|
||||
encoding CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT xi:fallback ANY>
|
||||
<!ATTLIST xi:fallback
|
||||
xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude">
|
||||
-->
|
||||
|
||||
<!ENTITY % local.common.attrib "xml:base CDATA #IMPLIED">
|
||||
|
||||
<!--========== Define the BoostBook extensions ==========-->
|
||||
<!ENTITY % boost.common.attrib "%local.common.attrib;">
|
||||
|
||||
<!ENTITY % boost.namespace.mix
|
||||
"class|class-specialization|struct|struct-specialization|
|
||||
union|union-specialization|typedef|enum|
|
||||
free-function-group|function|overloaded-function|
|
||||
namespace">
|
||||
|
||||
<!ENTITY % boost.template.mix
|
||||
"template-type-parameter|template-nontype-parameter|template-varargs">
|
||||
|
||||
<!ENTITY % boost.class.mix
|
||||
"static-constant|typedef|enum|
|
||||
copy-assignment|constructor|destructor|member-function-group|
|
||||
free-function-group|function|method|overloaded-function|
|
||||
overloaded-method|data-member">
|
||||
|
||||
<!ENTITY % boost.class.content
|
||||
"template?, inherit*, purpose?, description?,
|
||||
(%boost.class.mix;)*">
|
||||
|
||||
<!ENTITY % boost.class-specialization.content
|
||||
"template?, specialization?, inherit?, purpose?, description?,
|
||||
(%boost.class.mix;)*">
|
||||
|
||||
<!ENTITY % boost.function.semantics
|
||||
"para*, requires?, effects?, postconditions?, returns?, throws?,
|
||||
complexity?, notes?, rationale?">
|
||||
|
||||
<!ENTITY % library.content
|
||||
"libraryinfo, (title, ((section|library-reference|testsuite))+)?">
|
||||
|
||||
<!ELEMENT library (%library.content;)>
|
||||
<!ATTLIST library
|
||||
name CDATA #REQUIRED
|
||||
dirname CDATA #REQUIRED
|
||||
html-only CDATA #IMPLIED
|
||||
url CDATA #IMPLIED
|
||||
id CDATA #IMPLIED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT boostbook (title, (chapter|library)*)>
|
||||
<!ATTLIST boostbook %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT libraryinfo (author+, copyright*, legalnotice*, librarypurpose, librarycategory*)>
|
||||
<!ATTLIST libraryinfo %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT librarypurpose (#PCDATA|code|ulink|functionname|methodname|classname)*>
|
||||
<!ATTLIST librarypurpose %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT librarycategory (#PCDATA)>
|
||||
<!ATTLIST librarycategory
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT libraryname (#PCDATA)>
|
||||
<!ATTLIST libraryname %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT library-reference ANY>
|
||||
<!ATTLIST library-reference
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT librarylist EMPTY>
|
||||
<!ATTLIST librarylist %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT librarycategorylist (librarycategorydef)*>
|
||||
<!ATTLIST librarycategorylist %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT librarycategorydef (#PCDATA)>
|
||||
<!ATTLIST librarycategorydef
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT header ANY>
|
||||
<!ATTLIST header
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT namespace (%boost.namespace.mix;)*>
|
||||
<!ATTLIST namespace
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT class (%boost.class.content;)>
|
||||
<!ATTLIST class
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT struct (%boost.class.content;)>
|
||||
<!ATTLIST struct
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT union (%boost.class.content;)>
|
||||
<!ATTLIST union
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT class-specialization (%boost.class-specialization.content;)>
|
||||
<!ATTLIST class-specialization
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT struct-specialization (%boost.class-specialization.content;)>
|
||||
<!ATTLIST struct-specialization
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT union-specialization (%boost.class-specialization.content;)>
|
||||
<!ATTLIST union-specialization
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!--========= C++ Templates =========-->
|
||||
<!ELEMENT template (%boost.template.mix;)*>
|
||||
<!ATTLIST template %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT template-type-parameter (default?, purpose?)>
|
||||
<!ATTLIST template-type-parameter
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT template-nontype-parameter (type, default?, purpose?)>
|
||||
<!ATTLIST template-nontype-parameter
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT template-varargs EMPTY>
|
||||
<!ATTLIST template-varargs %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT specialization (template-arg)*>
|
||||
<!ATTLIST specialization %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT template-arg ANY>
|
||||
<!ATTLIST template-arg %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT default ANY>
|
||||
<!ATTLIST default %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT inherit ANY>
|
||||
<!ATTLIST inherit
|
||||
access CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT purpose ANY>
|
||||
<!ATTLIST purpose %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT description ANY>
|
||||
<!ATTLIST description %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT type ANY>
|
||||
<!ATTLIST type %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT typedef (type?, purpose?, description?)>
|
||||
<!ATTLIST typedef
|
||||
type CDATA #IMPLIED
|
||||
name CDATA #REQUIRED
|
||||
comment CDATA #IMPLIED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT enum (enumvalue*, purpose?, description?)>
|
||||
<!ATTLIST enum
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT enumvalue (default?)>
|
||||
<!ATTLIST enumvalue
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT static-constant EMPTY>
|
||||
<!ATTLIST static-constant
|
||||
type CDATA #REQUIRED
|
||||
name CDATA #REQUIRED
|
||||
value CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT data-member (type)>
|
||||
<!ATTLIST data-member
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT constructor (template?, parameter*, %boost.function.semantics;)>
|
||||
<!ATTLIST constructor %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT paramtype ANY>
|
||||
<!ATTLIST paramtype %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT effects ANY>
|
||||
<!ATTLIST effects %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT postconditions ANY>
|
||||
<!ATTLIST postconditions %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT destructor (%boost.function.semantics;)>
|
||||
<!ATTLIST destructor %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT member-function-group (method|overloaded-method)*>
|
||||
<!ATTLIST member-function-group
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT overloaded-method (signature*, purpose?, %boost.function.semantics;)>
|
||||
<!ATTLIST overloaded-method
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT signature (template?, type?, parameter)*>
|
||||
<!ATTLIST signature
|
||||
return-type CDATA #IMPLIED
|
||||
cv CDATA #IMPLIED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT requires ANY>
|
||||
<!ATTLIST requires %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT returns ANY>
|
||||
<!ATTLIST returns %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT throws ANY>
|
||||
<!ATTLIST throws %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT complexity ANY>
|
||||
<!ATTLIST complexity %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT notes ANY>
|
||||
<!ATTLIST notes %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT method (template?, type?, parameter*, %boost.function.semantics;)>
|
||||
<!ATTLIST method
|
||||
name CDATA #REQUIRED
|
||||
return-type CDATA #IMPLIED
|
||||
cv CDATA #IMPLIED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT function
|
||||
(template?, type?, parameter*, purpose?, %boost.function.semantics;)>
|
||||
<!ATTLIST function
|
||||
name CDATA #REQUIRED
|
||||
return-type CDATA #IMPLIED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT overloaded-function (signature*, purpose?, %boost.function.semantics;)>
|
||||
<!ATTLIST overloaded-function
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT rationale ANY>
|
||||
<!ATTLIST rationale %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT functionname (#PCDATA)>
|
||||
<!ATTLIST functionname %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT copy-assignment
|
||||
(template?, type?, parameter*, %boost.function.semantics;)>
|
||||
<!ATTLIST copy-assignment %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT free-function-group (function|overloaded-function)*>
|
||||
<!ATTLIST free-function-group
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT precondition ANY>
|
||||
<!ATTLIST precondition %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT code ANY>
|
||||
<!ATTLIST code %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT using-namespace EMPTY>
|
||||
<!ATTLIST using-namespace
|
||||
name CDATA #REQUIRED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!ELEMENT using-class EMPTY>
|
||||
<!ATTLIST using-class
|
||||
name CDATA #REQUIRED
|
||||
conformance CDATA #IMPLIED
|
||||
%boost.common.attrib;>
|
||||
|
||||
<!--========== Boost Testsuite Extensions ==========-->
|
||||
<!ENTITY % boost.testsuite.tests
|
||||
"compile-test|link-test|run-test|
|
||||
compile-fail-test|link-fail-test|run-fail-test">
|
||||
<!ENTITY % boost.testsuite.test.content
|
||||
"source*, lib*, requirement*, purpose, if-fails?">
|
||||
|
||||
<!ELEMENT testsuite ((%boost.testsuite.tests;)+)>
|
||||
<!ATTLIST testsuite %boost.common.attrib;>
|
||||
|
||||
<!ELEMENT compile-test (%boost.testsuite.test.content;)>
|
||||
<!ATTLIST compile-test
|
||||
filename CDATA #REQUIRED
|
||||
name CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT link-test (%boost.testsuite.test.content;)>
|
||||
<!ATTLIST link-test
|
||||
filename CDATA #REQUIRED
|
||||
name CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT run-test (%boost.testsuite.test.content;)>
|
||||
<!ATTLIST run-test
|
||||
filename CDATA #REQUIRED
|
||||
name CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT compile-fail-test (%boost.testsuite.test.content;)>
|
||||
<!ATTLIST compile-fail-test
|
||||
filename CDATA #REQUIRED
|
||||
name CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT link-fail-test (%boost.testsuite.test.content;)>
|
||||
<!ATTLIST link-fail-test
|
||||
filename CDATA #REQUIRED
|
||||
name CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT run-fail-test (%boost.testsuite.test.content;)>
|
||||
<!ATTLIST run-fail-test
|
||||
filename CDATA #REQUIRED
|
||||
name CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT source (#PCDATA|snippet)*>
|
||||
|
||||
<!ELEMENT snippet EMPTY>
|
||||
<!ATTLIST snippet
|
||||
name CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT lib (#PCDATA)>
|
||||
|
||||
<!ELEMENT requirement (#PCDATA)>
|
||||
<!ATTLIST requirement
|
||||
name CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT if-fails ANY>
|
||||
|
||||
<!ELEMENT parameter (paramtype, default?)>
|
||||
<!ATTLIST parameter
|
||||
name CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT programlisting ANY>
|
||||
<!ATTLIST programlisting
|
||||
name CDATA #IMPLIED
|
||||
format CDATA #IMPLIED
|
||||
conformance CDATA #IMPLIED>
|
||||
|
||||
<!--========== Customize the DocBook DTD ==========-->
|
||||
<!ENTITY % local.tech.char.class "|functionname|libraryname|code">
|
||||
<!ENTITY % local.para.class
|
||||
"|using-namespace|using-class|librarylist|librarycategorylist">
|
||||
<!ENTITY % local.descobj.class "|libraryinfo">
|
||||
<!ENTITY % local.classname.attrib "alt CDATA #IMPLIED">
|
||||
<!ENTITY % local.methodname.attrib "alt CDATA #IMPLIED">
|
||||
<!ENTITY % local.refentry.class "|library-reference|testsuite">
|
||||
<!ENTITY % local.title.char.mix "">
|
||||
<!ENTITY % programlisting.module "IGNORE">
|
||||
<!ENTITY % parameter.module "IGNORE">
|
||||
<!ENTITY % function.module "IGNORE">
|
||||
<!ENTITY % type.module "IGNORE">
|
||||
|
||||
<!--========== Import DocBook DTD ==========-->
|
||||
<!ENTITY % DocBook PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||
|
||||
%DocBook;
|
189
xsl/annotation.xsl
Normal file
189
xsl/annotation.xsl
Normal file
@ -0,0 +1,189 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version="1.0">
|
||||
<xsl:key name="classes" match="class" 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="libraries" match="library" use="@name"/>
|
||||
|
||||
<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="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="libraryname" mode="annotation">
|
||||
<xsl:variable name="name" select="text()"/>
|
||||
<xsl:variable name="node" select="key('libraries', $name)"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="count($node)=0">
|
||||
<xsl:message>
|
||||
Cannot find library '<xsl:value-of select="$name"/>'
|
||||
</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:call-template>
|
||||
</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="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>
|
||||
</xsl:stylesheet>
|
354
xsl/docbook.xsl
Normal file
354
xsl/docbook.xsl
Normal file
@ -0,0 +1,354 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
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="''"/>
|
||||
|
||||
<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: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: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:apply-templates mode="synopsis">
|
||||
<xsl:with-param name="indentation" select="0"/>
|
||||
</xsl:apply-templates>
|
||||
|
||||
<xsl:apply-templates mode="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:value-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 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}"></anchor>
|
||||
<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:value-of 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="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:value-of select="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|libraryname">
|
||||
<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"/>
|
||||
</xsl:stylesheet>
|
14
xsl/doxygen/collect.xsl
Normal file
14
xsl/doxygen/collect.xsl
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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 version="{doxygen/@version}">
|
||||
<!-- Load all doxgen generated xml files -->
|
||||
<xsl:for-each select="doxygen/compound">
|
||||
<xsl:copy-of select="document( concat(
|
||||
@refid, '.xml' ) )/doxygen/*" />
|
||||
</xsl:for-each>
|
||||
</doxygen>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
699
xsl/doxygen/doxygen2boostbook.xsl
Normal file
699
xsl/doxygen/doxygen2boostbook.xsl
Normal file
@ -0,0 +1,699 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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="''"/>
|
||||
|
||||
<!-- Prefix all of the headers output with this string -->
|
||||
<xsl:param name="boost.doxygen.header.prefix" select="''"/>
|
||||
|
||||
<xsl:output method="xml" indent="yes" standalone="yes"/>
|
||||
|
||||
<xsl:key name="compounds-by-kind" match="compounddef" use="@kind"/>
|
||||
<xsl:key name="compounds-by-id" match="compounddef" use="@id"/>
|
||||
|
||||
<xsl:strip-space elements="briefdescription detaileddescription"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:apply-templates select="doxygen"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="doxygen">
|
||||
<library-reference>
|
||||
<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>
|
||||
<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:message>
|
||||
Cannot handle compounddef with kind=<xsl:value-of select="@kind"/>
|
||||
</xsl:message>
|
||||
</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]">
|
||||
<!-- 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="$in-file=string(includes)">
|
||||
<!-- The short name of this class -->
|
||||
<xsl:variable name="name">
|
||||
<xsl:call-template name="strip-qualifiers">
|
||||
<xsl:with-param name="name" select="compoundname"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:element name="{$class-key}">
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="$name"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:apply-templates select="templateparamlist" mode="template"/>
|
||||
<xsl:apply-templates select="basecompoundref" mode="inherit"/>
|
||||
|
||||
<xsl:if test="briefdescription/text()|briefdescription/*">
|
||||
<purpose>
|
||||
<xsl:apply-templates select="briefdescription" mode="passthrough"/>
|
||||
</purpose>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="detaileddescription/text()|detaileddescription/*">
|
||||
<xsl:apply-templates select="detaileddescription"
|
||||
mode="passthrough"/>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:apply-templates/>
|
||||
|
||||
</xsl:element>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="enum">
|
||||
<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:if test="briefdescription/text()|briefdescription/*">
|
||||
<purpose>
|
||||
<xsl:apply-templates select="briefdescription" mode="passthrough"/>
|
||||
</purpose>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="detaileddescription/text()|detaileddescription/*">
|
||||
<xsl:apply-templates select="detaileddescription" mode="passthrough"/>
|
||||
</xsl:if>
|
||||
</enum>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="enumvalue">
|
||||
<enumvalue>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="name"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:if test="initializer">
|
||||
<default>
|
||||
<xsl:apply-templates select="initializer" mode="passthrough"/>
|
||||
</default>
|
||||
</xsl:if>
|
||||
</enumvalue>
|
||||
</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:value-of select="concat($boost.doxygen.header.prefix,
|
||||
string(compoundname))"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:apply-templates
|
||||
select="detaileddescription/*|detaileddescription/text()"
|
||||
mode="passthrough"/>
|
||||
|
||||
<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 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="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="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>
|
||||
<xsl:otherwise>
|
||||
<xsl:message>
|
||||
Cannot handle template parameter with type <xsl:value-of select="string(type)"/>
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="templateparamlist"/>
|
||||
|
||||
<!-- Inheritance -->
|
||||
<xsl:template match="basecompoundref" mode="inherit">
|
||||
<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: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 -->
|
||||
<member-function-group name="Public static functions">
|
||||
<xsl:apply-templates>
|
||||
<xsl:with-param name="in-section" select="true()"/>
|
||||
</xsl:apply-templates>
|
||||
</member-function-group>
|
||||
</xsl:when>
|
||||
<xsl:when test="@kind='protected-static-func'">
|
||||
<!-- TBD: pass on the fact that these are static functions -->
|
||||
<member-function-group name="Protected static functions">
|
||||
<xsl:apply-templates>
|
||||
<xsl:with-param name="in-section" select="true()"/>
|
||||
</xsl:apply-templates>
|
||||
</member-function-group>
|
||||
</xsl:when>
|
||||
<xsl:when test="@kind='private-static-func'">
|
||||
<!-- TBD: pass on the fact that these are static functions -->
|
||||
<member-function-group name="Private static functions">
|
||||
<xsl:apply-templates>
|
||||
<xsl:with-param name="in-section" select="true()"/>
|
||||
</xsl:apply-templates>
|
||||
</member-function-group>
|
||||
</xsl:when>
|
||||
<xsl:when test="@kind='public-func'">
|
||||
<member-function-group name="Public member functions">
|
||||
<xsl:apply-templates>
|
||||
<xsl:with-param name="in-section" select="true()"/>
|
||||
</xsl:apply-templates>
|
||||
</member-function-group>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:when>
|
||||
<xsl:when test="@kind='protected-func'">
|
||||
<member-function-group name="Protected member functions">
|
||||
<xsl:apply-templates>
|
||||
<xsl:with-param name="in-section" select="true()"/>
|
||||
</xsl:apply-templates>
|
||||
</member-function-group>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:when>
|
||||
<xsl:when test="@kind='private-func'">
|
||||
<member-function-group name="Private member functions">
|
||||
<xsl:apply-templates>
|
||||
<xsl:with-param name="in-section" select="true()"/>
|
||||
</xsl:apply-templates>
|
||||
</member-function-group>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:when>
|
||||
<xsl:when test="@kind='public-type'">
|
||||
<xsl:apply-templates/>
|
||||
</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:when>
|
||||
<xsl:when test="@kind='enum'">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message>
|
||||
Cannot handle sectiondef with kind=<xsl:value-of select="@kind"/>
|
||||
</xsl:message>
|
||||
</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>
|
||||
<xsl:when test="@kind='typedef'">
|
||||
<xsl:call-template name="typedef"/>
|
||||
</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: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='enum'">
|
||||
<xsl:call-template name="enum"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message>
|
||||
Cannot handle memberdef element with kind=<xsl:value-of select="@kind"/>
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Display typedefs -->
|
||||
<xsl:template name="typedef">
|
||||
<!-- TBD: Handle public/protected/private -->
|
||||
<typedef>
|
||||
<!-- Name of the type -->
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="name/text()"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<!-- Comment for the type -->
|
||||
<xsl:if test="briefdescription/text()|briefdescription/*">
|
||||
<xsl:attribute name="comment">
|
||||
<xsl:value-of select="briefdescription/text()"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
|
||||
<type>
|
||||
<xsl:apply-templates select="type/text()|type/*"
|
||||
mode="passthrough"/>
|
||||
</type>
|
||||
</typedef>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Handle function parameters -->
|
||||
<xsl:template match="param" mode="function">
|
||||
<parameter>
|
||||
<!-- Parameter name -->
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="declname/text()"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<!-- Parameter type -->
|
||||
<paramtype>
|
||||
<xsl:apply-templates select="type/*|type/text()" mode="passthrough"/>
|
||||
</paramtype>
|
||||
|
||||
<!-- TBD: handling of parameter descriptions -->
|
||||
<xsl:if test="defval">
|
||||
<default>
|
||||
<xsl:apply-templates select="defval/*|defval/text()"
|
||||
mode="passthrough"/>
|
||||
</default>
|
||||
</xsl:if>
|
||||
</parameter>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Handle function children -->
|
||||
<xsl:template name="function.children">
|
||||
<!-- Emit template header -->
|
||||
<xsl:apply-templates select="templateparamlist" mode="template"/>
|
||||
|
||||
<!-- Emit function parameters -->
|
||||
<xsl:apply-templates select="param" mode="function"/>
|
||||
|
||||
<!-- The description -->
|
||||
<xsl:if test="briefdescription/text()|briefdescription/*">
|
||||
<purpose>
|
||||
<xsl:apply-templates select="briefdescription" mode="passthrough"/>
|
||||
</purpose>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="detaileddescription/text()|detaileddescription/*">
|
||||
<xsl:apply-templates select="detaileddescription" mode="passthrough"/>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:apply-templates
|
||||
select="detaileddescription/para/simplesect[@kind='post']"
|
||||
mode="function-clauses"/>
|
||||
<xsl:apply-templates
|
||||
select="detaileddescription/para/simplesect[@kind='return']"
|
||||
mode="function-clauses"/>
|
||||
<xsl:if test="detaileddescription/para/parameterlist[@kind='exception']">
|
||||
<throws>
|
||||
<xsl:apply-templates
|
||||
select="detaileddescription/para/parameterlist[@kind='exception']"
|
||||
mode="function-clauses"/>
|
||||
</throws>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Handle free functions -->
|
||||
<xsl:template name="function">
|
||||
<xsl:param name="in-file" select="''"/>
|
||||
|
||||
<xsl:if test="contains(string(location/attribute::file), $in-file)">
|
||||
<function>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="name/text()"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<!-- Return type -->
|
||||
<xsl:attribute name="return-type">
|
||||
<xsl:value-of select="type"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:call-template name="function.children"/>
|
||||
</function>
|
||||
</xsl:if>
|
||||
</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 methods -->
|
||||
<xsl:template name="method">
|
||||
<method>
|
||||
<xsl:attribute name="name">
|
||||
<xsl:value-of select="name/text()"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<!-- TBD: virtual and static functions -->
|
||||
|
||||
<!-- 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:attribute name="return-type">
|
||||
<xsl:value-of select="type"/>
|
||||
</xsl:attribute>
|
||||
|
||||
<xsl:call-template name="function.children"/>
|
||||
</method>
|
||||
</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="para/simplesect" mode="passthrough">
|
||||
<xsl:if test="not (@kind='return') and
|
||||
not (@kind='post')">
|
||||
<xsl:apply-templates mode="passthrough"/>
|
||||
</xsl:if>
|
||||
</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>
|
||||
|
||||
<!-- Handle function clauses -->
|
||||
<xsl:template match="simplesect" mode="function-clauses">
|
||||
<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:template>
|
||||
|
||||
<xsl:template match="parameterlist" mode="function-clauses">
|
||||
<xsl:if test="@kind='exception'">
|
||||
<simpara>
|
||||
<classname><xsl:value-of select="parametername/text()"/></classname>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:apply-templates
|
||||
select="parameterdescription/para/text()|parameterdescription/para/*"
|
||||
mode="passthrough"/>
|
||||
</simpara>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
12
xsl/error.xsl
Normal file
12
xsl/error.xsl
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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>
|
15
xsl/fo.xsl
Normal file
15
xsl/fo.xsl
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
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="fop.extensions" select="1"/>
|
||||
<xsl:param name="make.year.ranges" select="1"/>
|
||||
<xsl:param name="ulink.show" select="0"/>
|
||||
</xsl:stylesheet>
|
1073
xsl/function.xsl
Normal file
1073
xsl/function.xsl
Normal file
File diff suppressed because it is too large
Load Diff
27
xsl/html-single.xsl
Normal file
27
xsl/html-single.xsl
Normal file
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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: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:template match="variablelist">
|
||||
<p><xsl:apply-templates mode="boost.variablelist"/></p>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="varlistentry" mode="boost.variablelist">
|
||||
<xsl:if test="position() > 1">
|
||||
<br/>
|
||||
</xsl:if>
|
||||
<b><xsl:apply-templates select="term"/></b>:
|
||||
<xsl:apply-templates select="listitem/*|listitem/text()"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
164
xsl/html.xsl
Normal file
164
xsl/html.xsl
Normal file
@ -0,0 +1,164 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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/html/chunk.xsl"/>
|
||||
|
||||
<xsl:param name="html.stylesheet" select="'reference.css'"/>
|
||||
<xsl:param name="navig.graphics" select="1"/>
|
||||
<xsl:param name="navig.graphics.extension" select="'.png'"/>
|
||||
<xsl:param name="chapter.autolabel" select="0"/>
|
||||
<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="html.extra.head.links" select="1"/>
|
||||
<xsl:param name="make.year.ranges" select="1"/>
|
||||
|
||||
<xsl:template name="header.navigation">
|
||||
<table border="1" cellpadding="2" bgcolor="#007F7F">
|
||||
<tr>
|
||||
<td bgcolor="#FFFFFF">
|
||||
<img src="../../c++boost.gif"
|
||||
alt="c++boost.gif (8819 bytes)" width="277" height="86"/>
|
||||
</td>
|
||||
<td>
|
||||
<a href="../../index.htm">
|
||||
<font color="#FFFFFF" size="4" face="Arial">Home</font>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="libraries.html">
|
||||
<font color="#FFFFFF" size="4" face="Arial">Libraries</font>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="../../people/people.htm">
|
||||
<font color="#FFFFFF" size="4" face="Arial">People</font>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="../../more/faq.htm">
|
||||
<font color="#FFFFFF" size="4" face="Arial">FAQ</font>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="../../more/index.htm">
|
||||
<font color="#FFFFFF" size="4" face="Arial">More</font>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
<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 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>
|
||||
|
||||
<xsl:template name="user.footer.content">
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td align="left">
|
||||
<small>
|
||||
<xsl:variable name="revision-nodes"
|
||||
select="ancestor-or-self::*
|
||||
[not (attribute::rev:last-revision='')]"/>
|
||||
<xsl:if test="count($revision-nodes)">
|
||||
<xsl:variable name="revision-node"
|
||||
select="$revision-nodes[last()]"/>
|
||||
<xsl:text>Last revised: </xsl:text>
|
||||
<xsl:call-template name="format.cvs.revision">
|
||||
<xsl:with-param name="text"
|
||||
select="string($revision-node/attribute::rev:last-revision)"/>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</small>
|
||||
</td>
|
||||
<td align="right">
|
||||
<small>
|
||||
<xsl:apply-templates select="ancestor::*/*/copyright"
|
||||
mode="boost.footer"/>
|
||||
</small>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="variablelist">
|
||||
<p><xsl:apply-templates mode="boost.variablelist"/></p>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="varlistentry" mode="boost.variablelist">
|
||||
<xsl:if test="position() > 1">
|
||||
<br/>
|
||||
</xsl:if>
|
||||
<b><xsl:apply-templates select="term"/></b>:
|
||||
<xsl:apply-templates select="listitem/*|listitem/text()"/>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
11
xsl/index.xsl
Normal file
11
xsl/index.xsl
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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>
|
118
xsl/library.xsl
Normal file
118
xsl/library.xsl
Normal file
@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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: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('../../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="$node/attribute::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:value-of select="generate-id($node)"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:with-param>
|
||||
<xsl:with-param name="text" select="string($node/attribute::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|copyright|legalnotice"/>
|
||||
</chapterinfo>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="librarypurpose|librarycategory"/>
|
||||
|
||||
</xsl:stylesheet>
|
282
xsl/lookup.xsl
Normal file
282
xsl/lookup.xsl
Normal file
@ -0,0 +1,282 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version="1.0">
|
||||
|
||||
<!-- 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:template>
|
||||
|
||||
<!-- Strip the qualifiers off a qualified name and return the unqualified
|
||||
name. For instance, "boost::python::function" would become just
|
||||
"function". -->
|
||||
<xsl:template name="strip-qualifiers">
|
||||
<xsl:param name="name"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($name, '::')">
|
||||
<xsl:call-template name="strip-qualifiers">
|
||||
<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>
|
||||
|
||||
<!-- Build the fully-qualified name of the given node -->
|
||||
<xsl:template name="fully-qualified-name">
|
||||
<xsl:param name="node"/>
|
||||
<xsl:param name="separator" select="'::'"/>
|
||||
<xsl:apply-templates select="$node" mode="fully-qualified-name">
|
||||
<xsl:with-param name="separator" select="$separator"/>
|
||||
</xsl:apply-templates>
|
||||
</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="separator" select="'::'"/>
|
||||
<xsl:call-template name="build-fully-qualified-name">
|
||||
<xsl:with-param name="separator" select="$separator"/>
|
||||
</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="separator" select="'::'"/>
|
||||
|
||||
<!-- The depth of qualified name element that we will print now-->
|
||||
<xsl:param name="depth" select="1"/>
|
||||
|
||||
<!-- Determine the set of ancestor namespaces -->
|
||||
<xsl:variable name="ancestors"
|
||||
select="ancestor::namespace|ancestor::class"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="$depth > count($ancestors)">
|
||||
<xsl:apply-templates select="." mode="print-name"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:if test="name($ancestors[$depth])='namespace' or
|
||||
count(ancestor::free-function-group)=0">
|
||||
<xsl:apply-templates select="$ancestors[$depth]" mode="print-name"/>
|
||||
<xsl:value-of select="$separator"/>
|
||||
</xsl:if>
|
||||
<xsl:call-template name="build-fully-qualified-name">
|
||||
<xsl:with-param name="separator" select="$separator"/>
|
||||
<xsl:with-param name="depth" select="$depth + 1"/>
|
||||
</xsl:call-template>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Print the name of the current node -->
|
||||
<xsl:template match="*" mode="print-name">
|
||||
<xsl:value-of select="@name"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="name-matches-node">
|
||||
<!-- The name we are looking for -->
|
||||
<xsl:param name="name"/>
|
||||
|
||||
<!-- The name to display -->
|
||||
<xsl:param name="display-name" select="$name"/>
|
||||
|
||||
<!-- The context in which this name occurs -->
|
||||
<xsl:param name="context"/>
|
||||
|
||||
<!-- The node that we are checking against -->
|
||||
<xsl:param name="node"/>
|
||||
|
||||
<!-- The mode we are in. Can be one of:
|
||||
matches: emits the matches as they are found (for debugging)
|
||||
link: link to the node that was found
|
||||
-->
|
||||
<xsl:param name="mode" select="'matches'"/>
|
||||
|
||||
<!-- The index into the list of using directives for the context node -->
|
||||
<xsl:param name="index" select="1"/>
|
||||
|
||||
<!-- The prefix we should append to the name when checking this node -->
|
||||
<xsl:param name="prefix" select="''"/>
|
||||
|
||||
<!-- The fully-qualified name of the node we are checking against -->
|
||||
<xsl:variable name="fully-qualified-name">
|
||||
<xsl:call-template name="fully-qualified-name">
|
||||
<xsl:with-param name="node" select="$node"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- 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"/>
|
||||
|
||||
<!-- The name of the current directive -->
|
||||
<xsl:variable name="this-context">
|
||||
<xsl:apply-templates select="$directives[$index]" mode="print-name"/>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Check if we have a match -->
|
||||
<xsl:variable name="have-match"
|
||||
select="$fully-qualified-name = concat($prefix, $name)"/>
|
||||
|
||||
<xsl:if test="$have-match">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$mode='matches'">
|
||||
Match in namespace ::<xsl:value-of select="$prefix"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$mode='link'">
|
||||
<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="$display-name"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:if test="(not($index > count($directives))) and
|
||||
(not($have-match) or ($mode = 'matches'))">
|
||||
<xsl:variable name="first-branch">
|
||||
<xsl:if test="not ($prefix = '')">
|
||||
<!-- Recurse and append the current context node to the prefix -->
|
||||
<xsl:call-template name="name-matches-node">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
<xsl:with-param name="display-name" select="$display-name"/>
|
||||
<xsl:with-param name="context" select="$context"/>
|
||||
<xsl:with-param name="node" select="$node"/>
|
||||
<xsl:with-param name="mode" select="$mode"/>
|
||||
<xsl:with-param name="index" select="$index + 1"/>
|
||||
<xsl:with-param name="prefix"
|
||||
select="concat($prefix, $this-context, '::')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="string($first-branch) != ''">
|
||||
<xsl:copy-of select="$first-branch"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- Recurse with just the current context node -->
|
||||
<xsl:call-template name="name-matches-node">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
<xsl:with-param name="display-name" select="$display-name"/>
|
||||
<xsl:with-param name="context" select="$context"/>
|
||||
<xsl:with-param name="node" select="$node"/>
|
||||
<xsl:with-param name="mode" select="$mode"/>
|
||||
<xsl:with-param name="index" select="$index + 1"/>
|
||||
<xsl:with-param name="prefix"
|
||||
select="concat($this-context, '::')"/>
|
||||
</xsl:call-template>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Count the number of nodes in the set that match the given name and
|
||||
lookup context -->
|
||||
<xsl:template name="count-matches">
|
||||
<xsl:param name="name"/>
|
||||
<xsl:param name="context"/>
|
||||
<xsl:param name="nodes"/>
|
||||
|
||||
<xsl:variable name="match-string">
|
||||
<xsl:for-each select="$nodes">
|
||||
<xsl:variable name="does-match">
|
||||
<xsl:call-template name="name-matches-node">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
<xsl:with-param name="context" select="$context"/>
|
||||
<xsl:with-param name="node" select="."/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:if test="not($does-match='')">X</xsl:if>
|
||||
</xsl:for-each>
|
||||
</xsl:variable>
|
||||
<xsl:value-of select="string-length($match-string)"/>
|
||||
</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"/>
|
||||
|
||||
<!-- Count the number of nodes that match -->
|
||||
<xsl:variable name="matches">
|
||||
<xsl:call-template name="count-matches">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
<xsl:with-param name="context" select="$lookup"/>
|
||||
<xsl:with-param name="nodes" select="$nodes"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="$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:when test="$matches = 1">
|
||||
<xsl:for-each select="$nodes">
|
||||
<xsl:call-template name="name-matches-node">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
<xsl:with-param name="display-name" select="$display-name"/>
|
||||
<xsl:with-param name="context" select="$lookup"/>
|
||||
<xsl:with-param name="node" select="."/>
|
||||
<xsl:with-param name="mode" select="'link'"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<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="$nodes">
|
||||
<xsl:call-template name="name-matches-node">
|
||||
<xsl:with-param name="name" select="$name"/>
|
||||
<xsl:with-param name="context" select="$lookup"/>
|
||||
<xsl:with-param name="node" select="."/>
|
||||
<xsl:with-param name="mode" select="'matches'"/>
|
||||
</xsl:call-template>
|
||||
</xsl:for-each>
|
||||
</xsl:message>
|
||||
<xsl:value-of select="$display-name"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
95
xsl/reference.xsl
Normal file
95
xsl/reference.xsl
Normal file
@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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="testing/testsuite.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" 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="synopsis">
|
||||
<xsl:with-param name="text">
|
||||
<xsl:call-template name="namespace-synopsis">
|
||||
<xsl:with-param name="indentation" select="$indentation"/>
|
||||
</xsl:call-template>
|
||||
</xsl:with-param>
|
||||
</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="class|class-specialization|
|
||||
struct|struct-specialization|
|
||||
union|union-specialization|
|
||||
namespace|typedef|enum|
|
||||
free-function-group"
|
||||
mode="reference">
|
||||
<xsl:with-param name="indentation" select="0"/>
|
||||
</xsl:apply-templates>
|
||||
<xsl:apply-templates select="enum|function|overloaded-function"
|
||||
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"/>
|
||||
</xsl:stylesheet>
|
125
xsl/source-highlight.xsl
Normal file
125
xsl/source-highlight.xsl
Normal file
@ -0,0 +1,125 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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>
|
||||
|
||||
<!-- Perform C++ keyword highlighting on the given text -->
|
||||
<xsl:template name="highlight-text">
|
||||
<xsl:param name="text" select="."/>
|
||||
<xsl:param 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:param name="best-match" select="''"/>
|
||||
|
||||
<!-- Determine the current keyword -->
|
||||
<xsl:variable name="keyword">
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($keywords, ' ')">
|
||||
<xsl:value-of select="substring-before($keywords, ' ')"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$keywords"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Determine the set of keywords that are left -->
|
||||
<xsl:variable name="keywords-left">
|
||||
<xsl:if test="contains($keywords, ' ')">
|
||||
<xsl:value-of select="substring-after($keywords, ' ')"/>
|
||||
</xsl:if>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- The set of characters that can be identifiers -->
|
||||
<xsl:variable name="id-chars" select="'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_'"/>
|
||||
|
||||
<xsl:variable name="X" select="'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'"/>
|
||||
|
||||
<xsl:choose>
|
||||
<!-- Have we exhausted all keywords without finding any to highlight? -->
|
||||
<xsl:when test="$keyword='' and $best-match=''">
|
||||
<!-- Just copy the text -->
|
||||
<xsl:copy-of select="$text"/>
|
||||
</xsl:when>
|
||||
|
||||
<!-- Have we exhausted all keywords, but have one to highlight? If so,
|
||||
make sure we didn't just find part of an identifier. -->
|
||||
<xsl:when
|
||||
test="$keyword='' and
|
||||
not (starts-with(translate(substring-after($text, $best-match),
|
||||
$id-chars, $X), 'X')) and
|
||||
not (substring(translate(substring-before($text, $best-match),
|
||||
$id-chars, $X),
|
||||
string-length(substring-before($text,
|
||||
$best-match)),
|
||||
1) = 'X')">
|
||||
<!-- Copy text before this keyword -->
|
||||
<xsl:value-of select="substring-before($text, $best-match)"/>
|
||||
|
||||
<!-- Highlight the keyword -->
|
||||
<xsl:call-template name="highlight-keyword">
|
||||
<xsl:with-param name="keyword" select="$best-match"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<!-- Recurse on the rest of the text -->
|
||||
<xsl:call-template name="highlight-text">
|
||||
<xsl:with-param name="text"
|
||||
select="substring-after($text, $best-match)"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
|
||||
<!-- We thought we had a keyword to highlight, but it was part of an
|
||||
identifier. So output all of the text up to (but not including!)
|
||||
the last letter of the identifier, and try again to
|
||||
highlight. -->
|
||||
<xsl:when test="$keyword=''">
|
||||
<xsl:value-of select="substring-before($text, $best-match)"/>
|
||||
<xsl:value-of
|
||||
select="substring($best-match, 1, string-length($best-match)-1)"/>
|
||||
<xsl:call-template name="highlight-text">
|
||||
<xsl:with-param name="text"
|
||||
select="concat(substring($best-match, string-length($best-match),
|
||||
1), substring-after($text, $best-match))"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
|
||||
<!-- Does the text contain this keyword with a better match than we
|
||||
previously had? -->
|
||||
<xsl:when
|
||||
test="contains($text, $keyword) and
|
||||
(($best-match = '') or
|
||||
(string-length(substring-before($text, $keyword)) <
|
||||
string-length(substring-before($text, $best-match))))">
|
||||
<!-- Recurse with the current keyword as the new best match -->
|
||||
<xsl:call-template name="highlight-text">
|
||||
<xsl:with-param name="text" select="$text"/>
|
||||
<xsl:with-param name="keywords" select="$keywords-left"/>
|
||||
<xsl:with-param name="best-match" select="$keyword"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
|
||||
<!-- Text does not contain this keyword. Just recurse normally -->
|
||||
<xsl:otherwise>
|
||||
<xsl:call-template name="highlight-text">
|
||||
<xsl:with-param name="text" select="$text"/>
|
||||
<xsl:with-param name="keywords" select="$keywords-left"/>
|
||||
<xsl:with-param name="best-match" select="$best-match"/>
|
||||
</xsl:call-template>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
421
xsl/template.xsl
Normal file
421
xsl/template.xsl
Normal file
@ -0,0 +1,421 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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/*/@comment|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/@comment|$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/@comment|$parameter/purpose">
|
||||
<xsl:call-template name="highlight-comment">
|
||||
<xsl:with-param name="text">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@comment">
|
||||
<xsl:message>
|
||||
<xsl:text>Warning: 'comment' attribute of template parameter is deprecated. Use 'purpose' element.</xsl:text>
|
||||
<xsl:call-template name="print.warning.context"/>
|
||||
</xsl:message>
|
||||
<xsl:value-of select="concat(' // ',$parameter/@comment)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> // </xsl:text>
|
||||
<xsl:apply-templates select="purpose"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
|
||||
<!-- Indent the next line -->
|
||||
<xsl:if test="$parameter/@comment or $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 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:text> </xsl:text>
|
||||
<xsl:value-of select="$parameter/@name"/>
|
||||
|
||||
<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="annotation"/>
|
||||
</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:text> </xsl:text>
|
||||
<xsl:value-of select="$parameter/@name"/>
|
||||
|
||||
<xsl:variable name="def">
|
||||
<xsl:if test="$parameter/default">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$highlight">
|
||||
<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:if>
|
||||
</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-varargs" mode="print.parameter">
|
||||
<xsl:text>...</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="specialization">
|
||||
<xsl:text><</xsl:text>
|
||||
<xsl:apply-templates select="template-arg"/>
|
||||
<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="annotation"/>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
|
236
xsl/testing/Jamfile.xsl
Normal file
236
xsl/testing/Jamfile.xsl
Normal file
@ -0,0 +1,236 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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>
|
104
xsl/testing/testsuite.xsl
Normal file
104
xsl/testing/testsuite.xsl
Normal file
@ -0,0 +1,104 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version="1.0">
|
||||
<xsl:template match="testsuite">
|
||||
<section>
|
||||
<xsl:if test="@id">
|
||||
<xsl:attribute name="id">
|
||||
<xsl:value-of select="@id"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
|
||||
<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>
|
886
xsl/type.xsl
Normal file
886
xsl/type.xsl
Normal file
@ -0,0 +1,886 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version="1.0">
|
||||
|
||||
<xsl:strip-space elements="inherit"/>
|
||||
|
||||
<!-- 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>
|
||||
|
||||
<xsl:template match="class|struct|union" mode="generate.id">
|
||||
<xsl:value-of select="local-name(.)"/>
|
||||
<xsl:text>.</xsl:text>
|
||||
<xsl:call-template name="fully-qualified-name">
|
||||
<xsl:with-param name="node" select="."/>
|
||||
<xsl:with-param name="separator" select="'.'"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="enum" mode="generate.id">
|
||||
<xsl:text>enum.</xsl:text>
|
||||
<xsl:call-template name="fully-qualified-name">
|
||||
<xsl:with-param name="node" select="."/>
|
||||
<xsl:with-param name="separator" select="'.'"/>
|
||||
</xsl:call-template>
|
||||
</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: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:apply-templates select="template" mode="synopsis">
|
||||
<xsl:with-param name="indentation" select="$indentation"/>
|
||||
</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:with-param>
|
||||
<xsl:with-param name="highlight" select="true()"/>
|
||||
</xsl:call-template>
|
||||
</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="indentation"/>
|
||||
<xsl:param name="max-type-length"/>
|
||||
<xsl:param name="max-name-length"/>
|
||||
|
||||
<!-- 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:call-template name="print.warning.context"/>
|
||||
</xsl:message>
|
||||
<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()"/>
|
||||
</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:value-of select="substring(concat(@name, ';', $name-padding),
|
||||
1, $max-name-length)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="concat(' ',@name,';')"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:variable name="purpose">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@comment">
|
||||
<xsl:message>
|
||||
<xsl:text>Warning: `comment' attribute of `typedef' element is deprecated. Use `purpose' element instead.</xsl:text>
|
||||
<xsl:call-template name="print.warning.context"/>
|
||||
</xsl:message>
|
||||
<xsl:value-of select="@comment"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="purpose">
|
||||
<xsl:apply-templates select="purpose"/>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:if test="@comment or purpose">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:call-template name="highlight-comment">
|
||||
<xsl:with-param name="text">
|
||||
<xsl:text>// </xsl:text>
|
||||
<xsl:copy-of select="$purpose"/>
|
||||
</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"/>
|
||||
|
||||
<!-- 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="indentation" select="$indentation"/>
|
||||
<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:template>
|
||||
|
||||
<!-- TBD: Implement this -->
|
||||
<xsl:template match="typedef" mode="reference"/>
|
||||
|
||||
<!-- 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="concat('static const ', @type, ' ',
|
||||
@name, ' = ', @value,';')"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<xsl:if test="@comment">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:call-template name="highlight-comment">
|
||||
<xsl:with-param name="text" select="concat('// ', @comment)"/>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Emit a list of base classes -->
|
||||
<xsl:template match="inherit">
|
||||
<xsl:choose>
|
||||
<xsl:when test="position()=1">
|
||||
<xsl:text> : </xsl:text>
|
||||
</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: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" select="../@name"/>
|
||||
</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" select="../@name"/>
|
||||
</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" select="../@name"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Emit class reference documentation -->
|
||||
<xsl:template match="class|class-specialization|
|
||||
struct|struct-specialization|
|
||||
union|union-specialization" mode="reference">
|
||||
<!-- 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: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:apply-templates select="specialization"/>
|
||||
</xsl:with-param>
|
||||
<xsl:with-param name="purpose" select="./purpose"/>
|
||||
<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">
|
||||
<!-- Template header -->
|
||||
<xsl:if test="template">
|
||||
<xsl:call-template name="indent">
|
||||
<xsl:with-param name="indentation" select="0"/>
|
||||
</xsl:call-template>
|
||||
<xsl:apply-templates select="template" mode="reference">
|
||||
<xsl:with-param name="indentation" select="0"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:if>
|
||||
<xsl:text> </xsl:text>
|
||||
|
||||
<!-- Class name -->
|
||||
<xsl:call-template name="indent">
|
||||
<xsl:with-param name="indentation" select="0"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="highlight-keyword">
|
||||
<xsl:with-param name="keyword" select="$class-key"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:apply-templates select="specialization"/>
|
||||
|
||||
<!-- Base class list -->
|
||||
<xsl:apply-templates select="inherit"/>
|
||||
|
||||
<!-- Opening brace and public designator -->
|
||||
<xsl:text> { </xsl:text>
|
||||
<xsl:call-template name="indent">
|
||||
<xsl:with-param name="indentation" select="0"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="highlight-keyword">
|
||||
<xsl:with-param name="keyword" select="'public'"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text>:</xsl:text>
|
||||
|
||||
<!-- Typedefs -->
|
||||
<xsl:if test="typedef">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:call-template name="indent">
|
||||
<xsl:with-param name="indentation" select="2"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="highlight-comment">
|
||||
<xsl:with-param name="text" select="'// types'"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<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="2"/>
|
||||
<xsl:with-param name="max-type-length"
|
||||
select="$max-type-length"/>
|
||||
<xsl:with-param name="max-name-length"
|
||||
select="$max-name-length"/>
|
||||
</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="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="2"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:if>
|
||||
|
||||
<!-- Construct/Copy/Destruct -->
|
||||
<xsl:call-template name="construct-copy-destruct-synopsis">
|
||||
<xsl:with-param name="indentation" select="2"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<!-- Member functions -->
|
||||
<xsl:apply-templates
|
||||
select="member-function-group|method|overloaded-method"
|
||||
mode="synopsis">
|
||||
<xsl:with-param name="indentation" select="2"/>
|
||||
</xsl:apply-templates>
|
||||
|
||||
<!-- Data members -->
|
||||
<xsl:apply-templates select="data-member" mode="synopsis">
|
||||
<xsl:with-param name="indentation" select="2"/>
|
||||
</xsl:apply-templates>
|
||||
|
||||
<!-- Closing brace -->
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:call-template name="indent">
|
||||
<xsl:with-param name="indentation" select="0"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text>};</xsl:text>
|
||||
|
||||
<!-- Associated free functions -->
|
||||
<xsl:apply-templates select="free-function-group" mode="synopsis">
|
||||
<xsl:with-param name="indentation" select="0"/>
|
||||
<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:call-template name="print.warning.context"/>
|
||||
</xsl:message>
|
||||
<xsl:apply-templates select="para" mode="annotation"/>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="description"/>
|
||||
|
||||
<xsl:call-template name="construct-copy-destruct-reference"/>
|
||||
<xsl:apply-templates
|
||||
select="member-function-group|method|overloaded-method"
|
||||
mode="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"/>
|
||||
|
||||
<!-- Spacing -->
|
||||
<xsl:if
|
||||
test="not(local-name(preceding-sibling::*[position()=1])=local-name(.))">
|
||||
<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:apply-templates select="type/*|type/text()" mode="annotation"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@name"/>
|
||||
<xsl:text>;</xsl:text>
|
||||
</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 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 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="annotation"/>
|
||||
</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: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 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"/>
|
||||
<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="type.enum.display"/>
|
||||
</xsl:with-param>
|
||||
<xsl:with-param name="text">
|
||||
<xsl:apply-templates select="para"/>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Enumeration reference -->
|
||||
<xsl:template match="enum" mode="reference"/>
|
||||
|
||||
<!-- 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"/>
|
||||
|
||||
<!-- Internal: The column we are on -->
|
||||
<xsl:param name="column" select="$indentation"/>
|
||||
|
||||
<!-- Internal: The list of enumeration values -->
|
||||
<xsl:param name="values" select="enumvalue"/>
|
||||
|
||||
<!-- Internal: a prefix that we need to print prior to printing
|
||||
this value. -->
|
||||
<xsl:param name="prefix" select="''"/>
|
||||
|
||||
<xsl:if test="$values">
|
||||
<xsl:variable name="value" select="$values[position()=1]"/>
|
||||
<xsl:variable name="rest" select="$values[position() > 1]"/>
|
||||
|
||||
<!-- 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="$values/attribute">
|
||||
<xsl:text> = </xsl:text>
|
||||
<xsl:value-of select="string($values/attribute)"/>
|
||||
</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)"/>
|
||||
|
||||
<xsl:choose>
|
||||
<!-- If the enumeration value fits on this line, put it there -->
|
||||
<xsl:when test="$end < $max-columns">
|
||||
<xsl:value-of select="$prefix"/>
|
||||
<xsl:value-of select="$value/attribute::name"/>
|
||||
<xsl:if test="$value/default">
|
||||
<xsl:text> = </xsl:text>
|
||||
<xsl:apply-templates
|
||||
select="$value/default/*|$value/default/text()"/>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:call-template name="type.enum.list.compact">
|
||||
<xsl:with-param name="indentation" select="$indentation"/>
|
||||
<xsl:with-param name="column" select="$end"/>
|
||||
<xsl:with-param name="values" select="$rest"/>
|
||||
<xsl:with-param name="prefix" select="', '"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<!-- This enumeration value doesn't fit on this line, so print
|
||||
it on the next line -->
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$prefix"/>
|
||||
<xsl:text> </xsl:text>
|
||||
|
||||
<xsl:call-template name="indent">
|
||||
<xsl:with-param name="indentation" select="$indentation"/>
|
||||
</xsl:call-template>
|
||||
|
||||
<xsl:value-of select="$value/attribute::name"/>
|
||||
<xsl:if test="$value/default">
|
||||
<xsl:text> = </xsl:text>
|
||||
<xsl:apply-templates
|
||||
select="$value/default/*|$value/default/text()"/>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:variable name="end" select="$indentation
|
||||
+ string-length($result)
|
||||
- string-length($prefix)"/>
|
||||
|
||||
<xsl:call-template name="type.enum.list.compact">
|
||||
<xsl:with-param name="indentation" select="$indentation"/>
|
||||
<xsl:with-param name="column" select="$end"/>
|
||||
<xsl:with-param name="values" select="$rest"/>
|
||||
<xsl:with-param name="prefix" select="', '"/>
|
||||
</xsl:call-template>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
18
xsl/utility.xsl
Normal file
18
xsl/utility.xsl
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
<!ENTITY nbsp " ">
|
||||
]>
|
||||
<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>
|
||||
|
||||
</xsl:stylesheet>
|
Loading…
x
Reference in New Issue
Block a user