#include "stmdsp.hpp" #include "exprtk.hpp" #include <algorithm> #include <string_view> #include <vector> std::vector<stmdsp::dacsample_t> deviceGenLoadFormulaEval(const std::string_view formulaString) { double x = 0; exprtk::symbol_table<double> symbol_table; exprtk::expression<double> expression; exprtk::parser<double> parser; symbol_table.add_variable("x", x); symbol_table.add_constants(); expression.register_symbol_table(symbol_table); parser.compile(std::string(formulaString), expression); std::vector<stmdsp::dacsample_t> samples (stmdsp::SAMPLES_MAX); std::generate(samples.begin(), samples.end(), [&] { ++x; return static_cast<stmdsp::dacsample_t>(expression.value()); }); return samples; }