Skip to main content

oak_vampire/parser/
element_type.rs

1use oak_core::ElementType;
2
3/// Vampire element types.
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6pub enum VampireElementType {
7    /// Root element.
8    Root,
9}
10
11impl ElementType for VampireElementType {
12    type Role = oak_core::UniversalElementRole;
13
14    fn role(&self) -> Self::Role {
15        match self {
16            VampireElementType::Root => oak_core::UniversalElementRole::Root,
17        }
18    }
19}
20
21impl From<crate::lexer::token_type::VampireTokenType> for VampireElementType {
22    fn from(_: crate::lexer::token_type::VampireTokenType) -> Self {
23        VampireElementType::Root
24    }
25}
26
27impl From<VampireElementType> for u16 {
28    fn from(t: VampireElementType) -> u16 {
29        t as u16
30    }
31}
32
33impl From<u16> for VampireElementType {
34    fn from(i: u16) -> Self {
35        match i {
36            0 => VampireElementType::Root,
37            _ => VampireElementType::Root, // Fallback
38        }
39    }
40}