Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
expression.hpp
Go to the documentation of this file.
1#pragma once
2
3// Expression — simple math expression evaluator.
4// Supports: +, -, *, /, ^, (), variables, and common functions (sin, cos, sqrt, abs, min, max).
5// No external dependencies (no exprtk).
6
7#include <string>
8#include <string_view>
9#include <map>
10#include <optional>
11#include <functional>
12
13namespace pulp::runtime {
14
24std::optional<double> evaluate(std::string_view expression,
25 const std::map<std::string, double>& variables = {});
26
29public:
31
33 void set(std::string_view name, double value);
34
36 std::optional<double> get(std::string_view name) const;
37
39 std::optional<double> evaluate(std::string_view expression) const;
40
42 void register_function(std::string_view name, std::function<double(double)> fn);
43
46
47private:
48 std::map<std::string, double, std::less<>> variables_;
49 std::map<std::string, std::function<double(double)>, std::less<>> custom_functions_;
50};
51
52} // namespace pulp::runtime
std::optional< double > evaluate(std::string_view expression) const
Evaluate an expression using the stored variables.
void register_function(std::string_view name, std::function< double(double)> fn)
Register a custom function (1 argument).
std::optional< double > get(std::string_view name) const
Get a variable value.
void clear_variables()
Clear all variables.
void set(std::string_view name, double value)
Set a variable value.
Definition generated_event_source.hpp:33
std::optional< double > evaluate(std::string_view expression, const std::map< std::string, double > &variables={})
Evaluate a math expression string.