use crate::generated::binding::*;
use crate::util::c_char_slice_to_string;
use std::fmt::Display;
pub(crate) fn new_version_info(raw: FuriosaSmiVersion) -> VersionInfo {
VersionInfo { raw }
}
#[derive(Debug)]
pub struct VersionInfo {
raw: FuriosaSmiVersion,
}
impl VersionInfo {
pub fn major(&self) -> u32 {
self.raw.major
}
pub fn minor(&self) -> u32 {
self.raw.minor
}
pub fn patch(&self) -> u32 {
self.raw.patch
}
pub fn metadata(&self) -> String {
c_char_slice_to_string(&self.raw.metadata)
}
}
impl Display for VersionInfo {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}.{}.{}+{}",
self.major(),
self.minor(),
self.patch(),
self.metadata()
)
}
}