kittycad_execution_plan/
constants.rs

1use crate::Memory;
2use kittycad_execution_plan_traits::{Address, NumericPrimitive, Primitive};
3
4// Rust thinks this is dead-code but it will absolutely be used by consumers and
5// it is in fact used in tests.
6
7/// Define E
8pub const E: Primitive = Primitive::NumericValue(NumericPrimitive::Float(std::f64::consts::E));
9
10/// Define PI
11pub const PI: Primitive = Primitive::NumericValue(NumericPrimitive::Float(std::f64::consts::PI));
12
13/// Define new constant values.
14pub fn value(mem: &mut Memory, value: Primitive) -> Address {
15    let mut next_address = Address(0);
16    if let Some(address) = mem.next_empty_cell() {
17        next_address = Address(address);
18    }
19    mem.set(next_address, value);
20    next_address
21}