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 }