earley_omnitool/forest/
node_handle.rs1use cfg::Symbol;
2
3#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug)]
4pub struct NodeHandle(pub(crate) u32);
5
6pub(super) const NULL_HANDLE: NodeHandle = NodeHandle(0xFFFF_FFFF);
7
8impl NodeHandle {
9 #[inline]
10 pub(super) fn nulling(symbol: Symbol) -> Self {
11 NodeHandle(symbol.usize() as u32)
12 }
13
14 #[inline]
15 pub(super) fn usize(self) -> usize {
16 self.0 as usize
17 }
18
19 #[inline]
20 pub(super) fn to_option(self) -> Option<NodeHandle> {
21 if self == NULL_HANDLE {
22 None
23 } else {
24 Some(self)
25 }
26 }
27}