formualizer_eval/engine/
named_range.rs1use formualizer_parse::ASTNode;
2#[cfg(any(test, feature = "legacy_oracle"))]
3use rustc_hash::FxHashSet;
4
5use formualizer_common::LiteralValue;
6
7use crate::{CellRef, RangeRef, SheetId, engine::VertexId, reference::SharedRangeRef};
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
11pub enum NameScope {
12 Workbook,
14 Sheet(SheetId),
16}
17
18#[derive(Debug, Clone, PartialEq)]
20#[allow(clippy::large_enum_variant)]
21pub enum NamedDefinition {
22 Cell(CellRef),
24 Range(RangeRef),
26 Literal(LiteralValue),
28 Formula {
30 ast: ASTNode,
31 dependencies: Vec<VertexId>,
33 range_deps: Vec<SharedRangeRef<'static>>,
35 },
36}
37
38#[derive(Debug, Clone)]
40pub struct NamedRange {
41 pub definition: NamedDefinition,
42 pub scope: NameScope,
43 #[cfg(any(test, feature = "legacy_oracle"))]
48 pub dependents: FxHashSet<VertexId>,
49 pub vertex: VertexId,
51}
52
53#[derive(Debug, Clone, PartialEq)]
55pub struct NamedRangeSnapshot {
56 pub name: String,
57 pub scope: NameScope,
58 pub definition: NamedDefinition,
59}