* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / Mono.PEToolkit / build / srcgen / gen-utils.xsl
1 <?xml version="1.0" encoding="iso-8859-1"?>\r
2 \r
3 <!-- -->\r
4 \r
5 \r
6 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\r
7 \r
8 \r
9 <!-- ******************************************************************* -->\r
10 <!-- extracts arg x from expression of from 'f(x)' -->\r
11 <xsl:template name="extract-arg">\r
12         <xsl:param name="expr" select="@type"/>\r
13         <xsl:value-of select="normalize-space(substring-after(substring-before($expr,')'),'('))"/>\r
14 </xsl:template>\r
15 \r
16 \r
17 <!-- ******************************************************************* -->\r
18 <xsl:template name="get-expanded-size">\r
19         <xsl:param name="fields" select="schema/field"/>\r
20 \r
21         <xsl:for-each select="$fields">\r
22                 <xsl:choose>\r
23                         <!-- RVA special case, PE library type -->\r
24                         <xsl:when test="@type = 'RVA'">\r
25                                 <xsl:text>RVA.Size</xsl:text>\r
26                         </xsl:when>\r
27                         <!-- table indices -->\r
28                         <xsl:when test="starts-with(@type,'index') or starts-with(@type,'coded-index')">\r
29                                 <xsl:text>4</xsl:text>\r
30                         </xsl:when>\r
31                         <xsl:otherwise>\r
32                                 <xsl:value-of select="concat('sizeof (', @type, ')')"/>\r
33                         </xsl:otherwise>\r
34                 </xsl:choose>\r
35                 <xsl:if test="position() != last()">\r
36                         <xsl:text> + </xsl:text>\r
37                 </xsl:if>\r
38         </xsl:for-each>\r
39 </xsl:template>\r
40 \r
41 \r
42 \r
43 \r
44 <!-- ******************************************************************* -->\r
45 <xsl:template name="get-field-type">\r
46         <xsl:param name="field" select="."/>\r
47 \r
48         <xsl:choose>\r
49                 <!-- table indices -->\r
50                 <xsl:when test="starts-with($field/@type,'index')">\r
51                         <xsl:text>int</xsl:text>\r
52                 </xsl:when>\r
53                 <!-- coded token -->\r
54                 <xsl:when test="starts-with($field/@type,'coded-index')">\r
55                         <xsl:text>MDToken</xsl:text>\r
56                 </xsl:when>\r
57                 <!-- explicit library type -->\r
58                 <xsl:when test="$field/@cli-type">\r
59                         <xsl:value-of select="$field/@cli-type"/>\r
60                 </xsl:when>\r
61                 <!-- primitive type -->\r
62                 <xsl:otherwise>\r
63                         <xsl:value-of select="$field/@type"/>\r
64                 </xsl:otherwise>\r
65         </xsl:choose>\r
66 </xsl:template>\r
67 \r
68 \r
69 \r
70 \r
71 </xsl:stylesheet>\r
72 \r