1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
using System;
class X {
static void w (string s)
{
Console.WriteLine ("\t" + s);
}
static void Main ()
{
object [,] names =
{ { "Byte", "byte" },
{ "SByte", "sbyte" },
{ "Short", "short" },
{ "UShort", "ushort" },
{ "Int", "int32" },
{ "UInt", "uint32" },
{ "Long", "int64" },
{ "ULong", "uint64" },
{ "Float", "float" },
{ "Double", "double" },
{ null, null }
};
for (int i = 0; names [i,0] != null; i++){
string big = names [i, 0] + "Constant";
string small = "TypeManager." + names [i, 1] + "_type";
string nat = ((string) names [i,0]).ToLower ();
w ("\t\tif (expr is " + big + "){");
w ("\t\t\t" + nat + " v = ((" + big + ") expr).Value;");
w ("");
for (int j = 0; names [j,0] != null; j++){
string b = names [j, 0] + "Constant";
string s = "TypeManager." + names [j, 1] + "_type";
string n = ((string) names [j,0]).ToLower ();
if (i == j)
continue;
w ("\t\t\tif (target_type == " + s + ")");
w ("\t\t\t\treturn new " + b + " ((" + n + ") v);");
}
w ("\t\t}");
}
}
}
|