use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[cfg_attr(feature = "tauri", derive(specta::Type))]
pub enum VariableType {
Char,
Int8,
UInt8,
Int16,
UInt16,
Int32,
UInt32,
Float32,
Float64,
Bool,
BitField,
}
impl VariableType {
pub const fn size(&self) -> usize {
match self {
VariableType::Char | VariableType::Bool => 1,
VariableType::Int8 | VariableType::UInt8 => 1,
VariableType::Int16 | VariableType::UInt16 => 2,
VariableType::Int32
| VariableType::UInt32
| VariableType::Float32
| VariableType::BitField => 4,
VariableType::Float64 => 8,
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "tauri", derive(specta::Type))]
pub enum Value {
Char(u8),
Int8(i8),
UInt8(u8),
Int16(i16),
UInt16(u16),
Int32(i32),
UInt32(u32),
Float32(f32),
Float64(f64),
Bool(bool),
BitField(super::BitField),
Array(Vec<Value>),
}