ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/RomCheater/trunk/RomCheater.Core/ProcessorAssemblyArchitecture.cs
Revision: 124
Committed: Fri May 11 10:58:42 2012 UTC (11 years, 6 months ago) by william
File size: 3352 byte(s)
Log Message:

File Contents

# Content
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace System.Reflection
7 {
8
9
10 [AttributeUsage(AttributeTargets.Assembly)]
11 public class ProcessorAssemblyArchitecture : Attribute
12 {
13 public ProcessorAssemblyArchitecture() { Architecture = Undefined; }
14 public ProcessorAssemblyArchitecture(string arch)
15 {
16 Type t = typeof(ProcessorAssemblyArchitecture);
17 FieldInfo[] fields = t.GetFields(BindingFlags.Public | BindingFlags.Static);
18
19 bool found = false;
20 foreach (FieldInfo field in fields)
21 {
22 string o = field.GetValue(null).ToString();
23 if (arch == o)
24 {
25 found = true;
26 break;
27 }
28 }
29 if (!found) { Architecture = Undefined; }
30 else { Architecture = arch; }
31 }
32 string _Architecture;
33 public string Architecture { get { return _Architecture; } private set { _Architecture = value; } }
34 #region processor architecture
35 /// <summary>
36 /// Represents an undefined processor arcitecture
37 /// </summary>
38 public const string Undefined = "Undefined";
39 /// <summary>
40 /// Represents a 32-bit processor arcitecture
41 /// </summary>
42 public const string x86 = "x86";
43 /// <summary>
44 /// Represents a 64-bit processor arcitecture
45 /// </summary>
46 public const string x64 = "x64";
47 /// <summary>
48 /// Represents a 64-bit processor arcitecture (this is equivalent to x64, this is just Amd's nameing convention)
49 /// </summary>
50 public const string Amd64 = x64;
51 /// <summary>
52 /// Represents am Itanium 64-bit processor arcitecture
53 /// </summary>
54 public const string Ia64 = "Ia64";
55 /// <summary>
56 /// Represents a 32-bit and 64-bit processor arcitecture (it will run in 32-bit mode for 32-bit systems and 64-bit for non-32bit systems)
57 /// </summary>
58 public const string AnyCpu = "AnyCpu";
59 /// <summary>
60 /// Represents a 32-bit and 64-bit processor arcitecture (refered to as AnyCpu)
61 /// </summary>
62 public const string Msil = AnyCpu;
63 #endregion
64
65 public static string GetProcessorArchitecture(Assembly t)
66 {
67 string assembly_arch = Undefined;
68
69 // get architecture
70 ProcessorArchitecture o = t.GetName().ProcessorArchitecture;
71 if (o == ProcessorArchitecture.None)
72 assembly_arch = Undefined;
73
74 switch (o)
75 {
76 case ProcessorArchitecture.Amd64: assembly_arch = Amd64; break;
77 case ProcessorArchitecture.IA64: assembly_arch = Ia64; break;
78 case ProcessorArchitecture.MSIL: assembly_arch = AnyCpu; break;
79 case ProcessorArchitecture.X86: assembly_arch = x86; break;
80 case ProcessorArchitecture.None: break;
81 default: assembly_arch = Undefined; break;
82 }
83
84 return assembly_arch;
85 }
86
87 }
88 }
89