#[cfg(not(is_v_6_1))]
use log::error;
use std::fmt::Display;
#[cfg(not(is_v_6_1))]
use vbox_raw::sys_lib as raw;
#[derive(Debug, Copy, Clone)]
pub enum CPUArchitecture {
Any,
X86,
AMD64,
ARMv8_32,
ARMv8_64
}
#[cfg(not(is_v_6_1))]
impl From<u32> for CPUArchitecture {
fn from(value: u32) -> Self {
match value {
raw::CPUArchitecture_CPUArchitecture_Any => CPUArchitecture::Any,
raw::CPUArchitecture_CPUArchitecture_x86 => CPUArchitecture::X86,
raw::CPUArchitecture_CPUArchitecture_AMD64 => CPUArchitecture::AMD64,
#[cfg(is_v_7_1_or_newer)]
raw::CPUArchitecture_CPUArchitecture_ARMv8_32 => CPUArchitecture::ARMv8_32,
#[cfg(is_v_7_1_or_newer)]
raw::CPUArchitecture_CPUArchitecture_ARMv8_64 => CPUArchitecture::ARMv8_64,
_ => {
error!("Unknown CPUArchitecture. CPUArchitecture: {}", value);
CPUArchitecture::Any
}
}
}
}
#[cfg(not(is_v_6_1))]
impl Into<u32> for CPUArchitecture {
fn into(self) -> u32 {
match self {
CPUArchitecture::X86 => raw::CPUArchitecture_CPUArchitecture_x86,
CPUArchitecture::AMD64 => raw::CPUArchitecture_CPUArchitecture_AMD64,
#[cfg(is_v_7_1_or_newer)]
CPUArchitecture::ARMv8_32 => raw::CPUArchitecture_CPUArchitecture_ARMv8_32,
#[cfg(is_v_7_1_or_newer)]
CPUArchitecture::ARMv8_64 => raw::CPUArchitecture_CPUArchitecture_ARMv8_64,
_ => raw::CPUArchitecture_CPUArchitecture_Any
}
}
}
#[cfg(is_v_6_1)]
impl From<u32> for CPUArchitecture {
fn from(_value: u32) -> Self {
CPUArchitecture::Any
}
}
#[cfg(is_v_6_1)]
impl Into<u32> for CPUArchitecture {
fn into(self) -> u32 {
0
}
}
impl Display for CPUArchitecture {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", format!("{:?}", self))
}
}