csharpfftfsharpintegrationinterpolationlinear-algebramathdifferentiationmatrixnumericsrandomregressionstatisticsmathnet
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
334 lines
12 KiB
334 lines
12 KiB
<?xml version="1.0"?>
|
|
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" >
|
|
|
|
<!-- *** GLOBAL VARIABLES *** -->
|
|
|
|
<xsl:variable name="topic-group" select="/document/reference/topicdata/@group" />
|
|
<xsl:variable name="topic-subgroup" select="/document/reference/topicdata/@subgroup" />
|
|
|
|
<xsl:variable name="api-group" select="/document/reference/apidata/@group" />
|
|
<xsl:variable name="api-subgroup" select="/document/reference/apidata/@subgroup" />
|
|
<xsl:variable name="api-subsubgroup" select="/document/reference/apidata/@subsubgroup" />
|
|
|
|
<!-- *** LOGIC FOR GENERATING ELEMENT LISTS *** -->
|
|
<!-- Seperate logic for namespace lists, type lists, member lists, enumeration member lists, and overload lists -->
|
|
|
|
<!-- *** LOGIC FOR GENERATING LINKS *** -->
|
|
|
|
<xsl:template match="type" mode="link">
|
|
<xsl:param name="qualified" select="false()" />
|
|
<!-- we don't display outer types, because the link will show them -->
|
|
<referenceLink target="{@api}" prefer-overload="false">
|
|
<xsl:choose>
|
|
<xsl:when test="specialization">
|
|
<xsl:attribute name="show-templates">false</xsl:attribute>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:attribute name="show-templates">true</xsl:attribute>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:if test="$qualified">
|
|
<xsl:attribute name="show-container">true</xsl:attribute>
|
|
</xsl:if>
|
|
</referenceLink>
|
|
<xsl:apply-templates select="specialization" mode="link"/>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="specialization" mode="link">
|
|
<span class="languageSpecificText">
|
|
<span class="cs"><</span>
|
|
<span class="vb">
|
|
<xsl:text>(Of </xsl:text>
|
|
</span>
|
|
<span class="cpp"><</span>
|
|
<span class="nu">(</span>
|
|
</span>
|
|
<xsl:for-each select="*">
|
|
<xsl:apply-templates select="." mode="link" />
|
|
<xsl:if test="position() != last()">
|
|
<xsl:text>, </xsl:text>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
<span class="languageSpecificText">
|
|
<span class="cs">></span>
|
|
<span class="vb">)</span>
|
|
<span class="cpp">></span>
|
|
<span class="nu">)</span>
|
|
</span>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="arrayOf" mode="link">
|
|
<xsl:param name="qualified" select="false()" />
|
|
<span class="languageSpecificText">
|
|
<span class="cpp">array<</span>
|
|
</span>
|
|
<xsl:apply-templates mode="link">
|
|
<xsl:with-param name="qualified" select="$qualified" />
|
|
</xsl:apply-templates>
|
|
<span class="languageSpecificText">
|
|
<span class="cpp">
|
|
<xsl:if test="number(@rank) > 1">
|
|
<xsl:text>,</xsl:text>
|
|
<xsl:value-of select="@rank"/>
|
|
</xsl:if>
|
|
<xsl:text>></xsl:text>
|
|
</span>
|
|
<span class="cs">
|
|
<xsl:text>[</xsl:text>
|
|
<xsl:if test="number(@rank) > 1">,</xsl:if>
|
|
<xsl:text>]</xsl:text>
|
|
</span>
|
|
<span class="vb">
|
|
<xsl:text>(</xsl:text>
|
|
<xsl:if test="number(@rank) > 1">,</xsl:if>
|
|
<xsl:text>)</xsl:text>
|
|
</span>
|
|
<span class="nu">
|
|
<xsl:text>[</xsl:text>
|
|
<xsl:if test="number(@rank) > 1">,</xsl:if>
|
|
<xsl:text>]</xsl:text>
|
|
</span>
|
|
</span>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="pointerTo" mode="link">
|
|
<xsl:param name="qualified" select="false()" />
|
|
<xsl:apply-templates mode="link">
|
|
<xsl:with-param name="qualified" select="$qualified" />
|
|
</xsl:apply-templates>
|
|
<xsl:text>*</xsl:text>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="referenceTo" mode="link">
|
|
<xsl:param name="qualified" select="false()" />
|
|
<xsl:apply-templates mode="link">
|
|
<xsl:with-param name="qualified" select="$qualified" />
|
|
</xsl:apply-templates>
|
|
<span class="cpp">%</span>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="template" mode="link">
|
|
<xsl:choose>
|
|
<xsl:when test="@api">
|
|
<referenceLink target="{@api}">
|
|
<span class="typeparam"><xsl:value-of select="@name" /></span>
|
|
</referenceLink>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<span class="typeparam"><xsl:value-of select="@name" /></span>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="member" mode="link">
|
|
<xsl:param name="qualified" select="true()" />
|
|
<xsl:choose>
|
|
<xsl:when test="@display-api">
|
|
<referenceLink target="{@api}" display-target="{@display-api}">
|
|
<xsl:if test="$qualified">
|
|
<xsl:attribute name="show-container">true</xsl:attribute>
|
|
</xsl:if>
|
|
</referenceLink>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<referenceLink target="{@api}">
|
|
<xsl:if test="$qualified">
|
|
<xsl:attribute name="show-container">true</xsl:attribute>
|
|
</xsl:if>
|
|
</referenceLink>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<!-- *** LOGIC FOR GENERATING TITLES *** -->
|
|
|
|
<!-- when positioned on a parameterized api, produces a (plain) comma-seperated list of parameter types -->
|
|
<xsl:template name="parameterTypesPlain">
|
|
<xsl:if test="parameters/parameter">
|
|
<xsl:text>(</xsl:text>
|
|
<xsl:for-each select="parameters/parameter">
|
|
<xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template" mode="plain" />
|
|
<xsl:if test="position() != last()">
|
|
<xsl:text>, </xsl:text>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
<xsl:text>)</xsl:text>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<!-- when position on a type api, produces a (plain) name; outer types are indicated by dot-seperators; -->
|
|
<!-- generic types are indicated by a keyword, because we can't show templates in a language-independent way -->
|
|
<xsl:template name="typeNamePlain">
|
|
<xsl:if test="type|(containers/type)">
|
|
<xsl:apply-templates select="type|(containers/type)" mode="plain" />
|
|
<xsl:text>.</xsl:text>
|
|
</xsl:if>
|
|
<xsl:value-of select="apidata/@name" />
|
|
<xsl:choose>
|
|
<xsl:when test="specialization">
|
|
<xsl:apply-templates select="specialization" mode="plain" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:apply-templates select="templates" mode="plain" />
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="type" mode="plain">
|
|
<xsl:call-template name="typeNamePlain" />
|
|
</xsl:template>
|
|
|
|
<xsl:template match="specialization|templates" mode="plain">
|
|
<xsl:text>(</xsl:text>
|
|
<xsl:for-each select="*">
|
|
<xsl:apply-templates select="." mode="plain" />
|
|
<xsl:if test="position() != last()">
|
|
<xsl:text>, </xsl:text>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
<xsl:text>)</xsl:text>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="arrayOf" mode="plain">
|
|
<xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="plain"/>
|
|
<xsl:text>[</xsl:text>
|
|
<xsl:if test="number(@rank) > 1">,</xsl:if>
|
|
<xsl:text>]</xsl:text>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="pointerTo" mode="plain">
|
|
<xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="plain"/>
|
|
<xsl:text>*</xsl:text>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="referenceTo" mode="plain">
|
|
<xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="plain"/>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="template" mode="plain">
|
|
<xsl:value-of select="@name" />
|
|
</xsl:template>
|
|
|
|
<!-- when positioned on a generic api, produces a (decorated) comma-seperated list of template names -->
|
|
<xsl:template name="parameterTypesDecorated">
|
|
<xsl:if test="parameters/parameter">
|
|
<xsl:text>(</xsl:text>
|
|
<xsl:for-each select="parameters/parameter">
|
|
<xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template" mode="decorated"/>
|
|
<xsl:if test="position() != last()">
|
|
<xsl:text>, </xsl:text>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
<xsl:text>)</xsl:text>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
<!-- when position on a type api, produces a (decorated) name, including outer types and templates -->
|
|
<xsl:template name="typeNameDecorated">
|
|
<xsl:if test="type|(containers/type)">
|
|
<xsl:apply-templates select="type|(containers/type)" mode="decorated" />
|
|
<span class="languageSpecificText">
|
|
<span class="cs">.</span>
|
|
<span class="vb">.</span>
|
|
<span class="cpp">::</span>
|
|
<span class="nu">.</span>
|
|
</span>
|
|
</xsl:if>
|
|
<xsl:value-of select="apidata/@name" />
|
|
<xsl:choose>
|
|
<xsl:when test="specialization">
|
|
<xsl:apply-templates select="specialization" mode="decorated" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:apply-templates select="templates" mode="decorated" />
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="type" mode="decorated">
|
|
<xsl:call-template name="typeNameDecorated" />
|
|
</xsl:template>
|
|
|
|
<xsl:template match="specialization|templates" mode="decorated">
|
|
<span class="languageSpecificText">
|
|
<span class="cs"><</span>
|
|
<span class="vb">
|
|
<xsl:text>(Of </xsl:text>
|
|
</span>
|
|
<span class="cpp"><</span>
|
|
<span class="nu">(</span>
|
|
</span>
|
|
<xsl:for-each select="*">
|
|
<xsl:apply-templates select="." mode="decorated" />
|
|
<xsl:if test="position() != last()">
|
|
<xsl:text>, </xsl:text>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
<span class="languageSpecificText">
|
|
<span class="cs">></span>
|
|
<span class="vb">)</span>
|
|
<span class="cpp">></span>
|
|
<span class="nu">)</span>
|
|
</span>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="arrayOf" mode="decorated">
|
|
<span class="languageSpecificText">
|
|
<span class="cpp">array<</span>
|
|
</span>
|
|
<xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="decorated" />
|
|
<span class="languageSpecificText">
|
|
<span class="cpp">
|
|
<xsl:if test="number(@rank) > 1">
|
|
<xsl:text>,</xsl:text>
|
|
<xsl:value-of select="@rank"/>
|
|
</xsl:if>
|
|
<xsl:text>></xsl:text>
|
|
</span>
|
|
<span class="cs">
|
|
<xsl:text>[</xsl:text>
|
|
<xsl:if test="number(@rank) > 1">,</xsl:if>
|
|
<xsl:text>]</xsl:text>
|
|
</span>
|
|
<span class="vb">
|
|
<xsl:text>(</xsl:text>
|
|
<xsl:if test="number(@rank) > 1">,</xsl:if>
|
|
<xsl:text>)</xsl:text>
|
|
</span>
|
|
<span class="nu">
|
|
<xsl:text>[</xsl:text>
|
|
<xsl:if test="number(@rank) > 1">,</xsl:if>
|
|
<xsl:text>]</xsl:text>
|
|
</span>
|
|
</span>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="pointerTo" mode="decorated">
|
|
<xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="decorated"/>
|
|
<xsl:text>*</xsl:text>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="referenceTo" mode="decorated">
|
|
<xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="decorated"/>
|
|
<span class="cpp">%</span>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="template" mode="decorated">
|
|
<span class="typeparameter"><xsl:value-of select="@name" /></span>
|
|
</xsl:template>
|
|
|
|
<!-- when positioned on a parameterized api, produces a (plain) comma-seperated list of parameter names-->
|
|
<xsl:template name="parameterNames">
|
|
<xsl:if test="parameters/parameter">
|
|
<xsl:text>(</xsl:text>
|
|
<xsl:for-each select="parameters/parameter">
|
|
<xsl:value-of select="@name" />
|
|
<xsl:if test="position() != last()">
|
|
<xsl:text>, </xsl:text>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
<xsl:text>)</xsl:text>
|
|
</xsl:if>
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|
|
|