CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
ExpressionEvaluator.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2022 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
11
15
17
19
20#include <functional>
21
23
24 // Constant expression evaluator AST visitor.
25 class ExpressionEvaluator : private Visitor {
26 public:
28
29 private:
31
33
34 bool mThrowOnFailure = true;
35 bool mAbort = false;
36
38
39 public:
40 // Evaluation flags enumeration.
41 enum : UInt32 {
42 // Evaluates only the sub expressions of a BinaryExpression that are necessary (especially for logical AND and OR).
44 };
45
47
48 // Evaluates the specified expression and returns the result as variant, or throws a runtime error on failure.
50
51 // Evaluates the specified expression and returns the result as variant, or returns the default value on failure.
52 Variant evaluateOrDefault(Expression& expression, const Variant& defaultValue = {}, const OnObjectExpressionCallback& onObjectExpressionCallback = nullptr);
53
54 // Abort expression evaluation process.
55 void abort();
56
57 private:
58 void push(const Variant& v);
60
62
65
66 private: // Visitor implementation
82 };
83
84} // namespace CeresEngine::ShaderCompiler
#define DECLARATION_VISIT_PROC(CLASS_NAME)
Definition Visitor.hpp:88
Definition Flags.hpp:235
Definition ExpressionEvaluator.hpp:25
Variant evaluate(Expression &expression, const OnObjectExpressionCallback &onObjectExpressionCallback=nullptr)
void setObjectExpressionCallback(const OnObjectExpressionCallback &callback)
Variant evaluateOrDefault(Expression &expression, const Variant &defaultValue={}, const OnObjectExpressionCallback &onObjectExpressionCallback=nullptr)
Variant evaluateUnaryOp(const UnaryExpression *ast, Variant rhs)
Stack< Variant > mVariantStack
Definition ExpressionEvaluator.hpp:30
OnObjectExpressionCallback mOnObjectExpressionCallback
Definition ExpressionEvaluator.hpp:32
@ EvaluateReducedBinaryExpression
Definition ExpressionEvaluator.hpp:43
RawFlags mFlags
Definition ExpressionEvaluator.hpp:37
bool mThrowOnFailure
Definition ExpressionEvaluator.hpp:34
Variant evaluateBinaryOp(const BinaryExpression *ast, Variant lhs, Variant rhs)
bool mAbort
Definition ExpressionEvaluator.hpp:35
Function< Variant(ObjectExpression *expression) const > OnObjectExpressionCallback
Definition ExpressionEvaluator.hpp:27
Definition Variant.hpp:20
Definition Visitor.hpp:92
Definition AST.hpp:33
std::stack< T, Container > Stack
The Stack class is a container adapter that gives the programmer the functionality of a stack - speci...
Definition Stack.hpp:18
FunctionBase< true, true, fu2::capacity_default, true, false, Signatures... > Function
An owning copyable function wrapper for arbitrary callable types.
Definition Function.hpp:54
std::uint32_t UInt32
Definition DataTypes.hpp:23
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Definition AST.hpp:1159