#[cfg(doc)]
use crate::Machine;
use log::error;
use std::fmt::Display;
use vbox_raw::sys_lib as raw;
#[derive(Debug, Copy, Clone)]
pub enum CloneMode {
MachineState,
MachineAndChildStates,
AllStates,
}
impl From<u32> for CloneMode {
fn from(value: u32) -> Self {
match value {
raw::CloneMode_CloneMode_MachineState => CloneMode::MachineState,
raw::CloneMode_CloneMode_MachineAndChildStates => CloneMode::MachineAndChildStates,
raw::CloneMode_CloneMode_AllStates => CloneMode::AllStates,
_ => {
error!("Unknown CloneMode. CloneMode: {}", value);
CloneMode::MachineState
}
}
}
}
impl Into<u32> for CloneMode {
fn into(self) -> u32 {
match self {
CloneMode::MachineState => raw::CloneMode_CloneMode_MachineState,
CloneMode::MachineAndChildStates => raw::CloneMode_CloneMode_MachineAndChildStates,
CloneMode::AllStates => raw::CloneMode_CloneMode_AllStates,
}
}
}
impl Display for CloneMode {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", format!("{:?}", self))
}
}