#[derive(Copy, Clone, Eq, PartialEq, Hash, Ord, PartialOrd)]
#[allow(non_camel_case_types)]
pub struct IMAGE_FILE_MACHINE(pub u16);
impl IMAGE_FILE_MACHINE {
pub const IMAGE_FILE_MACHINE_UNKNOWN: Self = Self(0);
pub const IMAGE_FILE_MACHINE_TARGET_HOST: Self = Self(0x0001);
pub const IMAGE_FILE_MACHINE_I386: Self = Self(0x014c);
pub const IMAGE_FILE_MACHINE_R3000: Self = Self(0x0162);
pub const IMAGE_FILE_MACHINE_R4000: Self = Self(0x0166);
pub const IMAGE_FILE_MACHINE_R10000: Self = Self(0x0168);
pub const IMAGE_FILE_MACHINE_WCEMIPSV2: Self = Self(0x0169);
pub const IMAGE_FILE_MACHINE_ALPHA: Self = Self(0x0184);
pub const IMAGE_FILE_MACHINE_SH3: Self = Self(0x01a2);
pub const IMAGE_FILE_MACHINE_SH3DSP: Self = Self(0x01a3);
pub const IMAGE_FILE_MACHINE_SH3E: Self = Self(0x01a4);
pub const IMAGE_FILE_MACHINE_SH4: Self = Self(0x01a6);
pub const IMAGE_FILE_MACHINE_SH5: Self = Self(0x01a8);
pub const IMAGE_FILE_MACHINE_ARM: Self = Self(0x01c0);
pub const IMAGE_FILE_MACHINE_THUMB: Self = Self(0x01c2);
pub const IMAGE_FILE_MACHINE_ARMNT: Self = Self(0x01c4);
pub const IMAGE_FILE_MACHINE_AM33: Self = Self(0x01d3);
pub const IMAGE_FILE_MACHINE_POWERPC: Self = Self(0x01F0);
pub const IMAGE_FILE_MACHINE_POWERPCFP: Self = Self(0x01f1);
pub const IMAGE_FILE_MACHINE_IA64: Self = Self(0x0200);
pub const IMAGE_FILE_MACHINE_MIPS16: Self = Self(0x0266);
pub const IMAGE_FILE_MACHINE_ALPHA64: Self = Self(0x0284);
pub const IMAGE_FILE_MACHINE_MIPSFPU: Self = Self(0x0366);
pub const IMAGE_FILE_MACHINE_MIPSFPU16: Self = Self(0x0466);
pub const IMAGE_FILE_MACHINE_AXP64: Self = Self::IMAGE_FILE_MACHINE_ALPHA64;
pub const IMAGE_FILE_MACHINE_TRICORE: Self = Self(0x0520);
pub const IMAGE_FILE_MACHINE_CEF: Self = Self(0x0CEF);
pub const IMAGE_FILE_MACHINE_EBC: Self = Self(0x0EBC);
pub const IMAGE_FILE_MACHINE_AMD64: Self = Self(0x8664);
pub const IMAGE_FILE_MACHINE_M32R: Self = Self(0x9041);
pub const IMAGE_FILE_MACHINE_ARM64: Self = Self(0xAA64);
pub const IMAGE_FILE_MACHINE_CEE: Self = Self(0xC0EE);
pub fn to_str_opt(self) -> Option<&'static str> {
Some(match self.0 {
0x0000 => "IMAGE_FILE_MACHINE_UNKNOWN",
0x0001 => "IMAGE_FILE_MACHINE_TARGET_HOST",
0x014c => "IMAGE_FILE_MACHINE_I386",
0x0162 => "IMAGE_FILE_MACHINE_R3000",
0x0166 => "IMAGE_FILE_MACHINE_R4000",
0x0168 => "IMAGE_FILE_MACHINE_R10000",
0x0169 => "IMAGE_FILE_MACHINE_WCEMIPSV2",
0x0184 => "IMAGE_FILE_MACHINE_ALPHA",
0x01a2 => "IMAGE_FILE_MACHINE_SH3",
0x01a3 => "IMAGE_FILE_MACHINE_SH3DSP",
0x01a4 => "IMAGE_FILE_MACHINE_SH3E",
0x01a6 => "IMAGE_FILE_MACHINE_SH4",
0x01a8 => "IMAGE_FILE_MACHINE_SH5",
0x01c0 => "IMAGE_FILE_MACHINE_ARM",
0x01c2 => "IMAGE_FILE_MACHINE_THUMB",
0x01c4 => "IMAGE_FILE_MACHINE_ARMNT",
0x01d3 => "IMAGE_FILE_MACHINE_AM33",
0x01F0 => "IMAGE_FILE_MACHINE_POWERPC",
0x01f1 => "IMAGE_FILE_MACHINE_POWERPCFP",
0x0200 => "IMAGE_FILE_MACHINE_IA64",
0x0266 => "IMAGE_FILE_MACHINE_MIPS16",
0x0284 => "IMAGE_FILE_MACHINE_ALPHA64",
0x0366 => "IMAGE_FILE_MACHINE_MIPSFPU",
0x0466 => "IMAGE_FILE_MACHINE_MIPSFPU16",
0x0520 => "IMAGE_FILE_MACHINE_TRICORE",
0x0CEF => "IMAGE_FILE_MACHINE_CEF",
0x0EBC => "IMAGE_FILE_MACHINE_EBC",
0x8664 => "IMAGE_FILE_MACHINE_AMD64",
0x9041 => "IMAGE_FILE_MACHINE_M32R",
0xAA64 => "IMAGE_FILE_MACHINE_ARM64",
0xC0EE => "IMAGE_FILE_MACHINE_CEE",
_ => return None,
})
}
pub fn to_str(self) -> &'static str {
self.to_str_opt().unwrap_or("??")
}
}
impl core::fmt::Debug for IMAGE_FILE_MACHINE {
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
if let Some(s) = self.to_str_opt() {
f.write_str(s)
} else {
write!(f, "??0x{:x}", self.0)
}
}
}