Enzo
Loading...
Searching...
No Matches
ExpressionEngine.h
1#pragma once
2#include "Engine/Core/Types.h"
3#include <memory>
4#include <unordered_map>
5
6namespace enzo::daslang {
7class CompiledProgram;
8}
9
10namespace enzo::expr {
11
12class ExpressionContext;
13
24{
25 public:
26 static ExpressionEngine& instance();
27
31 bool evalFloat(
32 const String& expression,
33 const ExpressionContext* context,
34 floatT& result,
35 String& error
36 );
37
41 bool evalInt(
42 const String& expression,
43 const ExpressionContext* context,
44 intT& result,
45 String& error
46 );
47
51 bool evalString(
52 const String& expression,
53 const ExpressionContext* context,
54 String& result,
55 String& error
56 );
57
58 ExpressionEngine(const ExpressionEngine&) = delete;
59 ExpressionEngine& operator=(const ExpressionEngine&) = delete;
60
61 private:
62 ExpressionEngine() = default;
63 std::shared_ptr<daslang::CompiledProgram> compileCached_(const String& source, String& error);
64
65 std::unordered_map<String, std::shared_ptr<daslang::CompiledProgram>> cache_;
66};
67
68} // namespace enzo::expr
Basic attribute, parameter, and node types for Enzo.
The world a single expression evaluation reads and writes to.
Definition ExpressionContext.h:28
Evaluator for parameter expressions written in daslang.
Definition ExpressionEngine.h:24
bool evalFloat(const String &expression, const ExpressionContext *context, floatT &result, String &error)
Evaluates an expression and returns its result as a float.
Definition ExpressionEngine.cpp:44
bool evalString(const String &expression, const ExpressionContext *context, String &result, String &error)
Evaluates an expression and returns its result as a string.
Definition ExpressionEngine.cpp:68
bool evalInt(const String &expression, const ExpressionContext *context, intT &result, String &error)
Evaluates an expression and returns its result as an integer.
Definition ExpressionEngine.cpp:56