#[cfg(doc)]
use crate::{Medium, MediumFormat};
use log::error;
use std::fmt::Display;
use vbox_raw::sys_lib as raw;
#[derive(Debug, Eq, PartialEq)]
pub enum MediumFormatCapabilities {
Uuid,
CreateFixed,
CreateDynamic,
CreateSplit2G,
Differencing,
Asynchronous,
File,
Properties,
TcpNetworking,
VFS,
Discard,
Preferred,
CapabilityMask,
}
impl Into<u32> for MediumFormatCapabilities {
fn into(self) -> u32 {
match self {
MediumFormatCapabilities::Uuid => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_Uuid
}
MediumFormatCapabilities::CreateFixed => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_CreateFixed
}
MediumFormatCapabilities::CreateDynamic => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_CreateDynamic
}
MediumFormatCapabilities::CreateSplit2G => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_CreateSplit2G
}
MediumFormatCapabilities::Differencing => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_Differencing
}
MediumFormatCapabilities::Asynchronous => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_Asynchronous
}
MediumFormatCapabilities::File => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_File
}
MediumFormatCapabilities::Properties => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_Properties
}
MediumFormatCapabilities::TcpNetworking => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_TcpNetworking
}
MediumFormatCapabilities::VFS => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_VFS
}
MediumFormatCapabilities::Discard => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_Discard
}
MediumFormatCapabilities::Preferred => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_Preferred
}
MediumFormatCapabilities::CapabilityMask => {
raw::MediumFormatCapabilities_MediumFormatCapabilities_CapabilityMask
}
}
}
}
impl From<u32> for MediumFormatCapabilities {
fn from(value: u32) -> Self {
match value {
raw::MediumFormatCapabilities_MediumFormatCapabilities_Uuid => {
MediumFormatCapabilities::Uuid
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_CreateFixed => {
MediumFormatCapabilities::CreateFixed
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_CreateDynamic => {
MediumFormatCapabilities::CreateDynamic
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_CreateSplit2G => {
MediumFormatCapabilities::CreateSplit2G
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_Differencing => {
MediumFormatCapabilities::Differencing
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_Asynchronous => {
MediumFormatCapabilities::Asynchronous
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_File => {
MediumFormatCapabilities::File
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_Properties => {
MediumFormatCapabilities::Properties
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_TcpNetworking => {
MediumFormatCapabilities::TcpNetworking
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_VFS => {
MediumFormatCapabilities::VFS
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_Discard => {
MediumFormatCapabilities::Discard
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_Preferred => {
MediumFormatCapabilities::Preferred
}
raw::MediumFormatCapabilities_MediumFormatCapabilities_CapabilityMask => {
MediumFormatCapabilities::CapabilityMask
}
_ => {
error!("MediumFormatCapabilities::from. Unknown type: {}", value);
MediumFormatCapabilities::Uuid
}
}
}
}
impl Display for MediumFormatCapabilities {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", format!("{:?}", self))
}
}