Welcome to mirror list, hosted at ThFree Co, Russian Federation.

sample_cast_const.cs « tools « mcs - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 04969312cde2ba2e18a9c930d12defdb4a8a2790 (plain)
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}");
		}
	}
}