9#include <unordered_map>
27 int sequenceNumber = 0;
36 std::string expressionString;
38 te_expr * expression =
nullptr;
56 const size_t kMaxVariables = 1024;
66 double eval(std::string_view expression,
double defaultValue);
68 Expression * compile(std::string_view expression, std::string_view variable);
71 double update(
const Expression * expression,
double defaultValue);
72 float update(
const Expression * expression,
float defaultValue);
73 int update(
const Expression * expression,
int defaultValue);
74 size_t update(
const Expression * expression,
size_t defaultValue);
76 std::span<const ExpressionVariable> getValues()
const;
77 std::span<ExpressionVariable> getValues();
81 void link(
ExpressionContext * source, std::string_view sourceName, std::string_view destName);
90 std::unordered_map<size_t, Expression> expressions;
91 std::vector<ExpressionVariable> values;
94 std::vector<te_variable> variables;
103 expressionContext(expressionContext),
106 this->expression = expressionContext->compile(expression, name);
111 if (expression && expressionContext) {
112 expressionContext->free(expression);
116 operator T()
const {
return getValue(); }
121 value = expression ? get(T()) : T();
127 T get(T defaultValue)
const
129 return expressionContext->update(expression, defaultValue);
135 bool hasValue =
false;
Contains all Cogs related functionality.
Provides a context for evaluation of expressions.
Defines a single named expression variable.
Defines a string expression, to be parsed and evaluated by an expression context.
Stores the parsed output of a key/value pair.