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

Object reference analyzer. More...

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

Inheritance diagram for CeresEngine::ShaderCompiler::ReferenceAnalyzer:
CeresEngine::ShaderCompiler::VisitorTracker

Public Member Functions

void markReferencesFromEntryPoint (Program &program, const ShaderTarget shaderTarget)
 

Private Member Functions

bool reachable (AST *ast)
 
void visitStatementList (const Vector< StatementPtr > &statements)
 
void markLValueExpression (const Expression *expression)
 
void markLValueExpressionObject (const ObjectExpression *objectExpression)
 
void visitCodeBlock (CodeBlock *ast, void *args) override
 
void visitSwitchCase (SwitchCase *ast, void *args) override
 
void visitTypeSpecifier (TypeSpecifier *ast, void *args) override
 
void visitVarDeclaration (VarDeclaration *ast, void *args) override
 
void visitStructDeclaration (StructDeclaration *ast, void *args) override
 
void visitBufferDeclaration (BufferDeclaration *ast, void *args) override
 
void visitSamplerDeclaration (SamplerDeclaration *ast, void *args) override
 
void visitFunctionDeclaration (FunctionDeclaration *ast, void *args) override
 
void visitUniformBufferDeclaration (UniformBufferDeclaration *ast, void *args) override
 
void visitBufferDeclarationStatement (BufferDeclarationStatement *ast, void *args) override
 
void visitSamplerDeclarationStatement (SamplerDeclarationStatement *ast, void *args) override
 
void visitVarDeclarationStatement (VarDeclarationStatement *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 visitObjectExpression (ObjectExpression *ast, void *args) override
 
void visitAssignExpression (AssignExpression *ast, void *args) override
 
- Private Member Functions inherited from CeresEngine::ShaderCompiler::VisitorTracker
bool isInsideGlobalScope () const
 
void pushFunctionDeclaration (FunctionDeclaration *funcDeclaration)
 
void popFunctionDeclaration ()
 
bool isInsideFunctionDeclaration () const
 
bool isInsideEntryPoint () const
 
bool isInsideSecondaryEntryPoint () const
 
FunctionDeclarationgetActiveFunctionDeclaration () const
 
StructDeclarationgetActiveFunctionStructDeclaration () const
 
void pushCallExpression (CallExpression *callExpression)
 
void popCallExpression ()
 
CallExpressiongetActiveCallExpression () const
 
void pushLValueExpression (Expression *expression)
 
void popLValueExpression ()
 
ExpressiongetActiveLValueExpression () const
 
void pushStructDeclaration (StructDeclaration *structDeclaration)
 
void popStructDeclaration ()
 
bool isInsideStructDeclaration () const
 
StructDeclarationgetActiveStructDeclaration () const
 
const Vector< StructDeclaration * > & getStructDeclarationStack () const
 
void pushUniformBufferDeclaration (UniformBufferDeclaration *uniformBufferDeclaration)
 
void popUniformBufferDeclaration ()
 
bool isInsideUniformBufferDeclaration () const
 
const Vector< UniformBufferDeclaration * > & getUniformBufferDeclarationStack () const
 
void pushVarDeclarationStatement (VarDeclarationStatement *varDeclarationStatement)
 
void popVarDeclarationStatement ()
 
bool isInsideVarDeclarationStatement () const
 
VarDeclarationStatementgetActiveVarDeclarationStatement () const
 
- Private Member Functions inherited from CeresEngine::ShaderCompiler::Visitor
virtual ~Visitor ()=default
 
virtual void visitProgram (Program *ast, void *args)
 
virtual void visitAttribute (Attribute *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 visitAliasDeclaration (AliasDeclaration *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)
 
virtual void visitNullExpression (NullExpression *ast, void *args)
 
virtual void visitSequenceExpression (SequenceExpression *ast, void *args)
 
virtual void visitLiteralExpression (LiteralExpression *ast, void *args)
 
virtual void visitTypeSpecifierExpression (TypeSpecifierExpression *ast, void *args)
 
virtual void visitTernaryExpression (TernaryExpression *ast, void *args)
 
virtual void visitBinaryExpression (BinaryExpression *ast, void *args)
 
virtual void visitBracketExpression (BracketExpression *ast, void *args)
 
virtual void visitArrayExpression (ArrayExpression *ast, void *args)
 
virtual void visitCastExpression (CastExpression *ast, void *args)
 
virtual void visitInitializerExpression (InitializerExpression *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

ProgrammProgram = nullptr
 
ShaderTarget mShaderTarget = ShaderTarget::VertexShader
 
Vector< CallExpression * > mCallExpressionStack
 

Detailed Description

Object reference analyzer.

This helper class for the context analyzer marks all functions which are used (or rather referenced) from the beginning of the shader entry point. All other functions will be ignored by the code generator.

Member Function Documentation

◆ markLValueExpression()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::markLValueExpression ( const Expression expression)
private

◆ markLValueExpressionObject()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::markLValueExpressionObject ( const ObjectExpression objectExpression)
private

◆ markReferencesFromEntryPoint()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::markReferencesFromEntryPoint ( Program program,
const ShaderTarget  shaderTarget 
)

◆ reachable()

bool CeresEngine::ShaderCompiler::ReferenceAnalyzer::reachable ( AST ast)
private

◆ visitAssignExpression()

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

◆ visitBufferDeclaration()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitBufferDeclaration ( BufferDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitBufferDeclarationStatement()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitBufferDeclarationStatement ( BufferDeclarationStatement ast,
void args 
)
overrideprivatevirtual

◆ visitCallExpression()

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

◆ visitCodeBlock()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitCodeBlock ( CodeBlock ast,
void args 
)
overrideprivatevirtual

◆ visitFunctionDeclaration()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitFunctionDeclaration ( FunctionDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitObjectExpression()

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

◆ visitPostUnaryExpression()

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

◆ visitSamplerDeclaration()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitSamplerDeclaration ( SamplerDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitSamplerDeclarationStatement()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitSamplerDeclarationStatement ( SamplerDeclarationStatement ast,
void args 
)
overrideprivatevirtual

◆ visitStatementList()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitStatementList ( const Vector< StatementPtr > &  statements)
private

◆ visitStructDeclaration()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitStructDeclaration ( StructDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitSwitchCase()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitSwitchCase ( SwitchCase ast,
void args 
)
overrideprivatevirtual

◆ visitTypeSpecifier()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitTypeSpecifier ( TypeSpecifier ast,
void args 
)
overrideprivatevirtual

◆ visitUnaryExpression()

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

◆ visitUniformBufferDeclaration()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitUniformBufferDeclaration ( UniformBufferDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitVarDeclaration()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitVarDeclaration ( VarDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitVarDeclarationStatement()

void CeresEngine::ShaderCompiler::ReferenceAnalyzer::visitVarDeclarationStatement ( VarDeclarationStatement ast,
void args 
)
overrideprivatevirtual

Member Data Documentation

◆ mCallExpressionStack

Vector<CallExpression*> CeresEngine::ShaderCompiler::ReferenceAnalyzer::mCallExpressionStack
private

◆ mProgram

Program* CeresEngine::ShaderCompiler::ReferenceAnalyzer::mProgram = nullptr
private

◆ mShaderTarget

ShaderTarget CeresEngine::ShaderCompiler::ReferenceAnalyzer::mShaderTarget = ShaderTarget::VertexShader
private

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