formualizer_eval/engine/
pass_planner.rs1use crate::engine::cache::CriteriaKey;
4use crate::engine::tuning::WarmupConfig;
5use formualizer_parse::ASTNode;
6use formualizer_parse::parser::ReferenceType;
7
8#[derive(Debug, Clone, Default)]
10pub struct PassWarmupPlan {
11 pub masks: Vec<CriteriaKey>,
12 pub eq_indexes: Vec<IndexKey>,
13 pub range_indexes: Vec<IndexKey>,
14}
15
16#[derive(Debug, Clone, Hash, Eq, PartialEq)]
18pub struct IndexKey {
19 pub sheet_id: u32,
20 pub column: u32,
21}
22
23#[derive(Debug, Clone)]
25pub struct HotCriteria {
26 pub key: CriteriaKey,
27 pub count: usize,
28}
29
30pub struct PassPlanner {
32 config: WarmupConfig,
33}
34
35impl PassPlanner {
36 pub fn new(config: WarmupConfig) -> Self {
37 Self { config }
38 }
39
40 pub fn analyze_targets(&self, _targets: &[&ASTNode]) -> PassWarmupPlan {
42 if !self.config.warmup_enabled {
43 return PassWarmupPlan::default();
44 }
45 PassWarmupPlan {
46 masks: Vec::new(),
47 eq_indexes: Vec::new(),
48 range_indexes: Vec::new(),
49 }
50 }
51
52 pub fn analyze_single(&self, _ast: &ASTNode) -> PassWarmupPlan {
54 if !self.config.warmup_enabled {
55 return PassWarmupPlan::default();
56 }
57 PassWarmupPlan {
58 masks: Vec::new(),
59 eq_indexes: Vec::new(),
60 range_indexes: Vec::new(),
61 }
62 }
63
64 fn collect_references(
66 &self,
67 _ast: &ASTNode,
68 _counts: &mut std::collections::HashMap<String, (usize, usize)>,
69 ) {
70 }
71
72 fn walk_ast(
74 &self,
75 _node: &ASTNode,
76 _counts: &mut std::collections::HashMap<String, (usize, usize)>,
77 ) {
78 }
79
80 fn collect_criteria_from_ifs(&self, _args: &[ASTNode]) {}
82
83 fn estimate_cell_count(&self, _reference: &ReferenceType) -> Option<usize> {
85 Some(0)
86 }
87}