summaryrefslogtreecommitdiffstats
path: root/tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl')
-rw-r--r--tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl1688
1 files changed, 844 insertions, 844 deletions
diff --git a/tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl b/tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl
index 57112f8..132a7da 100644
--- a/tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl
+++ b/tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl
@@ -1,845 +1,845 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output indent="yes" />
-
- <xsl:key name="index" match="/reflection/apis/api" use="@id" />
-
- <xsl:template match="/">
- <cDocMLDocument>
- <content>
- <assemblies>
- <xsl:apply-templates select="/reflection/assemblies/assembly" />
- </assemblies>
- <namespaces>
- <xsl:apply-templates select="/reflection/apis/api[apidata/@group='namespace']" />
- </namespaces>
- </content>
- <idMap>
- <xsl:for-each select="/reflection/apis/api[apidata/@group='namespace']">
- <entity namespaceName="{apidata/@name}" typeName="" memberName="" commentId="{@id}" textId="" />
- </xsl:for-each>
- <xsl:for-each select="/reflection/apis/api[apidata/@group='type']">
- <entity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{apidata/@name}" memberName="" commentId="{@id}" textId="" />
- </xsl:for-each>
- <xsl:for-each select="/reflection/apis/api[apidata/@group='member']">
- <entity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{key('index',containers/type/@api)/apidata/@name}" memberName="{apidata/@name}" commentId="{@id}" textId="" />
- </xsl:for-each>
- </idMap>
- <rMap>
- <type namespace="System" name="Object" commentId="T:Sytem.Object">
- <xsl:attribute name="external">
- <xsl:choose>
- <xsl:when test="/reflection/apis/api[@id='T:System.Object']">false</xsl:when>
- <xsl:otherwise>true</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <type namespace="System" name="ValueType" commentId="T:System.ValueType">
- <xsl:attribute name="external">
- <xsl:choose>
- <xsl:when test="/reflection/apis/api[@id='T:System.ValueType']">false</xsl:when>
- <xsl:otherwise>true</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <xsl:for-each select="/reflection/apis/api[apidata/@subgroup='structure']">
- <type namespace="{key('index',containers/namespace/@api)/apidata/@name}" name="{apidata/@name}" commentId="{@id}" external="false" />
- </xsl:for-each>
- </type>
- <xsl:for-each select="/reflection/apis/api[apidata/@subgroup='class']">
- <xsl:if test="not(@id='T:System.Object' or @id='T:System.ValueType')">
- <type namespace="{key('index',containers/namespace/@api)/apidata/@name}" name="{apidata/@name}" commentId="{@id}" external="false" />
- </xsl:if>
- </xsl:for-each>
- </type>
- </rMap>
-
- </cDocMLDocument>
- </xsl:template>
-
- <!-- utility templates -->
-
- <xsl:template name="writeIdentity">
- <xsl:param name="namespaceName" />
- <xsl:param name="typeName" />
- <xsl:param name="memberName" />
- <xsl:param name="commentId" select="@id|@api" />
- <xsl:param name="textId" />
- <identity namespaceName="{$namespaceName}" typeName="{$typeName}" memberName="{$memberName}" commentId="{$commentId}" textId="{$textId}" />
- </xsl:template>
-
- <xsl:template name="writeTypeIdentity">
- <xsl:call-template name="writeIdentity">
- <xsl:with-param name="namespaceName" select="key('index',containers/namespace/@api)/apidata/@name" />
- <xsl:with-param name="typeName" select="apidata/@name" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="writeMemberIdentity">
- <xsl:call-template name="writeIdentity">
- <xsl:with-param name="namespaceName" select="key('index',containers/namespace/@api)/apidata/@name" />
- <xsl:with-param name="typeName" select="key('index',containers/type/@api)/apidata/@name" />
- <xsl:with-param name="memberName" select="apidata/@name" />
- </xsl:call-template>
- </xsl:template>
-
-
- <xsl:template name="writeSource">
- <xsl:param name="assembly" select="containers/library/@assembly" />
- <xsl:param name="module" select="containers/library/@module" />
- <source assembly="{$assembly}" module="{$module}" />
- </xsl:template>
-
- <xsl:template name="writeTypeAttributes">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="classLayout" select="string('AutoLayout')" />
- <xsl:param name="abstract">
- <xsl:choose>
- <xsl:when test="typedata/@abstract">
- <xsl:value-of select="typedata/@abstract" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="sealed">
- <xsl:choose>
- <xsl:when test="typedata/@sealed">
- <xsl:value-of select="typedata/@sealed" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="specialName" select="string('false')" />
- <attributes visibility="{$visibility}" classLayout="{$classLayout}" abstract="{$abstract}" sealed="{$sealed}" specialName="{$specialName}" import="false" stringFormat="Ansi" beforeFieldInitialization="false" runtimeSpecialName="false" />
- </xsl:template>
-
- <xsl:template name="writeMemberAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName" select="string('false')" />
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <xsl:param name="hasDefaultValue" select="string('false')" />
- <xsl:param name="hasMarshallingInformation" select="string('false')" />
- <xsl:param name="hasRelativeVirtualAddress" select="string('false')" />
- <xsl:param name="isInitializedOnly" select="fielddata/@initonly" />
- <xsl:param name="isLiteral" select="fielddata/@literal" />
- <xsl:param name="isNotSerialized" select="string('false')" />
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" hasDefaultValue="{$hasDefaultValue}" hasMarshallingInformation="{$hasMarshallingInformation}" hasRelativeVirtualAddress="{$hasRelativeVirtualAddress}" isInitializedOnly="{$isInitializedOnly}" isLiteral="{$isLiteral}" isNotSerialized="{$isNotSerialized}" isPInvokeImplementation="false" />
- </xsl:template>
-
- <xsl:template name="writeMethodAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName">
- <xsl:choose>
- <xsl:when test="memberdata/@special">
- <xsl:value-of select="memberdata/@special" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <xsl:param name="abstract">
- <xsl:choose>
- <xsl:when test="proceduredata/@abstract">
- <xsl:value-of select="proceduredata/@abstract" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="virtual">
- <xsl:choose>
- <xsl:when test="proceduredata/@virtual">
- <xsl:value-of select="proceduredata/@virtual" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="final">
- <xsl:choose>
- <xsl:when test="proceduredata/@final">
- <xsl:value-of select="proceduredata/@final" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="vtable" select="string('reuseSlot')" />
- <xsl:param name="callingConvention" select="string('HasThis')" />
- <xsl:param name="pInvokeImplementation" select="string('false')" />
- <xsl:param name="hideBySignature" select="string('true')" />
- <xsl:param name="hasSecurity" select="string('false')" />
- <xsl:param name="requiresSecurityObject" select="string('false')" />
- <xsl:param name="isUnmanagedExport" select="string('false')" />
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" vtable="{$vtable}" callingConvention="{$callingConvention}" pInvokeImplementation="{$pInvokeImplementation}" hideBySignature="{$hideBySignature}" hasSecurity="{$hasSecurity}" requiresSecurityObject="{$requiresSecurityObject}" isUnmanagedExport="{$isUnmanagedExport}" />
- </xsl:template>
-
- <xsl:template name="writePropertyAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName">
- <xsl:choose>
- <xsl:when test="memberdata/@special">
- <xsl:value-of select="memberdata/@special" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <xsl:param name="abstract">
- <xsl:choose>
- <xsl:when test="proceduredata/@abstract">
- <xsl:value-of select="proceduredata/@abstract" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="virtual">
- <xsl:choose>
- <xsl:when test="proceduredata/@virtual">
- <xsl:value-of select="proceduredata/@virtual" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="final">
- <xsl:choose>
- <xsl:when test="proceduredata/@final">
- <xsl:value-of select="proceduredata/@final" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="readable" select="propertydata/@get" />
- <xsl:param name="writeable" select="string('false')" />
- <xsl:param name="hasDefaultValue" select="string('false')" />
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" readable="{$readable}" writeable="{$writeable}" hasDefaultValue="{$hasDefaultValue}" />
- </xsl:template>
-
- <xsl:template name="writeEventAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName">
- <xsl:choose>
- <xsl:when test="memberdata/@special">
- <xsl:value-of select="memberdata/@special" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <xsl:param name="abstract">
- <xsl:choose>
- <xsl:when test="proceduredata/@abstract">
- <xsl:value-of select="proceduredata/@abstract" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="virtual">
- <xsl:choose>
- <xsl:when test="proceduredata/@virtual">
- <xsl:value-of select="proceduredata/@virtual" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="final">
- <xsl:choose>
- <xsl:when test="proceduredata/@final">
- <xsl:value-of select="proceduredata/@final" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" />
- </xsl:template>
-
- <xsl:template name="writeConstructorAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName">
- <xsl:choose>
- <xsl:when test="memberdata/@special">
- <xsl:value-of select="memberdata/@special" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" />
- </xsl:template>
-
- <xsl:template name="writeMemberInheritance">
- <xsl:choose>
- <xsl:when test="overrides">
- <inheritance doesOverride="true" isInherited="false" doesHide="false">
- <baseMember name="{key('index',overrides/member/@api)/apidata/@name}" commentId="{overrides/member/@api}">
- <type name="{key('index',overrides/member/type/@api)/apidata/@name}" namespace="{key('index',key('index',overrides/member/type/@api)/containers/namespace/@api)/apidata/@name}" commentId="{overrides/member/type/@api}" />
- </baseMember>
- </inheritance>
- </xsl:when>
- <xsl:otherwise>
- <inheritance doesOverride="false" isInherited="false" doesHide="false">
- <baseMember name="{apidata/@name}" commentId="{@id}">
- <type name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" />
- </baseMember>
- </inheritance>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="writeImplementedInterfaces">
- <implementedInterfaces>
- <xsl:for-each select="implements/type">
- <interface name="{key('index',@api)/apidata/@name}" namespace="{key('index',key('index',@api)/containers/namespace/@api)/apidata/@name}" commentId="{@api}" >
- <xsl:if test="specialization">
- <parameters>
- <xsl:for-each select="specialization/*">
- <parameter pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <xsl:apply-templates select="(descendant-or-self::type | descendant-or-self::template)[1]" />
- </parameter>
- </xsl:for-each>
- </parameters>
- </xsl:if>
- </interface>
- </xsl:for-each>
- </implementedInterfaces>
- </xsl:template>
-
- <xsl:template name="writeMembers">
- <xsl:param name="type" select="@id" />
- <members>
-<!--
- <fields />
- <constructors />
- <methods />
- <properties />
- <events />
--->
-
- <fields>
- <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='field' and containers/type/@api=$type]" />
- </fields>
- <constructors>
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='constructor']" />
- </constructors>
- <methods>
- <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='method' and containers/type/@api=$type]" />
- </methods>
- <properties>
- <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='property' and containers/type/@api=$type]" />
- </properties>
- <events>
- <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='event' and containers/type/@api=$type]" />
- </events>
-
- </members>
- </xsl:template>
-
- <xsl:template name="writeCustomAttributes">
- <customAttributes />
- </xsl:template>
-
- <xsl:template name="writeParameters">
- <parameters>
- <xsl:for-each select="parameters/parameter">
- <parameter name="{@name}" in="false" out="false" optional="false" retval="false" params="false">
- <parameterTypeReference pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <xsl:apply-templates select="(.//type | .//template)[1]" />
- </parameterTypeReference>
- </parameter>
- </xsl:for-each>
- </parameters>
- </xsl:template>
-
- <xsl:template name="writeReturnValue">
- <returnValue pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <xsl:choose>
- <xsl:when test="returns">
- <xsl:apply-templates select="(returns//type | returns//template)[1]" />
- </xsl:when>
- <xsl:otherwise>
- <typeReference name="Void" namespace="System" commentId="T:System.Void" />
- <customModifiers />
- <arrayDefinitions />
- </xsl:otherwise>
- </xsl:choose>
- </returnValue>
- </xsl:template>
-
- <xsl:template name="writeValue">
- <value pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <xsl:choose>
- <xsl:when test="returns">
- <xsl:apply-templates select="(returns//type | returns//template)[1]" />
- </xsl:when>
- <xsl:otherwise>
- <typeReference name="Void" namespace="System" commentId="T:System.Void" />
- <customModifiers />
- <arrayDefinitions />
- </xsl:otherwise>
- </xsl:choose>
- </value>
- </xsl:template>
-
- <xsl:template match="type">
- <typeReference name="" namespace="" commentId="{@api}" />
- <customModifiers />
- <arrayDefinitions />
- </xsl:template>
-
- <xsl:template match="template">
- <typeReference name="{@name}" index="{@index}" target="Type" />
- <customModifiers />
- <arrayDefinitions />
- </xsl:template>
-
- <xsl:template match="templates">
- <genericTypeParameters>
- <xsl:for-each select="template">
- <genericTypeParameter name="{@name}">
- <constraints />
- </genericTypeParameter>
- </xsl:for-each>
- </genericTypeParameters>
- </xsl:template>
-
- <!-- api entities -->
-
- <xsl:template match="assembly">
- <assembly>
- <attributes name="{@name}" hashAlgorithm="SHA" culture="" sideBySideCompatible="true" retargetable="false" enableJitCompileTracking="false" enableJitCompileOptimizer="false" />
- <version majorVersion="2" minorVersion="0" buildNumber="0" revisionNumber="0" />
- <operatingSystems />
- <processors />
- <xsl:call-template name="writeCustomAttributes" />
- <modules />
- <assemblyReferences />
- <files />
- <manifestResources />
- </assembly>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='namespace']">
- <namespace>
- <frameworks />
- <xsl:call-template name="writeIdentity">
- <xsl:with-param name="namespaceName" select="apidata/@name" />
- </xsl:call-template>
- <xsl:call-template name="writeSource" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='enumeration']" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='structure']" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='delegate']" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='interface']" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='class']" />
- </namespace>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='class']">
- <class>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeTypeAttributes" />
- <inheritance>
- <baseType name="Object" namespace="System" commentId="T:System.Object" />
- <xsl:call-template name="writeImplementedInterfaces" />
- </inheritance>
- <xsl:apply-templates select="templates" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers">
- <xsl:with-param name="type" select="@id" />
- </xsl:call-template>
- <PermissionSetAttributes />
- </class>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='structure']">
- <structure>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="typeIdentity" />
- <xsl:call-template name="writeTypeAttributes">
- <xsl:with-param name="classLayout">SequentialLayout</xsl:with-param>
- </xsl:call-template>
- <inheritance>
- <baseType name="ValueType" namespace="System" commentId="T:System.ValueType" />
- <xsl:call-template name="writeImplementedInterfaces" />
- </inheritance>
- <xsl:apply-templates select="templates" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers" />
- </structure>
- </xsl:template>
-
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='enumeration']">
- <enumeration>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeTypeAttributes" />
- <inheritance>
- <baseType name="Enum" namespace="System" commentId="T:System.Enum" />
- <implementedInterfaces />
- </inheritance>
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers" />
- </enumeration>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='delegate']">
- <delegate>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeTypeAttributes" />
- <inheritance>
- <baseType name="MulticastDelegate" namespace="System" commentId="T:System.MulticastDelegate" />
- <implementedInterfaces />
- </inheritance>
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers" />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- </delegate>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='interface']">
- <interface>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeTypeAttributes" />
- <inheritance>
- <baseType name="" namespace="" commentId="" />
- <implementedInterfaces />
- </inheritance>
- <xsl:apply-templates select="templates" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers" />
- </interface>
- </xsl:template>
-
-
- <!-- member entries -->
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='field']">
- <field>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:variable name="type" select="key('index',containers/type/@api)" />
- <inheritance doesOverride="false" isInherited="false" doesHide="false">
- <baseMember name="{apidata/@name}" commentId="{@id}">
- <type name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" />
- </baseMember>
- </inheritance>
-
- <xsl:call-template name="writeMemberAccess" />
- <value pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <typeReference name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" />
- <customModifiers />
- <arrayDefinitions />
- </value>
- </field>
- </xsl:template>
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='method']">
- <method>
- <xsl:attribute name="isOverload">
- <xsl:choose>
- <xsl:when test="memberdata/@overload='true'">
- <xsl:text>true</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <xsl:attribute name="hasVarArgs">
- <xsl:text>false</xsl:text>
- </xsl:attribute>
- <xsl:attribute name="isExplicitInterfaceImpl">
- <xsl:text>false</xsl:text>
- </xsl:attribute>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeMethodAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- <explicitImplRefs />
- <comments />
- </method>
- </xsl:template>
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='property']">
- <property>
- <xsl:attribute name="isOverload">
- <xsl:choose>
- <xsl:when test="memberdata/@overload='true'">
- <xsl:text>true</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:if test="propertydata/@get='true'">
- <propertyGet>
- <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false">
- <frameworks />
- <xsl:call-template name="writeMemberIdentity">
- <!-- <xsl:with-param name="memberName" select="concat('get_',apidata/@name)" /> -->
- </xsl:call-template>
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeMethodAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- <explicitImplRefs />
- <comments />
- </method>
- </propertyGet>
- </xsl:if>
- <xsl:if test="propertydata/@set='true'">
-
- </xsl:if>
- <xsl:call-template name="writePropertyAccess" />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeValue" />
- </property>
- </xsl:template>
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='event']">
- <event>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMemberInheritance" />
- <eventAdd>
- <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false">
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeMethodAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- <explicitImplRefs />
- <comments />
- </method>
- </eventAdd>
- <eventRemove>
- <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false">
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeMethodAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- <explicitImplRefs />
- <comments />
- </method>
- </eventRemove>
- <xsl:call-template name="writeEventAccess" />
- <eventHandler name="" namespace="" commentId="{eventhandler/type/@api}" />
- </event>
- </xsl:template>
-
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='constructor']">
- <constructor>
- <xsl:attribute name="isOverload">
- <xsl:choose>
- <xsl:when test="false()"><xsl:text>true</xsl:text></xsl:when>
- <xsl:otherwise><xsl:text>false</xsl:text></xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeConstructorAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <comments />
- </constructor>
- </xsl:template>
-
- <xsl:template match="attribute">
- <CustomAttribute>
- <TypeRef name="{key('index',type/@api)/apidata/@name}" namespace="{key('index',key('index',type/@api)/containers/containingNamespace/@api)/apidata/@name}" commendId="{type/@api}" />
- <CustomAttributeNamedValues />
- <CustomattributeConstructor />
- </CustomAttribute>
- </xsl:template>
-
- <xsl:template name="typeIdentity">
- <identity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{apidata/@name}" memberName="" commentId="{@id}" textId="" />
- </xsl:template>
-
- <xsl:template name="memberIdentity">
- <identity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{key('index',containers/type/@api)/apidata/@name}" memberName="{apidata/@name}" commentId="{@id}" textId="" />
- </xsl:template>
-
- <xsl:template name="source">
- <source assembly="{containers/library/@assembly}" module="{containers/library/@module}.dll" />
- </xsl:template>
-
- <xsl:template match="templates">
- <genericTypeParameters>
- <xsl:for-each select="template">
- <genericTypeParameter name="{@name}">
- <constraints />
- </genericTypeParameter>
- </xsl:for-each>
- </genericTypeParameters>
- </xsl:template>
-
- <xsl:template name="typeReference">
- <xsl:attribute name="pointerIndirections">
- <xsl:value-of select="count(pointerTo)" />
- </xsl:attribute>
- <xsl:attribute name="byRef">
- <xsl:value-of select="type/@ref" />
- </xsl:attribute>
- <xsl:attribute name="pinned">
- <xsl:text>false</xsl:text>
- </xsl:attribute>
- <typeReference name="{key('index',.//type[1]/@api)/apidata/@name}" namespace="{key('index',key('index',.//type[1]/@api)/containers/namespace/@api)/apidata/@name}" commendId="{.//type[1]/@api}" />
- <customModifiers />
- <arrayDefinitions>
- <xsl:if test="arrayOf">
- <xsl:attribute name="rank">
- <xsl:value-of select="arrayOf/@rank" />
- </xsl:attribute>
- <dimensions />
- </xsl:if>
- </arrayDefinitions>
- </xsl:template>
-
- <xsl:template name="visibility">
- <xsl:param name="visibility" />
- <xsl:attribute name="visibility">
- <xsl:choose>
- <xsl:when test="$visibility='public'">
- <xsl:text>Public</xsl:text>
- </xsl:when>
- <xsl:when test="$visibility='family'">
- <xsl:text>Family</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:attribute>
- </xsl:template>
-
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
+
+ <xsl:output indent="yes" />
+
+ <xsl:key name="index" match="/reflection/apis/api" use="@id" />
+
+ <xsl:template match="/">
+ <cDocMLDocument>
+ <content>
+ <assemblies>
+ <xsl:apply-templates select="/reflection/assemblies/assembly" />
+ </assemblies>
+ <namespaces>
+ <xsl:apply-templates select="/reflection/apis/api[apidata/@group='namespace']" />
+ </namespaces>
+ </content>
+ <idMap>
+ <xsl:for-each select="/reflection/apis/api[apidata/@group='namespace']">
+ <entity namespaceName="{apidata/@name}" typeName="" memberName="" commentId="{@id}" textId="" />
+ </xsl:for-each>
+ <xsl:for-each select="/reflection/apis/api[apidata/@group='type']">
+ <entity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{apidata/@name}" memberName="" commentId="{@id}" textId="" />
+ </xsl:for-each>
+ <xsl:for-each select="/reflection/apis/api[apidata/@group='member']">
+ <entity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{key('index',containers/type/@api)/apidata/@name}" memberName="{apidata/@name}" commentId="{@id}" textId="" />
+ </xsl:for-each>
+ </idMap>
+ <rMap>
+ <type namespace="System" name="Object" commentId="T:Sytem.Object">
+ <xsl:attribute name="external">
+ <xsl:choose>
+ <xsl:when test="/reflection/apis/api[@id='T:System.Object']">false</xsl:when>
+ <xsl:otherwise>true</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <type namespace="System" name="ValueType" commentId="T:System.ValueType">
+ <xsl:attribute name="external">
+ <xsl:choose>
+ <xsl:when test="/reflection/apis/api[@id='T:System.ValueType']">false</xsl:when>
+ <xsl:otherwise>true</xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:for-each select="/reflection/apis/api[apidata/@subgroup='structure']">
+ <type namespace="{key('index',containers/namespace/@api)/apidata/@name}" name="{apidata/@name}" commentId="{@id}" external="false" />
+ </xsl:for-each>
+ </type>
+ <xsl:for-each select="/reflection/apis/api[apidata/@subgroup='class']">
+ <xsl:if test="not(@id='T:System.Object' or @id='T:System.ValueType')">
+ <type namespace="{key('index',containers/namespace/@api)/apidata/@name}" name="{apidata/@name}" commentId="{@id}" external="false" />
+ </xsl:if>
+ </xsl:for-each>
+ </type>
+ </rMap>
+
+ </cDocMLDocument>
+ </xsl:template>
+
+ <!-- utility templates -->
+
+ <xsl:template name="writeIdentity">
+ <xsl:param name="namespaceName" />
+ <xsl:param name="typeName" />
+ <xsl:param name="memberName" />
+ <xsl:param name="commentId" select="@id|@api" />
+ <xsl:param name="textId" />
+ <identity namespaceName="{$namespaceName}" typeName="{$typeName}" memberName="{$memberName}" commentId="{$commentId}" textId="{$textId}" />
+ </xsl:template>
+
+ <xsl:template name="writeTypeIdentity">
+ <xsl:call-template name="writeIdentity">
+ <xsl:with-param name="namespaceName" select="key('index',containers/namespace/@api)/apidata/@name" />
+ <xsl:with-param name="typeName" select="apidata/@name" />
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="writeMemberIdentity">
+ <xsl:call-template name="writeIdentity">
+ <xsl:with-param name="namespaceName" select="key('index',containers/namespace/@api)/apidata/@name" />
+ <xsl:with-param name="typeName" select="key('index',containers/type/@api)/apidata/@name" />
+ <xsl:with-param name="memberName" select="apidata/@name" />
+ </xsl:call-template>
+ </xsl:template>
+
+
+ <xsl:template name="writeSource">
+ <xsl:param name="assembly" select="containers/library/@assembly" />
+ <xsl:param name="module" select="containers/library/@module" />
+ <source assembly="{$assembly}" module="{$module}" />
+ </xsl:template>
+
+ <xsl:template name="writeTypeAttributes">
+ <xsl:param name="visibility" select="string('Public')" />
+ <xsl:param name="classLayout" select="string('AutoLayout')" />
+ <xsl:param name="abstract">
+ <xsl:choose>
+ <xsl:when test="typedata/@abstract">
+ <xsl:value-of select="typedata/@abstract" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="sealed">
+ <xsl:choose>
+ <xsl:when test="typedata/@sealed">
+ <xsl:value-of select="typedata/@sealed" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="specialName" select="string('false')" />
+ <attributes visibility="{$visibility}" classLayout="{$classLayout}" abstract="{$abstract}" sealed="{$sealed}" specialName="{$specialName}" import="false" stringFormat="Ansi" beforeFieldInitialization="false" runtimeSpecialName="false" />
+ </xsl:template>
+
+ <xsl:template name="writeMemberAccess">
+ <xsl:param name="visibility" select="string('Public')" />
+ <xsl:param name="static">
+ <xsl:choose>
+ <xsl:when test="memberdata/@static">
+ <xsl:value-of select="memberdata/@static" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="declaringType" select="containers/type/@api" />
+ <xsl:param name="specialName" select="string('false')" />
+ <xsl:param name="runtimeSpecialName" select="string('false')"/>
+ <xsl:param name="hasDefaultValue" select="string('false')" />
+ <xsl:param name="hasMarshallingInformation" select="string('false')" />
+ <xsl:param name="hasRelativeVirtualAddress" select="string('false')" />
+ <xsl:param name="isInitializedOnly" select="fielddata/@initonly" />
+ <xsl:param name="isLiteral" select="fielddata/@literal" />
+ <xsl:param name="isNotSerialized" select="string('false')" />
+ <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" hasDefaultValue="{$hasDefaultValue}" hasMarshallingInformation="{$hasMarshallingInformation}" hasRelativeVirtualAddress="{$hasRelativeVirtualAddress}" isInitializedOnly="{$isInitializedOnly}" isLiteral="{$isLiteral}" isNotSerialized="{$isNotSerialized}" isPInvokeImplementation="false" />
+ </xsl:template>
+
+ <xsl:template name="writeMethodAccess">
+ <xsl:param name="visibility" select="string('Public')" />
+ <xsl:param name="static">
+ <xsl:choose>
+ <xsl:when test="memberdata/@static">
+ <xsl:value-of select="memberdata/@static" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="declaringType" select="containers/type/@api" />
+ <xsl:param name="specialName">
+ <xsl:choose>
+ <xsl:when test="memberdata/@special">
+ <xsl:value-of select="memberdata/@special" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="runtimeSpecialName" select="string('false')"/>
+ <xsl:param name="abstract">
+ <xsl:choose>
+ <xsl:when test="proceduredata/@abstract">
+ <xsl:value-of select="proceduredata/@abstract" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="virtual">
+ <xsl:choose>
+ <xsl:when test="proceduredata/@virtual">
+ <xsl:value-of select="proceduredata/@virtual" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="final">
+ <xsl:choose>
+ <xsl:when test="proceduredata/@final">
+ <xsl:value-of select="proceduredata/@final" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="vtable" select="string('reuseSlot')" />
+ <xsl:param name="callingConvention" select="string('HasThis')" />
+ <xsl:param name="pInvokeImplementation" select="string('false')" />
+ <xsl:param name="hideBySignature" select="string('true')" />
+ <xsl:param name="hasSecurity" select="string('false')" />
+ <xsl:param name="requiresSecurityObject" select="string('false')" />
+ <xsl:param name="isUnmanagedExport" select="string('false')" />
+ <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" vtable="{$vtable}" callingConvention="{$callingConvention}" pInvokeImplementation="{$pInvokeImplementation}" hideBySignature="{$hideBySignature}" hasSecurity="{$hasSecurity}" requiresSecurityObject="{$requiresSecurityObject}" isUnmanagedExport="{$isUnmanagedExport}" />
+ </xsl:template>
+
+ <xsl:template name="writePropertyAccess">
+ <xsl:param name="visibility" select="string('Public')" />
+ <xsl:param name="static">
+ <xsl:choose>
+ <xsl:when test="memberdata/@static">
+ <xsl:value-of select="memberdata/@static" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="declaringType" select="containers/type/@api" />
+ <xsl:param name="specialName">
+ <xsl:choose>
+ <xsl:when test="memberdata/@special">
+ <xsl:value-of select="memberdata/@special" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="runtimeSpecialName" select="string('false')"/>
+ <xsl:param name="abstract">
+ <xsl:choose>
+ <xsl:when test="proceduredata/@abstract">
+ <xsl:value-of select="proceduredata/@abstract" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="virtual">
+ <xsl:choose>
+ <xsl:when test="proceduredata/@virtual">
+ <xsl:value-of select="proceduredata/@virtual" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="final">
+ <xsl:choose>
+ <xsl:when test="proceduredata/@final">
+ <xsl:value-of select="proceduredata/@final" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="readable" select="propertydata/@get" />
+ <xsl:param name="writeable" select="string('false')" />
+ <xsl:param name="hasDefaultValue" select="string('false')" />
+ <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" readable="{$readable}" writeable="{$writeable}" hasDefaultValue="{$hasDefaultValue}" />
+ </xsl:template>
+
+ <xsl:template name="writeEventAccess">
+ <xsl:param name="visibility" select="string('Public')" />
+ <xsl:param name="static">
+ <xsl:choose>
+ <xsl:when test="memberdata/@static">
+ <xsl:value-of select="memberdata/@static" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="declaringType" select="containers/type/@api" />
+ <xsl:param name="specialName">
+ <xsl:choose>
+ <xsl:when test="memberdata/@special">
+ <xsl:value-of select="memberdata/@special" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="runtimeSpecialName" select="string('false')"/>
+ <xsl:param name="abstract">
+ <xsl:choose>
+ <xsl:when test="proceduredata/@abstract">
+ <xsl:value-of select="proceduredata/@abstract" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="virtual">
+ <xsl:choose>
+ <xsl:when test="proceduredata/@virtual">
+ <xsl:value-of select="proceduredata/@virtual" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="final">
+ <xsl:choose>
+ <xsl:when test="proceduredata/@final">
+ <xsl:value-of select="proceduredata/@final" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" />
+ </xsl:template>
+
+ <xsl:template name="writeConstructorAccess">
+ <xsl:param name="visibility" select="string('Public')" />
+ <xsl:param name="static">
+ <xsl:choose>
+ <xsl:when test="memberdata/@static">
+ <xsl:value-of select="memberdata/@static" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="declaringType" select="containers/type/@api" />
+ <xsl:param name="specialName">
+ <xsl:choose>
+ <xsl:when test="memberdata/@special">
+ <xsl:value-of select="memberdata/@special" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:param>
+ <xsl:param name="runtimeSpecialName" select="string('false')"/>
+ <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" />
+ </xsl:template>
+
+ <xsl:template name="writeMemberInheritance">
+ <xsl:choose>
+ <xsl:when test="overrides">
+ <inheritance doesOverride="true" isInherited="false" doesHide="false">
+ <baseMember name="{key('index',overrides/member/@api)/apidata/@name}" commentId="{overrides/member/@api}">
+ <type name="{key('index',overrides/member/type/@api)/apidata/@name}" namespace="{key('index',key('index',overrides/member/type/@api)/containers/namespace/@api)/apidata/@name}" commentId="{overrides/member/type/@api}" />
+ </baseMember>
+ </inheritance>
+ </xsl:when>
+ <xsl:otherwise>
+ <inheritance doesOverride="false" isInherited="false" doesHide="false">
+ <baseMember name="{apidata/@name}" commentId="{@id}">
+ <type name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" />
+ </baseMember>
+ </inheritance>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="writeImplementedInterfaces">
+ <implementedInterfaces>
+ <xsl:for-each select="implements/type">
+ <interface name="{key('index',@api)/apidata/@name}" namespace="{key('index',key('index',@api)/containers/namespace/@api)/apidata/@name}" commentId="{@api}" >
+ <xsl:if test="specialization">
+ <parameters>
+ <xsl:for-each select="specialization/*">
+ <parameter pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
+ <xsl:apply-templates select="(descendant-or-self::type | descendant-or-self::template)[1]" />
+ </parameter>
+ </xsl:for-each>
+ </parameters>
+ </xsl:if>
+ </interface>
+ </xsl:for-each>
+ </implementedInterfaces>
+ </xsl:template>
+
+ <xsl:template name="writeMembers">
+ <xsl:param name="type" select="@id" />
+ <members>
+<!--
+ <fields />
+ <constructors />
+ <methods />
+ <properties />
+ <events />
+-->
+
+ <fields>
+ <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='field' and containers/type/@api=$type]" />
+ </fields>
+ <constructors>
+ <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='constructor']" />
+ </constructors>
+ <methods>
+ <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='method' and containers/type/@api=$type]" />
+ </methods>
+ <properties>
+ <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='property' and containers/type/@api=$type]" />
+ </properties>
+ <events>
+ <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='event' and containers/type/@api=$type]" />
+ </events>
+
+ </members>
+ </xsl:template>
+
+ <xsl:template name="writeCustomAttributes">
+ <customAttributes />
+ </xsl:template>
+
+ <xsl:template name="writeParameters">
+ <parameters>
+ <xsl:for-each select="parameters/parameter">
+ <parameter name="{@name}" in="false" out="false" optional="false" retval="false" params="false">
+ <parameterTypeReference pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
+ <xsl:apply-templates select="(.//type | .//template)[1]" />
+ </parameterTypeReference>
+ </parameter>
+ </xsl:for-each>
+ </parameters>
+ </xsl:template>
+
+ <xsl:template name="writeReturnValue">
+ <returnValue pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
+ <xsl:choose>
+ <xsl:when test="returns">
+ <xsl:apply-templates select="(returns//type | returns//template)[1]" />
+ </xsl:when>
+ <xsl:otherwise>
+ <typeReference name="Void" namespace="System" commentId="T:System.Void" />
+ <customModifiers />
+ <arrayDefinitions />
+ </xsl:otherwise>
+ </xsl:choose>
+ </returnValue>
+ </xsl:template>
+
+ <xsl:template name="writeValue">
+ <value pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
+ <xsl:choose>
+ <xsl:when test="returns">
+ <xsl:apply-templates select="(returns//type | returns//template)[1]" />
+ </xsl:when>
+ <xsl:otherwise>
+ <typeReference name="Void" namespace="System" commentId="T:System.Void" />
+ <customModifiers />
+ <arrayDefinitions />
+ </xsl:otherwise>
+ </xsl:choose>
+ </value>
+ </xsl:template>
+
+ <xsl:template match="type">
+ <typeReference name="" namespace="" commentId="{@api}" />
+ <customModifiers />
+ <arrayDefinitions />
+ </xsl:template>
+
+ <xsl:template match="template">
+ <typeReference name="{@name}" index="{@index}" target="Type" />
+ <customModifiers />
+ <arrayDefinitions />
+ </xsl:template>
+
+ <xsl:template match="templates">
+ <genericTypeParameters>
+ <xsl:for-each select="template">
+ <genericTypeParameter name="{@name}">
+ <constraints />
+ </genericTypeParameter>
+ </xsl:for-each>
+ </genericTypeParameters>
+ </xsl:template>
+
+ <!-- api entities -->
+
+ <xsl:template match="assembly">
+ <assembly>
+ <attributes name="{@name}" hashAlgorithm="SHA" culture="" sideBySideCompatible="true" retargetable="false" enableJitCompileTracking="false" enableJitCompileOptimizer="false" />
+ <version majorVersion="2" minorVersion="0" buildNumber="0" revisionNumber="0" />
+ <operatingSystems />
+ <processors />
+ <xsl:call-template name="writeCustomAttributes" />
+ <modules />
+ <assemblyReferences />
+ <files />
+ <manifestResources />
+ </assembly>
+ </xsl:template>
+
+ <xsl:template match="api[apidata/@group='namespace']">
+ <namespace>
+ <frameworks />
+ <xsl:call-template name="writeIdentity">
+ <xsl:with-param name="namespaceName" select="apidata/@name" />
+ </xsl:call-template>
+ <xsl:call-template name="writeSource" />
+ <comments />
+ <xsl:call-template name="writeCustomAttributes" />
+ <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='enumeration']" />
+ <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='structure']" />
+ <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='delegate']" />
+ <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='interface']" />
+ <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='class']" />
+ </namespace>
+ </xsl:template>
+
+ <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='class']">
+ <class>
+ <frameworks />
+ <xsl:call-template name="writeTypeIdentity" />
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="writeTypeAttributes" />
+ <inheritance>
+ <baseType name="Object" namespace="System" commentId="T:System.Object" />
+ <xsl:call-template name="writeImplementedInterfaces" />
+ </inheritance>
+ <xsl:apply-templates select="templates" />
+ <comments />
+ <xsl:call-template name="writeCustomAttributes" />
+ <xsl:call-template name="writeMembers">
+ <xsl:with-param name="type" select="@id" />
+ </xsl:call-template>
+ <PermissionSetAttributes />
+ </class>
+ </xsl:template>
+
+ <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='structure']">
+ <structure>
+ <frameworks />
+ <xsl:call-template name="writeTypeIdentity" />
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="typeIdentity" />
+ <xsl:call-template name="writeTypeAttributes">
+ <xsl:with-param name="classLayout">SequentialLayout</xsl:with-param>
+ </xsl:call-template>
+ <inheritance>
+ <baseType name="ValueType" namespace="System" commentId="T:System.ValueType" />
+ <xsl:call-template name="writeImplementedInterfaces" />
+ </inheritance>
+ <xsl:apply-templates select="templates" />
+ <comments />
+ <xsl:call-template name="writeCustomAttributes" />
+ <xsl:call-template name="writeMembers" />
+ </structure>
+ </xsl:template>
+
+
+ <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='enumeration']">
+ <enumeration>
+ <frameworks />
+ <xsl:call-template name="writeTypeIdentity" />
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="writeTypeAttributes" />
+ <inheritance>
+ <baseType name="Enum" namespace="System" commentId="T:System.Enum" />
+ <implementedInterfaces />
+ </inheritance>
+ <comments />
+ <xsl:call-template name="writeCustomAttributes" />
+ <xsl:call-template name="writeMembers" />
+ </enumeration>
+ </xsl:template>
+
+ <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='delegate']">
+ <delegate>
+ <frameworks />
+ <xsl:call-template name="writeTypeIdentity" />
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="writeTypeAttributes" />
+ <inheritance>
+ <baseType name="MulticastDelegate" namespace="System" commentId="T:System.MulticastDelegate" />
+ <implementedInterfaces />
+ </inheritance>
+ <comments />
+ <xsl:call-template name="writeCustomAttributes" />
+ <xsl:call-template name="writeMembers" />
+ <xsl:call-template name="writeParameters" />
+ <xsl:call-template name="writeReturnValue" />
+ </delegate>
+ </xsl:template>
+
+ <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='interface']">
+ <interface>
+ <frameworks />
+ <xsl:call-template name="writeTypeIdentity" />
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="writeTypeAttributes" />
+ <inheritance>
+ <baseType name="" namespace="" commentId="" />
+ <implementedInterfaces />
+ </inheritance>
+ <xsl:apply-templates select="templates" />
+ <comments />
+ <xsl:call-template name="writeCustomAttributes" />
+ <xsl:call-template name="writeMembers" />
+ </interface>
+ </xsl:template>
+
+
+ <!-- member entries -->
+
+ <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='field']">
+ <field>
+ <frameworks />
+ <xsl:call-template name="writeMemberIdentity" />
+ <xsl:call-template name="writeSource" />
+ <comments />
+ <xsl:call-template name="writeCustomAttributes" />
+ <xsl:variable name="type" select="key('index',containers/type/@api)" />
+ <inheritance doesOverride="false" isInherited="false" doesHide="false">
+ <baseMember name="{apidata/@name}" commentId="{@id}">
+ <type name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" />
+ </baseMember>
+ </inheritance>
+
+ <xsl:call-template name="writeMemberAccess" />
+ <value pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
+ <typeReference name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" />
+ <customModifiers />
+ <arrayDefinitions />
+ </value>
+ </field>
+ </xsl:template>
+
+ <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='method']">
+ <method>
+ <xsl:attribute name="isOverload">
+ <xsl:choose>
+ <xsl:when test="memberdata/@overload='true'">
+ <xsl:text>true</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="hasVarArgs">
+ <xsl:text>false</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="isExplicitInterfaceImpl">
+ <xsl:text>false</xsl:text>
+ </xsl:attribute>
+ <frameworks />
+ <xsl:call-template name="writeMemberIdentity" />
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="writeMethodAccess" />
+ <xsl:call-template name="writeMemberInheritance" />
+ <xsl:call-template name="writeCustomAttributes" />
+ <PermissionSetAttributes />
+ <xsl:call-template name="writeParameters" />
+ <xsl:call-template name="writeReturnValue" />
+ <explicitImplRefs />
+ <comments />
+ </method>
+ </xsl:template>
+
+ <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='property']">
+ <property>
+ <xsl:attribute name="isOverload">
+ <xsl:choose>
+ <xsl:when test="memberdata/@overload='true'">
+ <xsl:text>true</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>false</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <frameworks />
+ <xsl:call-template name="writeMemberIdentity" />
+ <xsl:call-template name="writeSource" />
+ <comments />
+ <xsl:call-template name="writeCustomAttributes" />
+ <xsl:call-template name="writeMemberInheritance" />
+ <xsl:if test="propertydata/@get='true'">
+ <propertyGet>
+ <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false">
+ <frameworks />
+ <xsl:call-template name="writeMemberIdentity">
+ <!-- <xsl:with-param name="memberName" select="concat('get_',apidata/@name)" /> -->
+ </xsl:call-template>
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="writeMethodAccess" />
+ <xsl:call-template name="writeMemberInheritance" />
+ <xsl:call-template name="writeCustomAttributes" />
+ <PermissionSetAttributes />
+ <xsl:call-template name="writeParameters" />
+ <xsl:call-template name="writeReturnValue" />
+ <explicitImplRefs />
+ <comments />
+ </method>
+ </propertyGet>
+ </xsl:if>
+ <xsl:if test="propertydata/@set='true'">
+
+ </xsl:if>
+ <xsl:call-template name="writePropertyAccess" />
+ <xsl:call-template name="writeParameters" />
+ <xsl:call-template name="writeValue" />
+ </property>
+ </xsl:template>
+
+ <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='event']">
+ <event>
+ <frameworks />
+ <xsl:call-template name="writeMemberIdentity" />
+ <xsl:call-template name="writeSource" />
+ <comments />
+ <xsl:call-template name="writeCustomAttributes" />
+ <xsl:call-template name="writeMemberInheritance" />
+ <eventAdd>
+ <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false">
+ <frameworks />
+ <xsl:call-template name="writeMemberIdentity" />
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="writeMethodAccess" />
+ <xsl:call-template name="writeMemberInheritance" />
+ <xsl:call-template name="writeCustomAttributes" />
+ <PermissionSetAttributes />
+ <xsl:call-template name="writeParameters" />
+ <xsl:call-template name="writeReturnValue" />
+ <explicitImplRefs />
+ <comments />
+ </method>
+ </eventAdd>
+ <eventRemove>
+ <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false">
+ <frameworks />
+ <xsl:call-template name="writeMemberIdentity" />
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="writeMethodAccess" />
+ <xsl:call-template name="writeMemberInheritance" />
+ <xsl:call-template name="writeCustomAttributes" />
+ <PermissionSetAttributes />
+ <xsl:call-template name="writeParameters" />
+ <xsl:call-template name="writeReturnValue" />
+ <explicitImplRefs />
+ <comments />
+ </method>
+ </eventRemove>
+ <xsl:call-template name="writeEventAccess" />
+ <eventHandler name="" namespace="" commentId="{eventhandler/type/@api}" />
+ </event>
+ </xsl:template>
+
+
+ <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='constructor']">
+ <constructor>
+ <xsl:attribute name="isOverload">
+ <xsl:choose>
+ <xsl:when test="false()"><xsl:text>true</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:text>false</xsl:text></xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <frameworks />
+ <xsl:call-template name="writeMemberIdentity" />
+ <xsl:call-template name="writeSource" />
+ <xsl:call-template name="writeConstructorAccess" />
+ <xsl:call-template name="writeMemberInheritance" />
+ <xsl:call-template name="writeParameters" />
+ <xsl:call-template name="writeCustomAttributes" />
+ <PermissionSetAttributes />
+ <comments />
+ </constructor>
+ </xsl:template>
+
+ <xsl:template match="attribute">
+ <CustomAttribute>
+ <TypeRef name="{key('index',type/@api)/apidata/@name}" namespace="{key('index',key('index',type/@api)/containers/containingNamespace/@api)/apidata/@name}" commendId="{type/@api}" />
+ <CustomAttributeNamedValues />
+ <CustomattributeConstructor />
+ </CustomAttribute>
+ </xsl:template>
+
+ <xsl:template name="typeIdentity">
+ <identity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{apidata/@name}" memberName="" commentId="{@id}" textId="" />
+ </xsl:template>
+
+ <xsl:template name="memberIdentity">
+ <identity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{key('index',containers/type/@api)/apidata/@name}" memberName="{apidata/@name}" commentId="{@id}" textId="" />
+ </xsl:template>
+
+ <xsl:template name="source">
+ <source assembly="{containers/library/@assembly}" module="{containers/library/@module}.dll" />
+ </xsl:template>
+
+ <xsl:template match="templates">
+ <genericTypeParameters>
+ <xsl:for-each select="template">
+ <genericTypeParameter name="{@name}">
+ <constraints />
+ </genericTypeParameter>
+ </xsl:for-each>
+ </genericTypeParameters>
+ </xsl:template>
+
+ <xsl:template name="typeReference">
+ <xsl:attribute name="pointerIndirections">
+ <xsl:value-of select="count(pointerTo)" />
+ </xsl:attribute>
+ <xsl:attribute name="byRef">
+ <xsl:value-of select="type/@ref" />
+ </xsl:attribute>
+ <xsl:attribute name="pinned">
+ <xsl:text>false</xsl:text>
+ </xsl:attribute>
+ <typeReference name="{key('index',.//type[1]/@api)/apidata/@name}" namespace="{key('index',key('index',.//type[1]/@api)/containers/namespace/@api)/apidata/@name}" commendId="{.//type[1]/@api}" />
+ <customModifiers />
+ <arrayDefinitions>
+ <xsl:if test="arrayOf">
+ <xsl:attribute name="rank">
+ <xsl:value-of select="arrayOf/@rank" />
+ </xsl:attribute>
+ <dimensions />
+ </xsl:if>
+ </arrayDefinitions>
+ </xsl:template>
+
+ <xsl:template name="visibility">
+ <xsl:param name="visibility" />
+ <xsl:attribute name="visibility">
+ <xsl:choose>
+ <xsl:when test="$visibility='public'">
+ <xsl:text>Public</xsl:text>
+ </xsl:when>
+ <xsl:when test="$visibility='family'">
+ <xsl:text>Family</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:template>
+
</xsl:stylesheet> \ No newline at end of file