use crate::Node;
use super::Parser;
pub type InnerNodeHandle = u32;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(transparent)]
pub struct NodeHandle(InnerNodeHandle);
impl NodeHandle {
#[inline]
pub fn new(node: InnerNodeHandle) -> Self {
NodeHandle(node)
}
pub fn get<'p, 'buf>(&self, parser: &'p Parser<'buf>) -> Option<&'p Node<'buf>> {
parser.resolve_node_id(self.0)
}
pub fn get_mut<'p, 'buf>(&self, parser: &'p mut Parser<'buf>) -> Option<&'p mut Node<'buf>> {
parser.resolve_node_id_mut(self.0)
}
#[inline]
pub fn get_inner(&self) -> InnerNodeHandle {
self.0
}
}