pub const TYPE_VOID: u16 = 0;
pub const TYPE_NODE: u16 = 1;
pub const TYPE_STRING: u16 = 2;
pub const TYPE_CUSTOM_START: u16 = 3;
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
#[repr(u16)]
pub enum PrimitiveType {
Void = TYPE_VOID,
Node = TYPE_NODE,
String = TYPE_STRING,
}
impl PrimitiveType {
#[inline]
pub fn from_index(index: u16) -> Option<Self> {
match index {
TYPE_VOID => Some(Self::Void),
TYPE_NODE => Some(Self::Node),
TYPE_STRING => Some(Self::String),
_ => None,
}
}
#[inline]
pub const fn index(self) -> u16 {
self as u16
}
#[inline]
pub fn is_builtin(index: u16) -> bool {
index <= TYPE_STRING
}
pub const fn name(self) -> &'static str {
match self {
Self::Void => "Void",
Self::Node => "Node",
Self::String => "String",
}
}
}