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

Structure parameter analyzer. More...

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

Inheritance diagram for CeresEngine::ShaderCompiler::StructParameterAnalyzer:
CeresEngine::ShaderCompiler::VisitorTracker

Public Member Functions

void markStructsFromEntryPoint (Program &program, const ShaderTarget shaderTarget)
 

Private Member Functions

bool notVisited (const AST *ast)
 
void visitStatementList (const Vector< StatementPtr > &statements)
 
bool isVariableAnEntryPointParameter (VarDeclarationStatement *var) const
 
bool isActiveFunctionDeclarationEntryPoint () const
 
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 visitFunctionDeclaration (FunctionDeclaration *ast, void *args) override
 
void visitUniformBufferDeclaration (UniformBufferDeclaration *ast, void *args) override
 
void visitBufferDeclarationStatement (BufferDeclarationStatement *ast, void *args) override
 
void visitCallExpression (CallExpression *ast, void *args) override
 
void visitObjectExpression (ObjectExpression *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 visitSamplerDeclaration (SamplerDeclaration *ast, void *args)
 
virtual void visitAliasDeclaration (AliasDeclaration *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)
 
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 visitUnaryExpression (UnaryExpression *ast, void *args)
 
virtual void visitPostUnaryExpression (PostUnaryExpression *ast, void *args)
 
virtual void visitBracketExpression (BracketExpression *ast, void *args)
 
virtual void visitAssignExpression (AssignExpression *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
 
Set< const AST * > mVisitSet
 

Detailed Description

Structure parameter analyzer.

This is a helper class for the context analyzer to determine which structures are used for another reason than entry-point parameters.

Member Function Documentation

◆ isActiveFunctionDeclarationEntryPoint()

bool CeresEngine::ShaderCompiler::StructParameterAnalyzer::isActiveFunctionDeclarationEntryPoint ( ) const
private

◆ isVariableAnEntryPointParameter()

bool CeresEngine::ShaderCompiler::StructParameterAnalyzer::isVariableAnEntryPointParameter ( VarDeclarationStatement var) const
private

◆ markStructsFromEntryPoint()

void CeresEngine::ShaderCompiler::StructParameterAnalyzer::markStructsFromEntryPoint ( Program program,
const ShaderTarget  shaderTarget 
)

◆ notVisited()

bool CeresEngine::ShaderCompiler::StructParameterAnalyzer::notVisited ( const AST ast)
private

◆ visitBufferDeclaration()

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

◆ visitBufferDeclarationStatement()

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

◆ visitCallExpression()

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

◆ visitCodeBlock()

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

◆ visitFunctionDeclaration()

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

◆ visitObjectExpression()

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

◆ visitStatementList()

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

◆ visitStructDeclaration()

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

◆ visitSwitchCase()

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

◆ visitTypeSpecifier()

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

◆ visitUniformBufferDeclaration()

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

◆ visitVarDeclaration()

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

Member Data Documentation

◆ mProgram

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

◆ mShaderTarget

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

◆ mVisitSet

Set<const AST*> CeresEngine::ShaderCompiler::StructParameterAnalyzer::mVisitSet
private

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