#[cfg(doc)]
use crate::Appliance;
use log::error;
use std::fmt::Display;
use vbox_raw::sys_lib as raw;
#[derive(Debug, Copy, Clone)]
pub enum ExportOptions {
CreateManifest,
ExportDVDImages,
StripAllMACs,
StripAllNonNATMACs,
}
impl From<u32> for ExportOptions {
fn from(value: u32) -> Self {
match value {
raw::ExportOptions_ExportOptions_CreateManifest => ExportOptions::CreateManifest,
raw::ExportOptions_ExportOptions_ExportDVDImages => ExportOptions::ExportDVDImages,
raw::ExportOptions_ExportOptions_StripAllMACs => ExportOptions::StripAllMACs,
raw::ExportOptions_ExportOptions_StripAllNonNATMACs => {
ExportOptions::StripAllNonNATMACs
}
_ => {
error!("Unknown ExportOptions. Flag: {}", value);
ExportOptions::CreateManifest
}
}
}
}
impl Into<u32> for ExportOptions {
fn into(self) -> u32 {
match self {
ExportOptions::CreateManifest => raw::ExportOptions_ExportOptions_CreateManifest,
ExportOptions::ExportDVDImages => raw::ExportOptions_ExportOptions_ExportDVDImages,
ExportOptions::StripAllMACs => raw::ExportOptions_ExportOptions_StripAllMACs,
ExportOptions::StripAllNonNATMACs => {
raw::ExportOptions_ExportOptions_StripAllNonNATMACs
}
}
}
}
impl Display for ExportOptions {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", format!("{:?}", self))
}
}