use derive_more::Display as DeriveMoreDisplay;
use serde::{Serialize};
use std::collections::BTreeMap;
use crate::structs::CpuInfo;
use crate::structs::OsInfo;
use crate::structs::MemInfo;
use crate::structs::CpuFeaturesInfo;
use crate::error::MacSysInfoError;
#[derive(Debug, Serialize, DeriveMoreDisplay)]
#[display(fmt = "MacSysInfo (\n\
\x20 all_keys: <Map>,\n\
\x20 cpu_info: <CpuInfo>,\n\
\x20 cpu_features: <CpuFeaturesInfo>,\n\
\x20 os_info: <OsInfo>,\n\
\x20 mem_info: <MemoryInfo>,\n\
)")]
pub struct MacSysInfo {
all_keys: BTreeMap<String, String>,
cpu_info: CpuInfo,
cpu_features: CpuFeaturesInfo,
os_info: OsInfo,
mem_info: MemInfo,
}
impl MacSysInfo {
pub(crate) fn new(all_keys: BTreeMap<String, String>) -> Result<Self, MacSysInfoError> {
let x = MacSysInfo {
cpu_info: CpuInfo::new(&all_keys)?,
cpu_features: CpuFeaturesInfo::new(&all_keys)?,
os_info: OsInfo::new(&all_keys)?,
mem_info: MemInfo::new(&all_keys)?,
all_keys,
};
Ok(x)
}
pub fn all_keys(&self) -> &BTreeMap<String, String> {
&self.all_keys
}
pub fn cpu_features(&self) -> &CpuFeaturesInfo {
&self.cpu_features
}
pub fn cpu_info(&self) -> &CpuInfo {
&self.cpu_info
}
pub fn os_info(&self) -> &OsInfo {
&self.os_info
}
pub fn mem_info(&self) -> &MemInfo {
&self.mem_info
}
}