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::expr {
7
8class CompiledScript;
9class ExpressionContext;
10
21{
22 public:
23 static ExpressionEngine& instance();
24
28 bool evalFloat(
29 const String& expression,
30 const ExpressionContext* context,
31 floatT& result,
32 String& error
33 );
34
38 bool evalInt(
39 const String& expression,
40 const ExpressionContext* context,
41 intT& result,
42 String& error
43 );
44
48 bool evalString(
49 const String& expression,
50 const ExpressionContext* context,
51 String& result,
52 String& error
53 );
54
55 ExpressionEngine(const ExpressionEngine&) = delete;
56 ExpressionEngine& operator=(const ExpressionEngine&) = delete;
57
58 private:
59 ExpressionEngine() = default;
60 std::shared_ptr<CompiledScript> compileCached_(const String& source, String& error);
61
62 std::unordered_map<String, std::shared_ptr<CompiledScript>> cache_;
63};
64
65} // namespace enzo::expr
Basic attribute, parameter, and node types for Enzo.
The world a single expression evaluation reads and writes to.
Definition ExpressionContext.h:21
Evaluator for parameter expressions written in daslang.
Definition ExpressionEngine.h:21
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