dust-bunny/src/types.rs

67 lines
1.2 KiB
Rust

#[derive(Copy, Clone, Debug, Hash, Eq, PartialEq)]
pub enum PrimitiveKind {
U8,
U16,
U32,
U64,
I8,
I16,
I32,
I64,
F32,
F64,
}
impl PrimitiveKind {
pub fn size(&self) -> u8 {
use PrimitiveKind::*;
match self {
U8 | I8 => 1,
U16 | I16 => 2,
U32 | I32 | F32 => 4,
U64 | I64 | F64 => 8,
}
}
pub fn is_signed(&self) -> bool {
use PrimitiveKind::*;
match self {
U8 | U16 | U32 | U64 => false,
_ => true,
}
}
}
#[derive(Clone, Debug, PartialEq)]
pub enum PrimitiveValue {
U8(u8),
U16(u16),
U32(u32),
U64(u64),
I8(i8),
I16(i16),
I32(i32),
I64(i64),
F32(f32),
F64(f64),
}
impl PrimitiveValue {
pub fn kind(&self) -> PrimitiveKind {
use PrimitiveKind as Kind;
use PrimitiveValue::*;
match self {
U8(_) => Kind::U8,
U16(_) => Kind::U16,
U32(_) => Kind::U32,
U64(_) => Kind::U64,
I8(_) => Kind::I8,
I16(_) => Kind::I16,
I32(_) => Kind::I32,
I64(_) => Kind::I64,
F32(_) => Kind::F32,
F64(_) => Kind::F64,
}
}
}