Mercurial > projects > dil
comparison trunk/src/TypeRules.d @ 800:dcd30b0ba711
Added --xml option to command 'ddoc'.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Sat, 01 Mar 2008 17:58:23 +0100 |
parents | 05dfe88dd3bb |
children | f51305056196 |
comparison
equal
deleted
inserted
replaced
799:fd719161e743 | 800:dcd30b0ba711 |
---|---|
29 "float", "double", "real", | 29 "float", "double", "real", |
30 "ifloat", "idouble", "ireal", | 30 "ifloat", "idouble", "ireal", |
31 "cfloat", "cdouble", "creal"/+, "void"+/ | 31 "cfloat", "cdouble", "creal"/+, "void"+/ |
32 ]; | 32 ]; |
33 | 33 |
34 static const string[] unaExpressions = [ | 34 static const string[] unaryExpressions = [ |
35 "!x", | 35 "!x", |
36 "&x", | 36 "&x", |
37 "~x", | 37 "~x", |
38 "+x", | 38 "+x", |
39 "-x", | 39 "-x", |
41 "--x", | 41 "--x", |
42 "x++", | 42 "x++", |
43 "x--", | 43 "x--", |
44 ]; | 44 ]; |
45 | 45 |
46 static const string[] binExpressions = [ | 46 static const string[] binaryExpressions = [ |
47 "x!<>=y", | 47 "x!<>=y", |
48 "x!<>y", | 48 "x!<>y", |
49 "x!<=y", | 49 "x!<=y", |
50 "x!<y", | 50 "x!<y", |
51 "x!>=y", | 51 "x!>=y", |
70 "x~=y", | 70 "x~=y", |
71 "x~y", | 71 "x~y", |
72 "x,y" | 72 "x,y" |
73 ]; | 73 ]; |
74 | 74 |
75 char[] genBinExpArray(char[] expression) | 75 char[] genBinaryExpArray(char[] expression) |
76 { | 76 { |
77 char[] result = "[\n"; | 77 char[] result = "[\n"; |
78 foreach (t1; basicTypes) | 78 foreach (t1; basicTypes) |
79 { | 79 { |
80 result ~= "[\n"; | 80 result ~= "[\n"; |
84 result[result.length-1] = ','; // Overwrite last \n. | 84 result[result.length-1] = ','; // Overwrite last \n. |
85 } | 85 } |
86 result[result.length-1] = ']'; // Overwrite last comma. | 86 result[result.length-1] = ']'; // Overwrite last comma. |
87 return result; | 87 return result; |
88 } | 88 } |
89 // pragma(msg, mixin(genBinaryExpArray("x%y")).stringof); | |
89 | 90 |
90 char[] genUnaExpArray(char[] expression) | 91 char[] genBinaryExpsArray() |
92 { | |
93 char[] result = "[\n"; | |
94 foreach (expression; binaryExpressions[0..42]) | |
95 { | |
96 // pragma(msg, "asd"); | |
97 result ~= genBinaryExpArray(expression)/+ ~ ",\n"+/; | |
98 result ~= ",\n"; | |
99 } | |
100 result[result.length-2] = ']'; | |
101 return result; | |
102 } | |
103 | |
104 // pragma(msg, mixin(genBinaryExpsArray()).stringof); | |
105 | |
106 char[] genUnaryExpArray(char[] expression) | |
91 { | 107 { |
92 char[] result = "[\n"; | 108 char[] result = "[\n"; |
93 foreach (t1; basicTypes) | 109 foreach (t1; basicTypes) |
94 result ~= `EType!("`~t1~`", "int", "`~expression~`").result,`\n; | 110 result ~= `EType!("`~t1~`", "int", "`~expression~`").result,`\n; |
95 result[result.length-2] = ']'; // Overwrite last comma. | 111 result[result.length-2] = ']'; // Overwrite last comma. |
96 return result; | 112 return result; |
97 } | 113 } |
98 | 114 |
99 // pragma(msg, mixin(genBinExpArray("x+y")).stringof); | 115 char[] genUnaryExpsArray() |
116 { | |
117 char[] result = "[\n"; | |
118 foreach (expression; unaryExpressions) | |
119 result ~= genUnaryExpArray(expression) ~ ",\n"; | |
120 result[result.length-2] = ']'; | |
121 return result; | |
122 } | |
123 | |
124 // pragma(msg, mixin(genUnaryExpsArray()).stringof); | |
125 | |
126 void genHTMLTypeRulesTables() | |
127 { | |
128 auto unaryExpsResults = mixin(genUnaryExpsArray()); | |
129 // auto binaryExpsResults = mixin(genBinaryExpsArray()); | |
130 | |
131 Stdout( | |
132 `<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">`\n | |
133 `<html>`\n | |
134 `<head>`\n | |
135 ` <meta http-equiv="Content-Type" content="text/html; charset=utf-8">`\n | |
136 ` <link href="" rel="stylesheet" type="text/css">`\n | |
137 `</head>`\n | |
138 `<body>`\n | |
139 ); | |
140 | |
141 Stdout.format("<table>\n<tr><th colspan=\"{}\">Unary Expressions</th></tr>", unaryExpressions.length); | |
142 Stdout("<tr><td><!--typecol--></td>"); | |
143 foreach (unaryExpression; unaryExpressions) | |
144 Stdout.format("<td>{}</td>", unaryExpression); | |
145 Stdout("</tr>\n"); | |
146 foreach (i, basicType; basicTypes) | |
147 { | |
148 Stdout.format("<tr>\n<td>{}</td>", basicType); | |
149 foreach (unaryExpResults; unaryExpsResults) | |
150 { | |
151 assert(unaryExpResults.length == basicTypes.length); | |
152 Stdout.format("<td>{}</td>", unaryExpResults[i]); | |
153 } | |
154 Stdout("\n<tr>\n"); | |
155 } | |
156 Stdout("</table>\n"); | |
157 | |
158 foreach (binaryExpression; binaryExpressions) | |
159 { | |
160 Stdout.format("<table>\n<tr><th colspan=\"{}\">Binary Expression</th></tr>", basicTypes.length); | |
161 Stdout.format("<tr><td>{}</td>", binaryExpression); | |
162 Stdout("\n<tr>\n"); | |
163 foreach (i, basicType; basicTypes) | |
164 { | |
165 Stdout.format("<tr>\n<td>{}</td>", basicType); | |
166 // foreach (basicType; basicTypes) | |
167 { | |
168 } | |
169 Stdout("\n<tr>\n"); | |
170 } | |
171 Stdout("</table>\n"); | |
172 } | |
173 | |
174 Stdout( | |
175 "\n</body>" | |
176 "\n</html>" | |
177 ); | |
178 } |