Merge pull request #5567 from kumpera/fix_59334
[mono.git] / mcs / build / corcompare-api.xsl
1 <?xml version="1.0" ?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3
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="*"/>
8
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;
21                                 }
22                                 div.links ul li {
23                                         display: inline;
24                                         padding: 5px;
25                                         }
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>
68
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>
87
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>
138
139                                 </p>
140                         </div>
141                         </body>
142                 </html>
143         </xsl:template>
144
145
146
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>
153
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>
164
165
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>
172
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>
183
184
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>
202
203
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>
218
219
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>
231
232
233
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>
240
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>
251
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>
258
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>
269
270
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>
277
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>
288
289
290
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>
302
303
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>
315
316
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>
323
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>
334
335
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>
342
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>
353
354
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>
361
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>
372
373
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>
380
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>
392
393
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>
400
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>
411
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>
418
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>
430
431
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>
438
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>
449
450
451
452         <!-- support templates -->
453
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>
505
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>
536
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>
554
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>
560
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>
567
568 </xsl:stylesheet>