CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::ShaderCompiler::ExpressionEvaluator Class Reference

#include <CeresEngine/Material/ShaderCompiler/AST/Visitor/ExpressionEvaluator.hpp>

Inheritance diagram for CeresEngine::ShaderCompiler::ExpressionEvaluator:
CeresEngine::ShaderCompiler::Visitor

Public Types

enum  : UInt32 { EvaluateReducedBinaryExpression = (1 << 0) }
 
using OnObjectExpressionCallback = Function< Variant(ObjectExpression *expression) const >
 

Public Member Functions

 ExpressionEvaluator (RawFlags flags=0)
 
Variant evaluate (Expression &expression, const OnObjectExpressionCallback &onObjectExpressionCallback=nullptr)
 
Variant evaluateOrDefault (Expression &expression, const Variant &defaultValue={}, const OnObjectExpressionCallback &onObjectExpressionCallback=nullptr)
 
void abort ()
 

Private Member Functions

void push (const Variant &v)
 
Variant pop ()
 
void setObjectExpressionCallback (const OnObjectExpressionCallback &callback)
 
Variant evaluateBinaryOp (const BinaryExpression *ast, Variant lhs, Variant rhs)
 
Variant evaluateUnaryOp (const UnaryExpression *ast, Variant rhs)
 
void visitNullExpression (NullExpression *ast, void *args) override
 
void visitSequenceExpression (SequenceExpression *ast, void *args) override
 
void visitLiteralExpression (LiteralExpression *ast, void *args) override
 
void visitTypeSpecifierExpression (TypeSpecifierExpression *ast, void *args) override
 
void visitTernaryExpression (TernaryExpression *ast, void *args) override
 
void visitBinaryExpression (BinaryExpression *ast, void *args) override
 
void visitUnaryExpression (UnaryExpression *ast, void *args) override
 
void visitPostUnaryExpression (PostUnaryExpression *ast, void *args) override
 
void visitCallExpression (CallExpression *ast, void *args) override
 
void visitBracketExpression (BracketExpression *ast, void *args) override
 
void visitAssignExpression (AssignExpression *ast, void *args) override
 
void visitObjectExpression (ObjectExpression *ast, void *args) override
 
void visitArrayExpression (ArrayExpression *ast, void *args) override
 
void visitCastExpression (CastExpression *ast, void *args) override
 
void visitInitializerExpression (InitializerExpression *ast, void *args) override
 
- Private Member Functions inherited from CeresEngine::ShaderCompiler::Visitor
virtual ~Visitor ()=default
 
virtual void visitProgram (Program *ast, void *args)
 
virtual void visitCodeBlock (CodeBlock *ast, void *args)
 
virtual void visitAttribute (Attribute *ast, void *args)
 
virtual void visitSwitchCase (SwitchCase *ast, void *args)
 
virtual void visitSamplerValue (SamplerValue *ast, void *args)
 
virtual void visitRegister (Register *ast, void *args)
 
virtual void visitPackOffset (PackOffset *ast, void *args)
 
virtual void visitArrayDimension (ArrayDimension *ast, void *args)
 
virtual void visitTypeSpecifier (TypeSpecifier *ast, void *args)
 
virtual void visitVarDeclaration (VarDeclaration *ast, void *args)
 
virtual void visitBufferDeclaration (BufferDeclaration *ast, void *args)
 
virtual void visitSamplerDeclaration (SamplerDeclaration *ast, void *args)
 
virtual void visitStructDeclaration (StructDeclaration *ast, void *args)
 
virtual void visitAliasDeclaration (AliasDeclaration *ast, void *args)
 
virtual void visitFunctionDeclaration (FunctionDeclaration *ast, void *args)
 
virtual void visitUniformBufferDeclaration (UniformBufferDeclaration *ast, void *args)
 
virtual void visitBufferDeclarationStatement (BufferDeclarationStatement *ast, void *args)
 
virtual void visitSamplerDeclarationStatement (SamplerDeclarationStatement *ast, void *args)
 
virtual void visitVarDeclarationStatement (VarDeclarationStatement *ast, void *args)
 
virtual void visitAliasDeclarationStatement (AliasDeclarationStatement *ast, void *args)
 
virtual void visitBasicDeclarationStatement (BasicDeclarationStatement *ast, void *args)
 
virtual void visitNullStatement (NullStatement *ast, void *args)
 
virtual void visitCodeBlockStatement (CodeBlockStatement *ast, void *args)
 
virtual void visitForLoopStatement (ForLoopStatement *ast, void *args)
 
virtual void visitWhileLoopStatement (WhileLoopStatement *ast, void *args)
 
virtual void visitDoWhileLoopStatement (DoWhileLoopStatement *ast, void *args)
 
virtual void visitIfStatement (IfStatement *ast, void *args)
 
virtual void visitElseStatement (ElseStatement *ast, void *args)
 
virtual void visitSwitchStatement (SwitchStatement *ast, void *args)
 
virtual void visitExpressionStatement (ExpressionStatement *ast, void *args)
 
virtual void visitReturnStatement (ReturnStatement *ast, void *args)
 
virtual void visitCtrlTransferStatement (CtrlTransferStatement *ast, void *args)
 
virtual void visitLayoutStatement (LayoutStatement *ast, void *args)
 
template<typename T >
void visit (const T &ast, void *args=nullptr)
 
template<typename T >
void visit (const Vector< T > &astList, void *args=nullptr)
 

Private Attributes

Stack< VariantmVariantStack
 
OnObjectExpressionCallback mOnObjectExpressionCallback
 
bool mThrowOnFailure = true
 
bool mAbort = false
 
RawFlags mFlags
 

Member Typedef Documentation

◆ OnObjectExpressionCallback

Member Enumeration Documentation

◆ anonymous enum

Enumerator
EvaluateReducedBinaryExpression 

Constructor & Destructor Documentation

◆ ExpressionEvaluator()

CeresEngine::ShaderCompiler::ExpressionEvaluator::ExpressionEvaluator ( RawFlags  flags = 0)

Member Function Documentation

◆ abort()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::abort ( )

◆ evaluate()

Variant CeresEngine::ShaderCompiler::ExpressionEvaluator::evaluate ( Expression expression,
const OnObjectExpressionCallback onObjectExpressionCallback = nullptr 
)

◆ evaluateBinaryOp()

Variant CeresEngine::ShaderCompiler::ExpressionEvaluator::evaluateBinaryOp ( const BinaryExpression ast,
Variant  lhs,
Variant  rhs 
)
private

◆ evaluateOrDefault()

Variant CeresEngine::ShaderCompiler::ExpressionEvaluator::evaluateOrDefault ( Expression expression,
const Variant defaultValue = {},
const OnObjectExpressionCallback onObjectExpressionCallback = nullptr 
)

◆ evaluateUnaryOp()

Variant CeresEngine::ShaderCompiler::ExpressionEvaluator::evaluateUnaryOp ( const UnaryExpression ast,
Variant  rhs 
)
private

◆ pop()

Variant CeresEngine::ShaderCompiler::ExpressionEvaluator::pop ( )
private

◆ push()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::push ( const Variant v)
private

◆ setObjectExpressionCallback()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::setObjectExpressionCallback ( const OnObjectExpressionCallback callback)
private

◆ visitArrayExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitArrayExpression ( ArrayExpression ast,
void args 
)
overrideprivatevirtual

◆ visitAssignExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitAssignExpression ( AssignExpression ast,
void args 
)
overrideprivatevirtual

◆ visitBinaryExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitBinaryExpression ( BinaryExpression ast,
void args 
)
overrideprivatevirtual

◆ visitBracketExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitBracketExpression ( BracketExpression ast,
void args 
)
overrideprivatevirtual

◆ visitCallExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitCallExpression ( CallExpression ast,
void args 
)
overrideprivatevirtual

◆ visitCastExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitCastExpression ( CastExpression ast,
void args 
)
overrideprivatevirtual

◆ visitInitializerExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitInitializerExpression ( InitializerExpression ast,
void args 
)
overrideprivatevirtual

◆ visitLiteralExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitLiteralExpression ( LiteralExpression ast,
void args 
)
overrideprivatevirtual

◆ visitNullExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitNullExpression ( NullExpression ast,
void args 
)
overrideprivatevirtual

◆ visitObjectExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitObjectExpression ( ObjectExpression ast,
void args 
)
overrideprivatevirtual

◆ visitPostUnaryExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitPostUnaryExpression ( PostUnaryExpression ast,
void args 
)
overrideprivatevirtual

◆ visitSequenceExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitSequenceExpression ( SequenceExpression ast,
void args 
)
overrideprivatevirtual

◆ visitTernaryExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitTernaryExpression ( TernaryExpression ast,
void args 
)
overrideprivatevirtual

◆ visitTypeSpecifierExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitTypeSpecifierExpression ( TypeSpecifierExpression ast,
void args 
)
overrideprivatevirtual

◆ visitUnaryExpression()

void CeresEngine::ShaderCompiler::ExpressionEvaluator::visitUnaryExpression ( UnaryExpression ast,
void args 
)
overrideprivatevirtual

Member Data Documentation

◆ mAbort

bool CeresEngine::ShaderCompiler::ExpressionEvaluator::mAbort = false
private

◆ mFlags

RawFlags CeresEngine::ShaderCompiler::ExpressionEvaluator::mFlags
private

◆ mOnObjectExpressionCallback

OnObjectExpressionCallback CeresEngine::ShaderCompiler::ExpressionEvaluator::mOnObjectExpressionCallback
private

◆ mThrowOnFailure

bool CeresEngine::ShaderCompiler::ExpressionEvaluator::mThrowOnFailure = true
private

◆ mVariantStack

Stack<Variant> CeresEngine::ShaderCompiler::ExpressionEvaluator::mVariantStack
private

The documentation for this class was generated from the following file: