[runtime] Disable some tests in full-aot mode which cannot be AOTed because of type...
[mono-project.git] / mcs / class / monodoc / Resources / mono-ecma-impl.xsl
bloba34c39d2761fbd0c2779d8aa7181a07db239f275
1 <?xml version="1.0"?>
3 <!--
4 mono-ecma-impl.xsl: ECMA-style docs to HTML stylesheet trasformation
6 Author: Joshua Tauberer (tauberer@for.net)
7 Author: Jonathan Pryor (jpryor@novell.com)
9 This file requires that including files define the following callable
10 templates:
11 - CreateCodeBlock (language, content)
12 - CreateEnumerationTable (content)
13 - CreateHeader (content)
14 - CreateListTable (header, content)
15 - CreateMembersTable (content)
16 - CreateSignature (content)
17 - CreateTypeDocumentationTable (content)
19 -->
21 <xsl:stylesheet
22 version="1.0"
23 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
24 xmlns:monodoc="monodoc:///extensions"
25 exclude-result-prefixes="monodoc"
27 <xsl:include href="mdoc-html-utils.xsl" />
29 <!-- TEMPLATE PARAMETERS -->
31 <xsl:param name="show"/>
32 <xsl:param name="membertype"/>
33 <xsl:param name="namespace"/>
35 <!-- THE MAIN RENDERING TEMPLATE -->
37 <xsl:template match="Type|elements">
38 <!-- The namespace that the current type belongs to. -->
39 <xsl:variable name="TypeNamespace" select="substring(@FullName, 1, string-length(@FullName) - string-length(@Name) - 1)"/>
41 <!-- HEADER -->
43 <xsl:variable name="typename" select="translate (@FullName, '+', '.')" />
44 <xsl:variable name="typelink">
45 <xsl:call-template name="GetEscapedTypeName">
46 <xsl:with-param name="typename" select="@FullName" />
47 </xsl:call-template>
48 </xsl:variable>
49 <xsl:variable name="basename">
50 <xsl:if test="Base/BaseTypeName">
51 <xsl:value-of select="translate (Base/BaseTypeName, '+', '.')" />
52 </xsl:if>
53 </xsl:variable>
54 <xsl:variable name="baselink">
55 <xsl:if test="Base/BaseTypeName">
56 <xsl:call-template name="GetEscapedTypeName">
57 <xsl:with-param name="typename" select="Base/BaseTypeName" />
58 </xsl:call-template>
59 </xsl:if>
60 </xsl:variable>
62 <xsl:call-template name="CreateHeader">
63 <xsl:with-param name="content">
64 <ul class="breadcrumb">
65 <xsl:choose>
66 <xsl:when test="$show='masteroverview'">
67 <li class="namespace">
68 <xsl:text>Namespaces in this Collection</xsl:text>
69 </li>
70 </xsl:when>
71 <xsl:when test="$show='typeoverview'">
72 <li class="namespace">
73 <a>
74 <xsl:attribute name="href">N:<xsl:value-of select="$TypeNamespace"/></xsl:attribute>
75 <xsl:value-of select="$TypeNamespace"/></a>
76 </li>
77 <li class="pubclass">
78 <xsl:value-of select="@Name"/>
79 </li>
80 </xsl:when>
81 <xsl:when test="$show='members'">
82 <li class="namespace">
83 <a>
84 <xsl:attribute name="href">N:<xsl:value-of select="$TypeNamespace"/></xsl:attribute>
85 <xsl:value-of select="$TypeNamespace"/>
86 </a>
87 </li>
88 <li class="pubclass">
89 <a>
90 <xsl:attribute name="href">
91 <xsl:text>T:</xsl:text>
92 <xsl:value-of select="$typelink" />
93 </xsl:attribute>
94 <xsl:value-of select="@Name"/>
95 </a>
96 </li>
97 <li class="members">
98 Members
99 </li>
100 </xsl:when>
101 <xsl:when test="$show='member' or $show='overloads'">
102 <li class="namespace">
104 <xsl:attribute name="href">N:<xsl:value-of select="$TypeNamespace"/></xsl:attribute>
105 <xsl:value-of select="$TypeNamespace"/></a>
106 </li>
107 <li class="pubclass">
109 <xsl:attribute name="href">
110 <xsl:text>T:</xsl:text>
111 <xsl:value-of select="$typelink" />
112 </xsl:attribute>
113 <xsl:value-of select="@Name"/>
114 </a>
115 </li>
116 <li class="pubproperty">
117 <xsl:choose>
118 <xsl:when test="$membertype='Operator'">
119 <xsl:value-of select="$typename"/>
120 <xsl:value-of select="' '"/> <!-- hard space -->
121 <xsl:value-of select="substring-after(Members/Member[MemberType='Method'][position()=$index+1]/@MemberName, 'op_')"/>
122 </xsl:when>
123 <xsl:when test="$membertype='Constructor'">
124 <xsl:value-of select="$typename"/>
125 </xsl:when>
126 <xsl:otherwise>
127 <xsl:value-of select="Members/Member[MemberType=$membertype][position()=$index+1]/@MemberName"/>
128 </xsl:otherwise>
129 </xsl:choose>
130 </li>
131 </xsl:when>
132 <xsl:when test="$show='namespace'">
133 <li class="namespace">
134 <xsl:value-of select="$namespace"/>
135 </li>
136 </xsl:when>
137 </xsl:choose>
138 </ul>
139 <div class="named-header">
140 <xsl:choose>
141 <xsl:when test="$show='masteroverview'">
142 <xsl:text>Master Overview</xsl:text>
143 </xsl:when>
144 <xsl:when test="$show='typeoverview'">
145 <xsl:value-of select="$typename"/>
146 <xsl:value-of select="' '"/>
147 <xsl:call-template name="gettypetype"/>
148 </xsl:when>
149 <xsl:when test="$show='members' and $membertype='All'">
150 <xsl:value-of select="$typename"/>
151 <xsl:text> Members</xsl:text>
152 </xsl:when>
153 <xsl:when test="$show='members'">
154 <xsl:value-of select="$typename"/>
155 <xsl:text>: </xsl:text>
156 <xsl:value-of select="$membertype"/>
157 <xsl:text> Members</xsl:text>
158 </xsl:when>
159 <xsl:when test="$show='member'">
160 <xsl:choose>
161 <xsl:when test="$membertype='Operator'">
162 <xsl:value-of select="$typename"/>
163 <xsl:value-of select="' '"/> <!-- hard space -->
164 <xsl:value-of select="substring-after(Members/Member[MemberType='Method'][position()=$index+1]/@MemberName, 'op_')"/>
165 </xsl:when>
166 <xsl:when test="$membertype='Constructor'">
167 <xsl:value-of select="$typename"/>
168 </xsl:when>
169 <xsl:otherwise>
170 <xsl:value-of select="$typename"/>.<xsl:value-of select="Members/Member[MemberType=$membertype][position()=$index+1]/@MemberName"/>
171 </xsl:otherwise>
172 </xsl:choose>
173 <xsl:value-of select="' '"/>
174 <xsl:value-of select="$membertype"/>
175 </xsl:when>
177 <xsl:when test="$show='namespace'">
178 <xsl:value-of select="$namespace"/>
179 <xsl:text> Namespace</xsl:text>
180 </xsl:when>
182 <xsl:when test="$show='overloads'">
183 <xsl:value-of select="$typename"/>.<xsl:value-of select="$index"/> Overloads
184 </xsl:when>
186 </xsl:choose>
187 </div>
188 </xsl:with-param>
189 </xsl:call-template>
191 <!-- SELECT WHAT TYPE OF VIEW:
192 typeoverview
193 members
194 member
196 <div class="Content">
197 <xsl:choose>
198 <xsl:when test="$show='masteroverview'">
200 <xsl:for-each select="namespace">
201 <xsl:sort select="@ns"/>
203 <!-- Don't display the namespace if it is a sub-namespace of another one.
204 But don't consider namespaces without periods, e.g. 'System', to be
205 parent namespaces because then most everything will get grouped under it. -->
206 <xsl:variable name="ns" select="@ns"/>
207 <xsl:if test="count(parent::*/namespace[not(substring-before(@ns, '.')='') and starts-with($ns, concat(@ns, '.'))])=0">
210 <b><a href="N:{@ns}"><xsl:value-of select="@ns"/></a></b>
211 </p>
212 <blockquote>
213 <div>
214 <xsl:apply-templates select="summary" mode="notoppara"/>
215 </div>
217 <!-- Display the sub-namespaces of this namespace -->
218 <xsl:if test="not(substring-before($ns, '.')='')">
219 <xsl:for-each select="parent::*/namespace[starts-with(@ns, concat($ns, '.'))]">
220 <br/>
221 <div><a href="N:{@ns}"><xsl:value-of select="@ns"/></a></div>
222 <div><xsl:apply-templates select="summary" mode="notoppara"/></div>
223 </xsl:for-each>
224 </xsl:if>
225 </blockquote>
227 </xsl:if>
228 </xsl:for-each>
230 </xsl:when>
231 <!-- TYPE OVERVIEW -->
232 <xsl:when test="$show='typeoverview'">
233 <xsl:variable name="implemented" select="monodoc:MonoImpInfo(string(AssemblyInfo/AssemblyName), string(@FullName), true())" />
234 <xsl:call-template name="CreateTypeOverview">
235 <xsl:with-param name="implemented" select="$implemented" />
236 <xsl:with-param name="show-members-link" select="true()" />
237 </xsl:call-template>
240 <!-- signature -->
241 <xsl:call-template name="CreateTypeSignature" />
243 <xsl:call-template name="DisplayDocsInformation">
244 <xsl:with-param name="linkid" select="concat ('T:', @FullName)" />
245 </xsl:call-template>
246 </xsl:when>
248 <!-- MEMBER LISTING -->
249 <xsl:when test="$show='members'">
250 <xsl:if test="$membertype='All'">
252 The members of <xsl:value-of select="$typename"/> are listed below.
253 </p>
255 <xsl:if test="Base/BaseTypeName">
257 <xsl:text>See Also: </xsl:text>
259 <xsl:attribute name="href">T:<xsl:value-of select="$baselink"/>/*</xsl:attribute>
260 <xsl:text>Inherited members from </xsl:text>
261 <xsl:value-of select="$basename"/>
262 </a>
263 </p>
264 </xsl:if>
266 <ul class="TypeMembersIndex">
267 <xsl:if test="count(Members/Member[MemberType='Constructor'])">
268 <li>
269 <a><xsl:attribute name="href">T:<xsl:value-of select="$typelink"/>/C</xsl:attribute>Constructors</a>
270 </li>
271 </xsl:if>
272 <xsl:if test="count(Members/Member[MemberType='Field'])">
273 <li>
274 <a><xsl:attribute name="href">T:<xsl:value-of select="$typelink"/>/F</xsl:attribute>Fields</a>
275 </li>
276 </xsl:if>
277 <xsl:if test="count(Members/Member[MemberType='Property'])">
278 <li>
279 <a><xsl:attribute name="href">T:<xsl:value-of select="$typelink"/>/P</xsl:attribute>Properties</a>
280 </li>
281 </xsl:if>
282 <xsl:if test="count(Members/Member[MemberType='Method' and not(starts-with(@MemberName,'op_'))])">
283 <li>
284 <a><xsl:attribute name="href">T:<xsl:value-of select="$typelink"/>/M</xsl:attribute>Methods</a>
285 </li>
286 </xsl:if>
287 <xsl:if test="count(Members/Member[MemberType='Event'])">
288 <li>
289 <a><xsl:attribute name="href">T:<xsl:value-of select="$typelink"/>/E</xsl:attribute>Events</a>
290 </li>
291 </xsl:if>
292 <xsl:if test="count(Members/Member[MemberType='Method' and starts-with(@MemberName,'op_')])">
293 <li>
294 <a><xsl:attribute name="href">T:<xsl:value-of select="$typelink"/>/E</xsl:attribute>Events</a>
295 </li>
296 </xsl:if>
297 <xsl:if test="count(Members/Member[MemberType='ExtensionMethod'])">
298 <li>
299 <a><xsl:attribute name="href">T:<xsl:value-of select="$typelink"/>/X</xsl:attribute>Extension Methods</a>
300 </li>
301 </xsl:if>
302 </ul>
304 <!-- list each type of member (public, then protected) -->
306 <xsl:call-template name="ListAllMembers" />
307 </xsl:if>
309 <xsl:if test="not($membertype='All')">
310 <!-- list the members of this type (public, then protected) -->
314 <xsl:call-template name="membertypeplurallc"><xsl:with-param name="name" select="$membertype"/></xsl:call-template>
315 of <xsl:value-of select="$typename"/> are listed below. For a list of all members, see the <a>
316 <xsl:attribute name="href">T:<xsl:value-of select="$typelink"/>/*</xsl:attribute>
317 <xsl:value-of select="@Name"/> Members</a> list.
318 </p>
320 <xsl:if test="Base/BaseTypeName">
322 <xsl:text>See Also: </xsl:text>
324 <xsl:attribute name="href">T:<xsl:value-of select="$baselink"/>/*</xsl:attribute>
325 <xsl:text>Inherited members from </xsl:text>
326 <xsl:value-of select="$basename"/>
327 </a>
328 </p>
329 </xsl:if>
331 <xsl:call-template name="ListMembers">
332 <xsl:with-param name="listmembertype" select="$membertype"/>
333 <xsl:with-param name="showprotected" select="false()"/>
334 </xsl:call-template>
336 <xsl:call-template name="ListMembers">
337 <xsl:with-param name="listmembertype" select="$membertype"/>
338 <xsl:with-param name="showprotected" select="true()"/>
339 </xsl:call-template>
340 </xsl:if>
342 </xsl:when>
344 <xsl:when test="$show='overloads'">
346 The overloads of <xsl:value-of select="$index"/>
347 are listed below. For a list of all members, see the <a>
348 <xsl:attribute name="href">T:<xsl:value-of select="$typelink"/>/*</xsl:attribute>
349 <xsl:value-of select="@Name"/> Members</a> list.
350 </p>
352 <!-- TODO: can we make this actually test if there are any overloads
353 <xsl:if test="Base/BaseTypeName">
355 See Also: <a>
356 <xsl:attribute name="href">T:<xsl:value-of select="Base/BaseTypeName"/>/*</xsl:attribute>
357 Inherited members</a> from <xsl:value-of select="Base/BaseTypeName"/>
358 </p>
359 </xsl:if>
362 <xsl:call-template name="ListMembers">
363 <xsl:with-param name="listmembertype" select="$membertype"/>
364 <xsl:with-param name="showprotected" select="false()"/>
365 <xsl:with-param name="overloads-mode" select="true()"/>
366 </xsl:call-template>
368 <xsl:call-template name="ListMembers">
369 <xsl:with-param name="listmembertype" select="$membertype"/>
370 <xsl:with-param name="showprotected" select="true()"/>
371 <xsl:with-param name="overloads-mode" select="true()"/>
372 </xsl:call-template>
373 </xsl:when>
374 <!-- MEMBER DETAILS -->
375 <xsl:when test="$show='member'">
376 <xsl:variable name="Type" select="."/>
378 <!-- select the member, this just loops through the one member that we are to display -->
379 <xsl:for-each select="Members/Member[MemberType=$membertype or ($membertype='Operator' and MemberType='Method')][position()=$index+1]">
381 <!-- summary -->
383 <xsl:call-template name="CreateMemberOverview">
384 <xsl:with-param name="implemented" select="monodoc:MonoImpInfo(string(AssemblyInfo/AssemblyName), string(@FullName), true())" />
385 </xsl:call-template>
387 <xsl:call-template name="CreateMemberSignature">
388 <xsl:with-param name="linkid" select="concat ('T:', @FullName)" />
389 </xsl:call-template>
391 <div class="MemberBox">
392 <xsl:call-template name="DisplayDocsInformation">
393 <xsl:with-param name="linkid" select="concat ('T:', @FullName)" />
394 </xsl:call-template>
395 </div>
397 </xsl:for-each>
399 </xsl:when>
401 <!-- NAMESPACE SUMMARY -->
402 <xsl:when test="$show='namespace'">
404 <!-- summary -->
406 <p><div class="msummary"><xsl:apply-templates select="summary" mode="notoppara"/></div>
408 <xsl:if test="monodoc:MonoEditing()">
409 <xsl:value-of select="' '" />
410 [<a href="{monodoc:EditUrlNamespace (., $namespace, 'summary')}">Edit</a>]
411 </xsl:if>
412 </p>
414 <!-- remarks -->
416 <xsl:if test="not(remarks = '')">
417 <h2>Remarks</h2>
418 <div class="SectionBox">
419 <xsl:apply-templates select="remarks"/>
420 <xsl:if test="monodoc:MonoEditing()">
421 <xsl:value-of select="' '" />
422 [<a href="{monodoc:EditUrlNamespace (., $namespace, 'remarks')}">Edit</a>]
423 </xsl:if>
424 </div>
425 </xsl:if>
427 <xsl:call-template name="namespacetypes">
428 <xsl:with-param name="typetype" select="'class'"/>
429 <xsl:with-param name="typetitle" select="'Classes'"/>
430 </xsl:call-template>
432 <xsl:call-template name="namespacetypes">
433 <xsl:with-param name="typetype" select="'interface'"/>
434 <xsl:with-param name="typetitle" select="'Interfaces'"/>
435 </xsl:call-template>
437 <xsl:call-template name="namespacetypes">
438 <xsl:with-param name="typetype" select="'struct'"/>
439 <xsl:with-param name="typetitle" select="'Structs'"/>
440 </xsl:call-template>
442 <xsl:call-template name="namespacetypes">
443 <xsl:with-param name="typetype" select="'delegate'"/>
444 <xsl:with-param name="typetitle" select="'Delegates'"/>
445 </xsl:call-template>
447 <xsl:call-template name="namespacetypes">
448 <xsl:with-param name="typetype" select="'enum'"/>
449 <xsl:with-param name="typetitle" select="'Enumerations'"/>
450 </xsl:call-template>
453 </xsl:when>
455 <!-- don't know what kind of page this is -->
456 <xsl:otherwise>
457 Don't know what to do!
458 </xsl:otherwise>
460 </xsl:choose>
461 </div>
463 <!-- FOOTER -->
465 <div class="Footer">
466 </div>
468 </xsl:template>
470 <xsl:template name="GetLinkTarget">
471 <xsl:param name="type" />
472 <xsl:param name="cref" />
474 <xsl:value-of select="$cref" />
475 </xsl:template>
477 <xsl:template name="namespacetypes">
478 <xsl:param name="typetype"/>
479 <xsl:param name="typetitle"/>
481 <xsl:variable name="NODES" select="*[name()=$typetype]"/>
483 <xsl:if test="count($NODES)">
485 <xsl:call-template name="CreateH2Section">
486 <xsl:with-param name="name" select="$typetitle" />
487 <xsl:with-param name="child-id" select="$typetitle" />
488 <xsl:with-param name="content">
490 <xsl:call-template name="CreateTypeDocumentationTable">
491 <xsl:with-param name="content">
492 <xsl:for-each select="$NODES">
493 <xsl:sort select="@name"/>
495 <tr>
496 <td>
498 <xsl:attribute name="href">
499 <xsl:text>T:</xsl:text>
500 <xsl:call-template name="GetEscapedTypeName">
501 <xsl:with-param name="typename" select="@fullname" />
502 </xsl:call-template>
503 </xsl:attribute>
504 <xsl:value-of select="@name"/>
505 </a>
507 <xsl:variable name="containingtype" select="substring-before(@fullname, concat('+',@name))"/>
508 <xsl:if test="$containingtype">
509 <br/>(in
510 <xsl:call-template name="maketypelink">
511 <xsl:with-param name="type" select="$containingtype"/>
512 <xsl:with-param name="wrt" select="$namespace"/>
513 </xsl:call-template>)
514 </xsl:if>
515 </td>
516 <td>
517 <xsl:apply-templates select="summary" mode="notoppara"/>
518 <xsl:variable name="MonoImplInfo" select="monodoc:MonoImpInfo(string(@assembly), string(@fullname), false())"/>
519 <xsl:if test="$MonoImplInfo"><br/><b><xsl:value-of disable-output-escaping="yes" select="$MonoImplInfo"/></b></xsl:if>
520 </td>
521 </tr>
522 </xsl:for-each>
523 </xsl:with-param>
524 </xsl:call-template>
525 </xsl:with-param>
526 </xsl:call-template>
528 </xsl:if>
529 </xsl:template>
531 <xsl:template name="CreateEditLink">
532 <xsl:param name="e" />
533 <xsl:if test="monodoc:MonoEditing()">
534 <xsl:value-of select="' '" />
535 [<a href="{monodoc:EditUrl ($e)}">Edit</a>]
536 </xsl:if>
537 </xsl:template>
539 </xsl:stylesheet>