add bug info
[mcs.git] / build / corcompare-api.xsl
blob0003ee4ae4d46206dc5fbcbb67b2df0de31b3e95
1 <?xml version="1.0" ?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
4 <xsl:param name="source-name" select="(fillme)" />
5 <xsl:output method="html" indent="no"/>
6 <!-- <xsl:output method="xml"/>-->
7 <xsl:strip-space elements="*"/>
9 <xsl:template match="/">
10 <xsl:variable name="assembly-name" select="substring-before ($source-name, '.src')" />
11 <html>
12 <head>
13 <title>
14 Mono Class Library Status for <xsl:value-of select="$assembly-name" />
15 </title>
16 <script src="cm/cormissing.js"></script>
17 <link rel="stylesheet" type="text/css" href="cm/cormissing.css"></link>
18 <style type="text/css"><![CDATA[
19 div.links {
20 background-color: #CCFFCC;
22 div.links ul li {
23 display: inline;
24 padding: 5px;
26 ]]></style>
27 </head>
28 <body>
29 <div class="links">
30 <ul>
31 <li><a href="System.Runtime.Serialization.html">Runtime.Serialization</a></li>
32 <li><a href="System.IdentityModel.html">IdentityModel</a></li>
33 <li><a href="System.IdentityModel.Selectors.html">IdentityModel.Selectors</a></li>
34 <li><a href="System.ServiceModel.html">ServiceModel</a></li>
35 </ul>
36 </div>
37 <div class="main">
38 <p>
39 <h1>Mono Class Library Status for <xsl:value-of select="$assembly-name" /></h1>
40 </p>
41 <p>
42 <table>
43 <tr>
44 <td> <input type="checkbox" ID="todo" onClick="selectTodo();" checked="1"/> </td>
45 <td> <img src="cm/st.gif"/> </td>
46 <td> TODO </td>
47 <td width="20"/>
48 <td> <input type="checkbox" ID="missing" onClick="selectMissing();" checked="1"/> </td>
49 <td> <img src="cm/sm.gif"/> </td>
50 <td> Missing </td>
51 </tr>
52 <tr>
53 <td> <input type="checkbox" ID="extra" onClick="selectExtra();" checked="1"/> </td>
54 <td> <img src="cm/sx.gif"/> </td>
55 <td> Extra </td>
56 <td width="20"/>
57 <td> <input type="checkbox" ID="errors" onClick="selectErrors();" checked="1"/> </td>
58 <td> <img src="cm/se.gif"/> </td>
59 <td> Errors </td>
60 </tr>
61 <tr>
62 <td> </td>
63 <td> <img src="cm/sc.gif"/> </td>
64 <td> Completed </td>
65 </tr>
66 </table>
67 </p>
69 <p>
70 <select id="FilteredAttributes">
71 <option>System.Runtime.InteropServices.ComVisibleAttribute</option>
72 <option>System.Diagnostics.DebuggerDisplayAttribute</option>
73 <option>System.Diagnostics.DebuggerTypeProxyAttribute</option>
74 </select>
75 <input type="button" onclick="removeAndFilter()" value="Unfilter attribute" />
76 </p>
77 <p>
78 <input type="text" id="NewFilterTarget" length="60" />
79 <input type="button" onclick="addAndFilter()" value="Add to attribute filter" />
80 </p>
81 <p>Target Reference:
82 <input type="radio" id="TargetMonodoc" name="TargetDoc" value="0" />monodoc
83 <input type="radio" id="TargetMsdn1" name="TargetDoc" value="1" />msdn
84 <input type="radio" id="TargetMsdn2" name="TargetDoc" value="2" checked="checked" />msdn2
85 <input type="radio" id="TargetWinsdk" name="TargetDoc" value="3" checked="checked" />Windows SDK
86 </p>
88 <DIV ID="ROOT">
89 <xsl:apply-templates/>
90 </DIV>
91 <p>
92 Legend :<BR/>
93 <table>
94 <tr>
95 <td> <img src="cm/y.gif"/> </td>
96 <td> Assembly </td>
97 <td width="20"/>
98 <td> <img src="cm/n.gif"/> </td>
99 <td> Namespace </td>
100 <td width="20"/>
101 <td> <img src="cm/c.gif"/> </td>
102 <td> Class </td>
103 <td width="20"/>
104 <td> <img src="cm/s.gif"/> </td>
105 <td> Struct </td>
106 <tr>
107 </tr>
108 <td> <img src="cm/i.gif"/> </td>
109 <td> Interface </td>
110 <td width="20"/>
111 <td> <img src="cm/d.gif"/> </td>
112 <td> Delegate </td>
113 <td width="20"/>
114 <td> <img src="cm/en.gif"/> </td>
115 <td> Enum </td>
116 <td width="20"/>
117 <td> <img src="cm/m.gif"/> </td>
118 <td> Method </td>
119 </tr>
120 <tr>
121 <td> <img src="cm/f.gif"/> </td>
122 <td> Field </td>
123 <td width="20"/>
124 <td> <img src="cm/p.gif"/> </td>
125 <td> Property </td>
126 <td width="20"/>
127 <td> <img src="cm/e.gif"/> </td>
128 <td> Event </td>
129 <td width="20"/>
130 <td> <img src="cm/r.gif"/> </td>
131 <td> Attribute </td>
132 </tr>
133 <tr>
134 <td> <img src="cm/w.gif" /> </td>
135 <td colspan="10"> Generic Constraints</td>
136 </tr>
137 </table>
139 </p>
140 </div>
141 </body>
142 </html>
143 </xsl:template>
147 <!-- assembly -->
148 <xsl:template match="/assemblies">
149 <xsl:apply-templates select="assembly">
150 <xsl:sort select="@name"/>
151 </xsl:apply-templates>
152 </xsl:template>
154 <xsl:template match="assembly">
155 <DIV>
156 <xsl:call-template name="ELEMENT">
157 <xsl:with-param name="class">y</xsl:with-param>
158 </xsl:call-template>
159 <xsl:if test="not(@presence)">
160 <xsl:apply-templates/>
161 </xsl:if>
162 </DIV>
163 </xsl:template>
166 <!-- namespace -->
167 <xsl:template match="namespaces">
168 <xsl:apply-templates select="namespace">
169 <xsl:sort select="@name"/>
170 </xsl:apply-templates>
171 </xsl:template>
173 <xsl:template match="namespace">
174 <DIV>
175 <xsl:call-template name="ELEMENT">
176 <xsl:with-param name="class">n</xsl:with-param>
177 </xsl:call-template>
178 <xsl:if test="not(@presence)">
179 <xsl:apply-templates/>
180 </xsl:if>
181 </DIV>
182 </xsl:template>
185 <xsl:template match="namespace/classes">
186 <xsl:apply-templates select="class[@type='interface']">
187 <xsl:sort select="@name"/>
188 </xsl:apply-templates>
189 <xsl:apply-templates select="class[@type='class']">
190 <xsl:sort select="@name"/>
191 </xsl:apply-templates>
192 <xsl:apply-templates select="class[@type='struct']">
193 <xsl:sort select="@name"/>
194 </xsl:apply-templates>
195 <xsl:apply-templates select="class[@type='delegate']">
196 <xsl:sort select="@name"/>
197 </xsl:apply-templates>
198 <xsl:apply-templates select="class[@type='enum']">
199 <xsl:sort select="@name"/>
200 </xsl:apply-templates>
201 </xsl:template>
204 <!-- class -->
205 <xsl:template match="class[@type='class']">
206 <DIV>
207 <xsl:call-template name="ELEMENT">
208 <xsl:with-param name="class">c</xsl:with-param>
209 </xsl:call-template>
210 <xsl:if test="(@missing_total or @todo_total or @extra_total or @warning_total or @error) and not(@presence)">
211 <xsl:apply-templates select="attributes"/>
212 <xsl:apply-templates select="interfaces"/>
213 <xsl:apply-templates select="constructors"/>
214 <xsl:apply-templates select="./*[local-name() != 'attributes' and local-name() != 'constructors' and local-name() != 'interfaces']"/>
215 </xsl:if>
216 </DIV>
217 </xsl:template>
220 <!-- struct -->
221 <xsl:template match="class[@type='struct'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
222 <DIV>
223 <xsl:call-template name="ELEMENT">
224 <xsl:with-param name="class">s</xsl:with-param>
225 </xsl:call-template>
226 <xsl:if test="not(@presence)">
227 <xsl:apply-templates/>
228 </xsl:if>
229 </DIV>
230 </xsl:template>
234 <!-- interface types -->
235 <xsl:template match="class[@type='interface']">
236 <xsl:apply-templates select="class[@type='interface']">
237 <xsl:sort select="@name"/>
238 </xsl:apply-templates>
239 </xsl:template>
241 <xsl:template match="class[@type='interface'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
242 <DIV>
243 <xsl:call-template name="ELEMENT">
244 <xsl:with-param name="class">i</xsl:with-param>
245 </xsl:call-template>
246 <xsl:if test="not(@presence)">
247 <xsl:apply-templates/>
248 </xsl:if>
249 </DIV>
250 </xsl:template>
252 <!-- interfaces implemented by Types -->
253 <xsl:template match="interface">
254 <xsl:apply-templates select="interface">
255 <xsl:sort select="@name"/>
256 </xsl:apply-templates>
257 </xsl:template>
259 <xsl:template match="interface[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
260 <DIV>
261 <xsl:call-template name="ELEMENT">
262 <xsl:with-param name="class">i</xsl:with-param>
263 </xsl:call-template>
264 <xsl:if test="not(@presence)">
265 <xsl:apply-templates/>
266 </xsl:if>
267 </DIV>
268 </xsl:template>
271 <!-- generic constraints -->
272 <xsl:template match="generic-type-constraints">
273 <xsl:apply-templates select="generic-type-constraint">
274 <xsl:sort select="@name"/>
275 </xsl:apply-templates>
276 </xsl:template>
278 <xsl:template match="generic-type-constraint[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
279 <DIV>
280 <xsl:call-template name="ELEMENT">
281 <xsl:with-param name="class">w</xsl:with-param>
282 </xsl:call-template>
283 <xsl:if test="not(@presence)">
284 <xsl:apply-templates/>
285 </xsl:if>
286 </DIV>
287 </xsl:template>
291 <!-- delegate -->
292 <xsl:template match="class[@type='delegate'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
293 <DIV>
294 <xsl:call-template name="ELEMENT">
295 <xsl:with-param name="class">d</xsl:with-param>
296 </xsl:call-template>
297 <xsl:if test="not(@presence)">
298 <xsl:apply-templates/>
299 </xsl:if>
300 </DIV>
301 </xsl:template>
304 <!-- enumeration -->
305 <xsl:template match="class[@type='enum'][@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
306 <DIV>
307 <xsl:call-template name="ELEMENT">
308 <xsl:with-param name="class">en</xsl:with-param>
309 </xsl:call-template>
310 <xsl:if test="not(@presence)">
311 <xsl:apply-templates/>
312 </xsl:if>
313 </DIV>
314 </xsl:template>
317 <!-- method -->
318 <xsl:template match="methods">
319 <xsl:apply-templates select="method">
320 <xsl:sort select="@name"/>
321 </xsl:apply-templates>
322 </xsl:template>
324 <xsl:template match="method[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
325 <DIV>
326 <xsl:call-template name="ELEMENT">
327 <xsl:with-param name="class">m</xsl:with-param>
328 </xsl:call-template>
329 <xsl:if test="not(@presence)">
330 <xsl:apply-templates/>
331 </xsl:if>
332 </DIV>
333 </xsl:template>
336 <!-- property -->
337 <xsl:template match="properties">
338 <xsl:apply-templates select="property">
339 <xsl:sort select="@name"/>
340 </xsl:apply-templates>
341 </xsl:template>
343 <xsl:template match="property[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
344 <DIV>
345 <xsl:call-template name="ELEMENT">
346 <xsl:with-param name="class">p</xsl:with-param>
347 </xsl:call-template>
348 <xsl:if test="not(@presence)">
349 <xsl:apply-templates/>
350 </xsl:if>
351 </DIV>
352 </xsl:template>
355 <!-- event -->
356 <xsl:template match="events">
357 <xsl:apply-templates select="event">
358 <xsl:sort select="@name"/>
359 </xsl:apply-templates>
360 </xsl:template>
362 <xsl:template match="event[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
363 <DIV>
364 <xsl:call-template name="ELEMENT">
365 <xsl:with-param name="class">e</xsl:with-param>
366 </xsl:call-template>
367 <xsl:if test="not(@presence)">
368 <xsl:apply-templates/>
369 </xsl:if>
370 </DIV>
371 </xsl:template>
374 <!-- constructor -->
375 <xsl:template match="constructors">
376 <xsl:apply-templates select="constructor">
377 <xsl:sort select="@name"/>
378 </xsl:apply-templates>
379 </xsl:template>
381 <xsl:template match="constructor[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
382 <DIV>
383 <xsl:call-template name="ELEMENT">
384 <xsl:with-param name="class">x</xsl:with-param>
385 <xsl:with-param name="image">m</xsl:with-param>
386 </xsl:call-template>
387 <xsl:if test="not(@presence)">
388 <xsl:apply-templates/>
389 </xsl:if>
390 </DIV>
391 </xsl:template>
394 <!-- field -->
395 <xsl:template match="fields">
396 <xsl:apply-templates select="field">
397 <xsl:sort select="@name"/>
398 </xsl:apply-templates>
399 </xsl:template>
401 <xsl:template match="field[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
402 <DIV>
403 <xsl:call-template name="ELEMENT">
404 <xsl:with-param name="class">f</xsl:with-param>
405 </xsl:call-template>
406 <xsl:if test="not(@presence)">
407 <xsl:apply-templates/>
408 </xsl:if>
409 </DIV>
410 </xsl:template>
412 <!-- accessor -->
413 <xsl:template match="property/methods">
414 <xsl:apply-templates select="method">
415 <xsl:sort select="@name"/>
416 </xsl:apply-templates>
417 </xsl:template>
419 <xsl:template match="property[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]/methods/method[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
420 <DIV>
421 <xsl:call-template name="ELEMENT">
422 <xsl:with-param name="class">o</xsl:with-param>
423 <xsl:with-param name="image">m</xsl:with-param>
424 </xsl:call-template>
425 <xsl:if test="not(@presence)">
426 <xsl:apply-templates/>
427 </xsl:if>
428 </DIV>
429 </xsl:template>
432 <!-- attribute -->
433 <xsl:template match="attributes">
434 <xsl:apply-templates select="attribute">
435 <xsl:sort select="@name"/>
436 </xsl:apply-templates>
437 </xsl:template>
439 <xsl:template match="attribute[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
440 <DIV>
441 <xsl:call-template name="ELEMENT">
442 <xsl:with-param name="class">r</xsl:with-param>
443 </xsl:call-template>
444 <xsl:if test="not(@presence)">
445 <xsl:apply-templates/>
446 </xsl:if>
447 </DIV>
448 </xsl:template>
452 <!-- support templates -->
454 <xsl:template name="ELEMENT">
455 <xsl:param name="class"/>
456 <xsl:param name="image"/>
457 <xsl:attribute name="class">
458 <xsl:value-of select="$class"/>
459 <xsl:if test="./node() and local-name() != 'assembly'">_</xsl:if>
460 </xsl:attribute>
461 <xsl:call-template name="toggle"/>
462 <xsl:choose>
463 <xsl:when test="@error and @error != 'todo'">
464 <xsl:element name="img">
465 <xsl:attribute name="src">cm/se.gif</xsl:attribute>
466 <xsl:attribute name="class">t</xsl:attribute>
467 <xsl:attribute name="title"><xsl:call-template name="warning-hover" /></xsl:attribute>
468 </xsl:element>
469 </xsl:when>
470 <xsl:when test="@error = 'todo'">
471 <xsl:element name="img">
472 <xsl:attribute name="src">cm/st.gif</xsl:attribute>
473 <xsl:attribute name="class">t</xsl:attribute>
474 <xsl:if test="@comment">
475 <xsl:attribute name="title"><xsl:value-of select="@comment"/></xsl:attribute>
476 </xsl:if>
477 <xsl:if test="not(@comment)">
478 <xsl:attribute name="title">No TODO description</xsl:attribute>
479 </xsl:if>
480 </xsl:element>
481 </xsl:when>
482 <xsl:when test="@presence = 'missing'">
483 <img src="cm/sm.gif" class="t"/>
484 </xsl:when>
485 <xsl:when test="@presence = 'extra'">
486 <img src="cm/sx.gif" class="t"/>
487 </xsl:when>
488 <xsl:otherwise>
489 <img src="cm/sc.gif" class="t"/>
490 </xsl:otherwise>
491 </xsl:choose>
492 <xsl:choose>
493 <xsl:when test="$image">
494 <img src="cm/{$image}.gif" class="t"/>
495 </xsl:when>
496 <xsl:otherwise>
497 <img src="cm/{$class}.gif" class="t"/>
498 </xsl:otherwise>
499 </xsl:choose>
500 <xsl:call-template name="name"/>
501 <xsl:if test="not(@presence)">
502 <xsl:call-template name="status"/>
503 </xsl:if>
504 </xsl:template>
506 <xsl:template name="status">
507 <xsl:if test="@complete_total and @complete_total != 0">
508 <SPAN class="st">
509 <img src="cm/sc.gif"/>
510 <xsl:text>: </xsl:text>
511 <xsl:value-of select="@complete_total"/>
512 <xsl:text>%</xsl:text>
513 </SPAN>
514 </xsl:if>
515 <xsl:if test="@todo_total">
516 <SPAN class="st">
517 <img src="cm/st.gif"/>: <xsl:value-of select="@todo_total"/>
518 </SPAN>
519 </xsl:if>
520 <xsl:if test="@missing_total">
521 <SPAN class="st">
522 <img src="cm/sm.gif"/>: <xsl:value-of select="@missing_total"/>
523 </SPAN>
524 </xsl:if>
525 <xsl:if test="@extra_total">
526 <SPAN class="st">
527 <img src="cm/sx.gif"/>: <xsl:value-of select="@extra_total"/>
528 </SPAN>
529 </xsl:if>
530 <xsl:if test="@warning_total">
531 <SPAN class="st">
532 <img src="cm/se.gif"/>: <xsl:value-of select="@warning_total"/>
533 </SPAN>
534 </xsl:if>
535 </xsl:template>
537 <xsl:template name="toggle">
538 <xsl:choose>
539 <xsl:when test="not(@presence) and .//*[@missing_total or @todo_total or @extra_total or @warning_total or @error or @presence]">
540 <xsl:choose>
541 <xsl:when test="local-name() != 'assembly'">
542 <img src="cm/tp.gif" class="t"/>
543 </xsl:when>
544 <xsl:otherwise>
545 <img src="cm/tm.gif" class="t"/>
546 </xsl:otherwise>
547 </xsl:choose>
548 </xsl:when>
549 <xsl:otherwise>
550 <img src="cm/tb.gif"/>
551 </xsl:otherwise>
552 </xsl:choose>
553 </xsl:template>
555 <xsl:template name="name">
556 <xsl:if test="@name">
557 <SPAN class="l"><xsl:value-of select="@name"/></SPAN>
558 </xsl:if>
559 </xsl:template>
561 <xsl:template name="warning-hover">
562 <xsl:for-each select="warnings/warning">
563 <xsl:text>WARNING: </xsl:text>
564 <xsl:value-of select="@text"/>
565 </xsl:for-each>
566 </xsl:template>
568 </xsl:stylesheet>