use string_interner::symbol::SymbolU32;
use crate::v7400::object::ObjectId;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub(crate) struct ObjectClassSym(SymbolU32);
impl string_interner::Symbol for ObjectClassSym {
fn try_from_usize(v: usize) -> Option<Self> {
SymbolU32::try_from_usize(v).map(Self)
}
fn to_usize(self) -> usize {
self.0.to_usize()
}
}
#[derive(Debug, Clone)]
pub(crate) struct ObjectMeta {
id: ObjectId,
name: Option<String>,
class: ObjectClassSym,
subclass: ObjectClassSym,
}
impl ObjectMeta {
pub(crate) fn new(
id: ObjectId,
name: Option<String>,
class: ObjectClassSym,
subclass: ObjectClassSym,
) -> Self {
Self {
id,
name,
class,
subclass,
}
}
pub(crate) fn object_id(&self) -> ObjectId {
self.id
}
pub(crate) fn name(&self) -> Option<&str> {
self.name.as_deref()
}
pub(crate) fn class_sym(&self) -> ObjectClassSym {
self.class
}
pub(crate) fn subclass_sym(&self) -> ObjectClassSym {
self.subclass
}
}