vegafusion_runtime/expression/compiler/
config.rs1use crate::expression::compiler::call::{default_callables, VegaFusionCallable};
2use crate::task_graph::timezone::RuntimeTzConfig;
3use num_traits::float::FloatConst;
4use std::collections::HashMap;
5use vegafusion_common::data::table::VegaFusionTable;
6use vegafusion_common::datafusion_common::ScalarValue;
7
8#[derive(Clone)]
9pub struct CompilationConfig {
10 pub signal_scope: HashMap<String, ScalarValue>,
11 pub data_scope: HashMap<String, VegaFusionTable>,
12 pub callable_scope: HashMap<String, VegaFusionCallable>,
13 pub constants: HashMap<String, ScalarValue>,
14 pub tz_config: Option<RuntimeTzConfig>,
15}
16
17impl Default for CompilationConfig {
18 fn default() -> Self {
19 Self {
20 signal_scope: Default::default(),
21 data_scope: Default::default(),
22 callable_scope: default_callables(),
23 constants: default_constants(),
24 tz_config: None,
25 }
26 }
27}
28
29fn default_constants() -> HashMap<String, ScalarValue> {
34 let mut constants = HashMap::new();
35
36 constants.insert("NaN".to_string(), ScalarValue::from(f64::NAN));
39
40 constants.insert("E".to_string(), ScalarValue::from(f64::E()));
43
44 constants.insert("LN2".to_string(), ScalarValue::from(f64::LN_2()));
47
48 constants.insert("LN10".to_string(), ScalarValue::from(f64::LN_10()));
51
52 constants.insert("LOG2E".to_string(), ScalarValue::from(f64::LOG2_E()));
55
56 constants.insert("LOG10E".to_string(), ScalarValue::from(f64::LOG10_E()));
59
60 constants.insert("MAX_VALUE".to_string(), ScalarValue::from(f64::MAX));
63
64 constants.insert(
67 "MIN_VALUE".to_string(),
68 ScalarValue::from(f64::MIN_POSITIVE),
69 );
70
71 constants.insert("PI".to_string(), ScalarValue::from(f64::PI()));
74
75 constants.insert(
78 "SQRT1_2".to_string(),
79 ScalarValue::from(f64::FRAC_1_SQRT_2()),
80 );
81
82 constants.insert("SQRT2".to_string(), ScalarValue::from(f64::SQRT_2()));
85
86 constants
87}