1#[derive(Copy, Clone, Eq, PartialEq, Hash, Ord, PartialOrd)]
2#[allow(non_camel_case_types)]
3pub struct IMAGE_FILE_MACHINE(pub u16);
4
5impl IMAGE_FILE_MACHINE {
6 pub const IMAGE_FILE_MACHINE_UNKNOWN: Self = Self(0);
7 pub const IMAGE_FILE_MACHINE_TARGET_HOST: Self = Self(0x0001);
9 pub const IMAGE_FILE_MACHINE_I386: Self = Self(0x014c);
11 pub const IMAGE_FILE_MACHINE_R3000: Self = Self(0x0162);
13 pub const IMAGE_FILE_MACHINE_R4000: Self = Self(0x0166);
15 pub const IMAGE_FILE_MACHINE_R10000: Self = Self(0x0168);
17 pub const IMAGE_FILE_MACHINE_WCEMIPSV2: Self = Self(0x0169);
19 pub const IMAGE_FILE_MACHINE_ALPHA: Self = Self(0x0184);
21 pub const IMAGE_FILE_MACHINE_SH3: Self = Self(0x01a2);
23 pub const IMAGE_FILE_MACHINE_SH3DSP: Self = Self(0x01a3);
24 pub const IMAGE_FILE_MACHINE_SH3E: Self = Self(0x01a4);
26 pub const IMAGE_FILE_MACHINE_SH4: Self = Self(0x01a6);
28 pub const IMAGE_FILE_MACHINE_SH5: Self = Self(0x01a8);
30 pub const IMAGE_FILE_MACHINE_ARM: Self = Self(0x01c0);
32 pub const IMAGE_FILE_MACHINE_THUMB: Self = Self(0x01c2);
34 pub const IMAGE_FILE_MACHINE_ARMNT: Self = Self(0x01c4);
36 pub const IMAGE_FILE_MACHINE_AM33: Self = Self(0x01d3);
37 pub const IMAGE_FILE_MACHINE_POWERPC: Self = Self(0x01F0);
39 pub const IMAGE_FILE_MACHINE_POWERPCFP: Self = Self(0x01f1);
40 pub const IMAGE_FILE_MACHINE_IA64: Self = Self(0x0200);
42 pub const IMAGE_FILE_MACHINE_MIPS16: Self = Self(0x0266);
44 pub const IMAGE_FILE_MACHINE_ALPHA64: Self = Self(0x0284);
46 pub const IMAGE_FILE_MACHINE_MIPSFPU: Self = Self(0x0366);
48 pub const IMAGE_FILE_MACHINE_MIPSFPU16: Self = Self(0x0466);
50 pub const IMAGE_FILE_MACHINE_AXP64: Self = Self::IMAGE_FILE_MACHINE_ALPHA64;
51 pub const IMAGE_FILE_MACHINE_TRICORE: Self = Self(0x0520);
53 pub const IMAGE_FILE_MACHINE_CEF: Self = Self(0x0CEF);
54 pub const IMAGE_FILE_MACHINE_EBC: Self = Self(0x0EBC);
56 pub const IMAGE_FILE_MACHINE_AMD64: Self = Self(0x8664);
58 pub const IMAGE_FILE_MACHINE_M32R: Self = Self(0x9041);
60 pub const IMAGE_FILE_MACHINE_ARM64: Self = Self(0xAA64);
62 pub const IMAGE_FILE_MACHINE_CEE: Self = Self(0xC0EE);
63
64 pub fn to_str_opt(self) -> Option<&'static str> {
65 Some(match self.0 {
66 0x0000 => "IMAGE_FILE_MACHINE_UNKNOWN",
67 0x0001 => "IMAGE_FILE_MACHINE_TARGET_HOST",
68 0x014c => "IMAGE_FILE_MACHINE_I386",
69 0x0162 => "IMAGE_FILE_MACHINE_R3000",
70 0x0166 => "IMAGE_FILE_MACHINE_R4000",
71 0x0168 => "IMAGE_FILE_MACHINE_R10000",
72 0x0169 => "IMAGE_FILE_MACHINE_WCEMIPSV2",
73 0x0184 => "IMAGE_FILE_MACHINE_ALPHA",
74 0x01a2 => "IMAGE_FILE_MACHINE_SH3",
75 0x01a3 => "IMAGE_FILE_MACHINE_SH3DSP",
76 0x01a4 => "IMAGE_FILE_MACHINE_SH3E",
77 0x01a6 => "IMAGE_FILE_MACHINE_SH4",
78 0x01a8 => "IMAGE_FILE_MACHINE_SH5",
79 0x01c0 => "IMAGE_FILE_MACHINE_ARM",
80 0x01c2 => "IMAGE_FILE_MACHINE_THUMB",
81 0x01c4 => "IMAGE_FILE_MACHINE_ARMNT",
82 0x01d3 => "IMAGE_FILE_MACHINE_AM33",
83 0x01F0 => "IMAGE_FILE_MACHINE_POWERPC",
84 0x01f1 => "IMAGE_FILE_MACHINE_POWERPCFP",
85 0x0200 => "IMAGE_FILE_MACHINE_IA64",
86 0x0266 => "IMAGE_FILE_MACHINE_MIPS16",
87 0x0284 => "IMAGE_FILE_MACHINE_ALPHA64",
88 0x0366 => "IMAGE_FILE_MACHINE_MIPSFPU",
89 0x0466 => "IMAGE_FILE_MACHINE_MIPSFPU16",
90 0x0520 => "IMAGE_FILE_MACHINE_TRICORE",
91 0x0CEF => "IMAGE_FILE_MACHINE_CEF",
92 0x0EBC => "IMAGE_FILE_MACHINE_EBC",
93 0x8664 => "IMAGE_FILE_MACHINE_AMD64",
94 0x9041 => "IMAGE_FILE_MACHINE_M32R",
95 0xAA64 => "IMAGE_FILE_MACHINE_ARM64",
96 0xC0EE => "IMAGE_FILE_MACHINE_CEE",
97 _ => return None,
98 })
99 }
100
101 pub fn to_str(self) -> &'static str {
102 self.to_str_opt().unwrap_or("??")
103 }
104}
105
106impl core::fmt::Debug for IMAGE_FILE_MACHINE {
107 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
108 if let Some(s) = self.to_str_opt() {
109 f.write_str(s)
110 } else {
111 write!(f, "??0x{:x}", self.0)
112 }
113 }
114}