oak_valkyrie/ast/
root_nodes.rs1use super::Item;
2
3pub type Span = oak_core::Range<usize>;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
8#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9pub enum LoopKind {
10 #[default]
12 Loop,
13 For,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
19#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
20pub enum StructureKind {
21 #[default]
23 Class,
24 Struct,
26 Structure,
28 Widget,
30 Trait,
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
36#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
37pub enum EnumsKind {
38 #[default]
40 Enums,
41 Enum,
43 Unity,
45}
46
47#[derive(Debug, Clone, PartialEq, Eq, Hash)]
49#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
50pub struct Identifier {
51 pub name: String,
53 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
55 pub span: Span,
56}
57
58impl Default for Identifier {
59 fn default() -> Self {
60 Self { name: String::new(), span: Span::default() }
61 }
62}
63
64#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)]
66#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
67pub struct NamePath {
68 pub parts: Vec<Identifier>,
70 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
72 pub span: Span,
73}
74
75#[derive(Debug, Clone, PartialEq, Eq, Hash)]
77#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
78pub struct ValkyrieRoot {
79 pub items: Vec<Item>,
81}