Skip to main content

luaur_ast/records/
cst_expr_table.rs

1use crate::records::ast_array::AstArray;
2use crate::records::cst_node::CstNode;
3use crate::records::position::Position;
4
5#[repr(C)]
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7#[allow(non_camel_case_types)]
8pub enum CstExprTableSeparator {
9    Comma,
10    Semicolon,
11    Missing,
12}
13
14#[repr(C)]
15#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
16pub struct CstExprTableItem {
17    pub indexer_open_position: Position,
18    pub indexer_close_position: Position,
19    pub equals_position: Position,
20    pub separator: CstExprTableSeparator,
21    pub separator_position: Position,
22}
23
24#[repr(C)]
25#[derive(Debug, Clone)]
26pub struct CstExprTable {
27    pub base: CstNode,
28    pub items: AstArray<CstExprTableItem>,
29}
30
31impl crate::rtti::CstNodeClass for CstExprTable {
32    const CLASS_INDEX: i32 = crate::rtti::ast_rtti_index("CstExprTable");
33}
34
35// C++ nested `CstExprTable::Separator` / `CstExprTable::Item` (Rust has no
36// inherent associated types — these live at module scope).
37pub type Separator = CstExprTableSeparator;
38pub type Item = CstExprTableItem;
39
40#[allow(non_snake_case)]
41impl CstExprTable {
42    pub const Comma: CstExprTableSeparator = CstExprTableSeparator::Comma;
43    pub const Semicolon: CstExprTableSeparator = CstExprTableSeparator::Semicolon;
44    pub const Missing: CstExprTableSeparator = CstExprTableSeparator::Missing;
45}