<?xml version="1.0" encoding="utf-8"?>\r
<xsl:stylesheet version="1.0"\r
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
- xmlns:str="http://exslt.org/strings">\r
+ xmlns:str="http://exslt.org/strings"\r
+ extension-element-prefixes="str">\r
\r
<xsl:output \r
method="html" \r
<xsl:value-of select="substring-after(current(),'@TOPDIR@')"/>\r
</xsl:template>\r
\r
- <!-- Add 'class' attribute to some special paragraphs/lists -->\r
+ <!-- Add 'class' attribute -->\r
\r
<xsl:template name="add-class">\r
<xsl:param name="class"/>\r
</xsl:element>\r
</xsl:template>\r
\r
+ <!-- Reformat detailed member documentation -->\r
+\r
+ <xsl:template match="table[@class='memname']">\r
+ <xsl:variable name="name1"><xsl:value-of select="str:split(tr/td[@class='memname'],'::')[position()=last()]"/></xsl:variable>\r
+ <xsl:variable name="name2"><xsl:value-of select="str:split(tr/td[@class='memname'],' ')[position()=last()]"/></xsl:variable>\r
+ <xsl:variable name="name"><xsl:value-of select="substring($name1,string-length($name1)-string-length($name2))"/></xsl:variable>\r
+ <xsl:element name="table">\r
+ <xsl:attribute name="class">\r
+ <xsl:text>memname</xsl:text>\r
+ <xsl:if test="contains(tr/td[@class='memname'],'#define')"><xsl:text> macro</xsl:text></xsl:if>\r
+ </xsl:attribute>\r
+ <tr>\r
+ <td class="memtype" colspan="5">\r
+ <xsl:for-each select="tr/td[@class='memname']/*|tr/td[@class='memname']/text()">\r
+ <xsl:choose>\r
+ <xsl:when test="position()=last()">\r
+ <xsl:value-of select="substring(.,1,string-length(.)-string-length($name))"/>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <xsl:copy-of select="."/>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ </xsl:for-each>\r
+ </td>\r
+ </tr>\r
+\r
+ <xsl:choose>\r
+ <xsl:when test="tr/td[@class='paramtype']">\r
+ <tr>\r
+ <td class="memname"><xsl:copy-of select="$name"/></td>\r
+ <td class="memparen">(</td>\r
+ <xsl:copy-of select="tr[1]/td[@class='paramtype']"/>\r
+ <xsl:copy-of select="tr[1]/td[@class='paramname']"/>\r
+ <td class="memparen"><xsl:if test="not(tr[td[@class='paramkey']])">)</xsl:if></td>\r
+ </tr>\r
+\r
+ <xsl:for-each select="tr[td[@class='paramkey']]">\r
+ <tr>\r
+ <td class="memname"></td>\r
+ <td class="memparen"></td>\r
+ <xsl:copy-of select="td[@class='paramtype']"/>\r
+ <xsl:copy-of select="td[@class='paramname']"/>\r
+ <td class="memparen"><xsl:if test="position()=last()">)</xsl:if></td>\r
+ </tr>\r
+ </xsl:for-each>\r
+ </xsl:when>\r
+ <xsl:otherwise>\r
+ <tr>\r
+ <td class="memname"><xsl:copy-of select="$name"/></td>\r
+ <td class="memparen"><xsl:if test="tr/td[.='(']">()</xsl:if></td>\r
+ <td class="paramtype"></td>\r
+ <td class="paramname"></td>\r
+ <td class="memparen"></td>\r
+ </tr>\r
+ </xsl:otherwise>\r
+ </xsl:choose>\r
+ <tr>\r
+ <td colspan="5" class="memattrs"><xsl:copy-of select="tr/td[@width='100%']/*|tr/td[@width='100%']/text()"/></td>\r
+ </tr>\r
+ </xsl:element>\r
+ </xsl:template>\r
+\r
+ <!-- no idea, where these 's come frome ... -->\r
+ <xsl:template match="div[@class='memproto']/text()[.=' 
']">\r
+ </xsl:template>\r
+\r
<!-- Add grouping to all-members page -->\r
\r
<xsl:template match="table[preceding-sibling::h1[1][contains(text(),'Member List')]]">\r
<table class="allmembers">\r
- <tr><td colspan="3"><h2>Public static member functions</h2></td></tr>\r
- <xsl:apply-templates select="tr[contains(td[3],'static')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))]"/>\r
-\r
- <tr><td colspan="3"><h2>Public member functions</h2></td></tr>\r
- <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][not(contains(td[3],'static'))][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))][not(contains(td[3],'pure virtual'))]"/>\r
-\r
- <tr><td colspan="r"><h2>Public typedefs</h2></td></tr>\r
- <xsl:apply-templates select="tr[contains(td[1],'typedef')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))][not(contains(td[3],'pure virtual'))]"/>\r
\r
- <tr><td colspan="3"><h2>Non-public members</h2></td></tr>\r
- <xsl:apply-templates select="tr[contains(td[3],'protected') or contains(td[3],'private') or contains(td[3],'friend')][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))][not(contains(td[3],'pure virtual'))]"/>\r
+ <!-- We need to filter the table rows by looking for indications on the object type -->\r
+ <!-- The table has 3 acolumns: -->\r
+ <!-- td[1] is the name of the object, -->\r
+ <!-- td[2] is the name of the class the object is defined in -->\r
+ <!-- td[3] contains additional flags -->\r
+ <!-- -->\r
+ <!-- The conditions we have are: -->\r
+ <!-- -->\r
+ <!-- contains(td[3],'static') static member (variable or function) -->\r
+ <!-- contains(td[3],'protected') protected member of arbitrary type -->\r
+ <!-- contains(td[3],'private') private member of arbitrary type -->\r
+ <!-- contains(td{3],'friend') friend declaration (function or class) -->\r
+ <!-- contains(td[3],'pure virtual') entry is a pure-virtual member function -->\r
+ <!-- starts-with(td[1]/text(),'(') function entry (member, static or friend) -->\r
+ <!-- contains(td[1], 'typedef') entry is a typdef -->\r
+ <!-- contains(td[1], 'enum ') entry is enum type or enumerator -->\r
+ <!-- contains(td[1], 'enum name') entry is the name of an enum type -->\r
+ <!-- contains(td[1], 'enum value') entry is an enumerator value -->\r
+ <!-- str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]==string(td[1]/a) -->\r
+ <!-- entry is a constructor -->\r
+ <!-- not(starts-with(td[1]/a,'~')) entry is a destructor -->\r
+\r
+ <xsl:variable name="public-static-memfn">\r
+ <xsl:apply-templates select="tr[contains(td[3],'static')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))][starts-with(td[1]/text(),'(')]"/>\r
+ </xsl:variable>\r
+ <xsl:if test="string($public-static-memfn)">\r
+ <tr><td colspan="3"><h2>Static Public Member Functions</h2></td></tr>\r
+ <xsl:copy-of select="$public-static-memfn"/>\r
+ </xsl:if>\r
+\r
+ <xsl:variable name="public-static-var">\r
+ <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][contains(td[3],'static')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(starts-with(td[1]/text(),'('))]"/>\r
+ </xsl:variable>\r
+ <xsl:if test="string($public-static-var)">\r
+ <tr><td colspan="3"><h2>Static Public Attributes</h2></td></tr>\r
+ <xsl:copy-of select="$public-static-var"/>\r
+ </xsl:if>\r
+ \r
+ <xsl:variable name="public-memfn">\r
+ <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][not(contains(td[3],'static'))][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))][starts-with(td[1]/text(),'(')][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))][not(contains(td[3],'pure virtual'))]"/>\r
+ </xsl:variable>\r
+ <xsl:if test="string($public-memfn)">\r
+ <tr><td colspan="3"><h2>Public Member Functions</h2></td></tr>\r
+ <xsl:copy-of select="$public-memfn"/>\r
+ </xsl:if>\r
+\r
+ <xsl:variable name="public-var">\r
+ <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][not(contains(td[1],'enum '))][not(contains(td[3],'static'))][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(starts-with(td[1]/text(),'('))]"/>\r
+ </xsl:variable>\r
+ <xsl:if test="string($public-var)">\r
+ <tr><td colspan="3"><h2>Public Attributes</h2></td></tr>\r
+ <xsl:copy-of select="$public-var"/>\r
+ </xsl:if>\r
+ \r
+ <xsl:variable name="public-enum">\r
+ <xsl:apply-templates select="tr[contains(td[1],'enum value')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))]"/>\r
+ </xsl:variable>\r
+ <xsl:if test="string($public-enum)">\r
+ <tr><td colspan="3"><h2>Public Enumerators</h2></td></tr>\r
+ <xsl:copy-of select="$public-enum"/>\r
+ </xsl:if>\r
+ \r
+ <xsl:variable name="public-type">\r
+ <xsl:apply-templates select="tr[contains(td[1],'typedef') or contains(td[1],'enum name')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))]"/>\r
+ </xsl:variable>\r
+ <xsl:if test="string($public-type)">\r
+ <tr><td colspan="r"><h2>Public Types</h2></td></tr>\r
+ <xsl:copy-of select="$public-type"/>\r
+ </xsl:if>\r
+ \r
+ <xsl:variable name="non-public">\r
+ <xsl:apply-templates select="tr[contains(td[3],'protected') or contains(td[3],'private') or contains(td[3],'friend')][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))][not(contains(td[3],'pure virtual'))]"/>\r
+ </xsl:variable>\r
+ <xsl:if test="string($non-public)">\r
+ <tr><td colspan="3"><h2>Non-Public Members</h2></td></tr>\r
+ <xsl:copy-of select="$non-public"/>\r
+ </xsl:if>\r
\r
</table>\r
</xsl:template>\r
\r
<xsl:template match="table[preceding-sibling::h1[1][contains(text(),'Member List')]]/tr/td[2]/a/text()[contains(.,'<')]">\r
+ <!-- this removes the template args form the second column to make the table more compact -->\r
<xsl:value-of select="substring-before(.,'<')"/>\r
</xsl:template>\r
\r
<xsl:template match="table[preceding-sibling::h1[1][contains(text(),'Member List')]]/tr/td[1]/a/text()[contains(.,'::')]">\r
+ <!-- for some weird reason, some members have a fully qualified name in the first column -->\r
+ <!-- remove the qualification here -->\r
<xsl:value-of select="str:split(.,'::')[position()=last()]"/>\r
</xsl:template>\r
\r
<xsl:template match="li[form]"> \r
</xsl:template>\r
\r
+ <!-- Add CSS class to alphabetical class index table -->\r
<xsl:template match="table[preceding-sibling::*[1][self::div][@class='qindex']]">\r
<xsl:call-template name="add-class">\r
<xsl:with-param name="class">qindextable</xsl:with-param>\r
</xsl:call-template>\r
</xsl:template>\r
- \r
+\r
+ <!-- Add CSS class to special paragraphs -->\r
+\r
<xsl:template match="dl[dt/b/a/text()='Bug:']">\r
<xsl:call-template name="add-class">\r
<xsl:with-param name="class">xref-bug</xsl:with-param>\r
</xsl:call-template>\r
</xsl:template>\r
\r
- <xsl:template match="table[descendant::td[@class='memItemLeft']]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">members</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="a[@href=string(current())]" priority="1">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">literal</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="a[contains(@href,'http://')]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">ext</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="a[not(@href)]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">anchor</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="div[@class='memdoc']/p[1]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">memtitle</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
<xsl:template match="p[starts-with(text(),'Definition at line ')]">\r
<xsl:call-template name="add-class">\r
<xsl:with-param name="class">sourceline</xsl:with-param>\r
</xsl:call-template>\r
</xsl:template>\r
\r
+ <!-- Break the following lists after each komma -->\r
+\r
<xsl:template match="p[starts-with(text(),'Inherited by ')]">\r
<xsl:call-template name="break-comma"/>\r
</xsl:template>\r
<xsl:call-template name="break-comma"/>\r
</xsl:template>\r
\r
+ <!-- Add CSS class to the member overview table of a class documentation -->\r
+ <xsl:template match="table[descendant::td[@class='memItemLeft']]">\r
+ <xsl:call-template name="add-class">\r
+ <xsl:with-param name="class">members</xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:template>\r
+\r
+ <!-- Add CSS class to literal links (links, where link text and href attribute are the same -->\r
+ <xsl:template match="a[@href=string(current())]" priority="1">\r
+ <xsl:call-template name="add-class">\r
+ <xsl:with-param name="class">literal</xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:template>\r
+\r
+ <!-- Add CSS class to external links -->\r
+ <xsl:template match="a[contains(@href,'http://')]">\r
+ <xsl:call-template name="add-class">\r
+ <xsl:with-param name="class">ext</xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:template>\r
+\r
+ <!-- Add CSS class to anchor-only links -->\r
+ <xsl:template match="a[not(@href)]">\r
+ <xsl:call-template name="add-class">\r
+ <xsl:with-param name="class">anchor</xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:template>\r
+\r
+ <!-- Add CSS class to the brief documentation paragraph of the member documentation -->\r
+ <xsl:template match="div[@class='memdoc']/p[1][not(contains(.,'Definition at line'))]">\r
+ <xsl:call-template name="add-class">\r
+ <xsl:with-param name="class">memtitle</xsl:with-param>\r
+ </xsl:call-template>\r
+ </xsl:template>\r
+\r
<!-- Remove external items from the namespace index -->\r
<xsl:template match="div[@id='content2']/table[contains(preceding-sibling::h1/text(),'Namespace Reference')]/tr[td[@class='memItemRight']/a[1][@class='elRef'][@doxygen]]">\r
</xsl:template>\r