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

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

Inheritance diagram for CeresEngine::ShaderCompiler::ASTPrinter:
CeresEngine::ShaderCompiler::Visitor

Classes

struct  PrintableTree
 

Public Member Functions

void printAST (Program *program, std::ostream &output=std::cout)
 

Private Member Functions

void visitProgram (Program *ast, void *args) override
 
void visitCodeBlock (CodeBlock *ast, void *args) override
 
void visitAttribute (Attribute *ast, void *args) override
 
void visitSwitchCase (SwitchCase *ast, void *args) override
 
void visitSamplerValue (SamplerValue *ast, void *args) override
 
void visitRegister (Register *ast, void *args) override
 
void visitPackOffset (PackOffset *ast, void *args) override
 
void visitArrayDimension (ArrayDimension *ast, void *args) override
 
void visitTypeSpecifier (TypeSpecifier *ast, void *args) override
 
void visitVarDeclaration (VarDeclaration *ast, void *args) override
 
void visitBufferDeclaration (BufferDeclaration *ast, void *args) override
 
void visitSamplerDeclaration (SamplerDeclaration *ast, void *args) override
 
void visitStructDeclaration (StructDeclaration *ast, void *args) override
 
void visitAliasDeclaration (AliasDeclaration *ast, void *args) override
 
void visitFunctionDeclaration (FunctionDeclaration *ast, void *args) override
 
void visitVarDeclarationStatement (VarDeclarationStatement *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 visitAliasDeclarationStatement (AliasDeclarationStatement *ast, void *args) override
 
void visitBasicDeclarationStatement (BasicDeclarationStatement *ast, void *args) override
 
void visitNullStatement (NullStatement *ast, void *args) override
 
void visitCodeBlockStatement (CodeBlockStatement *ast, void *args) override
 
void visitForLoopStatement (ForLoopStatement *ast, void *args) override
 
void visitWhileLoopStatement (WhileLoopStatement *ast, void *args) override
 
void visitDoWhileLoopStatement (DoWhileLoopStatement *ast, void *args) override
 
void visitIfStatement (IfStatement *ast, void *args) override
 
void visitElseStatement (ElseStatement *ast, void *args) override
 
void visitSwitchStatement (SwitchStatement *ast, void *args) override
 
void visitExpressionStatement (ExpressionStatement *ast, void *args) override
 
void visitReturnStatement (ReturnStatement *ast, void *args) override
 
void visitCtrlTransferStatement (CtrlTransferStatement *ast, void *args) override
 
void visitLayoutStatement (LayoutStatement *ast, void *args) override
 
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 visitObjectExpression (ObjectExpression *ast, void *args) override
 
void visitAssignExpression (AssignExpression *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
 
template<typename T >
void visitMember (T ast, const String &name)
 
template<typename T >
void visitMember (const Vector< T > &astList, const String &name)
 
String writeLabel (const String &astName, TypedAST *ast=nullptr)
 
void print (const PrintableTree &tree, std::ostream &output)
 
bool pushPrintable (const AST *ast, const String &label, const String &value="")
 
void popPrintable ()
 
void printable (const AST *ast, const String &label, const String &value="")
 
PrintableTreetopPrintable ()
 
void pushMemberName (const String &name)
 
void popMemberName ()
 
const StringtopMemberName () const
 
- Private Member Functions inherited from CeresEngine::ShaderCompiler::Visitor
virtual ~Visitor ()=default
 
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

PrintableTree mTreeRoot
 
Stack< PrintableTree * > mParentNodeStack
 
Vector< boolmLastSubNodeStack
 
Stack< StringmMemberNameStack
 
std::size_t mMaxRowStrLen = 0
 
std::size_t mMaxColStrLen = 0
 

Member Function Documentation

◆ popMemberName()

void CeresEngine::ShaderCompiler::ASTPrinter::popMemberName ( )
private

◆ popPrintable()

void CeresEngine::ShaderCompiler::ASTPrinter::popPrintable ( )
private

◆ print()

void CeresEngine::ShaderCompiler::ASTPrinter::print ( const PrintableTree tree,
std::ostream &  output 
)
private

◆ printable()

void CeresEngine::ShaderCompiler::ASTPrinter::printable ( const AST ast,
const String label,
const String value = "" 
)
private

◆ printAST()

void CeresEngine::ShaderCompiler::ASTPrinter::printAST ( Program program,
std::ostream &  output = std::cout 
)

◆ pushMemberName()

void CeresEngine::ShaderCompiler::ASTPrinter::pushMemberName ( const String name)
private

◆ pushPrintable()

bool CeresEngine::ShaderCompiler::ASTPrinter::pushPrintable ( const AST ast,
const String label,
const String value = "" 
)
private

◆ topMemberName()

const String & CeresEngine::ShaderCompiler::ASTPrinter::topMemberName ( ) const
private

◆ topPrintable()

PrintableTree * CeresEngine::ShaderCompiler::ASTPrinter::topPrintable ( )
private

◆ visitAliasDeclaration()

void CeresEngine::ShaderCompiler::ASTPrinter::visitAliasDeclaration ( AliasDeclaration ast,
void args 
)
overrideprivatevirtual

◆ visitAliasDeclarationStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitAliasDeclarationStatement ( AliasDeclarationStatement ast,
void args 
)
overrideprivatevirtual

◆ visitArrayDimension()

void CeresEngine::ShaderCompiler::ASTPrinter::visitArrayDimension ( ArrayDimension ast,
void args 
)
overrideprivatevirtual

◆ visitArrayExpression()

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

◆ visitAssignExpression()

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

◆ visitAttribute()

void CeresEngine::ShaderCompiler::ASTPrinter::visitAttribute ( Attribute ast,
void args 
)
overrideprivatevirtual

◆ visitBasicDeclarationStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitBasicDeclarationStatement ( BasicDeclarationStatement ast,
void args 
)
overrideprivatevirtual

◆ visitBinaryExpression()

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

◆ visitBracketExpression()

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

◆ visitBufferDeclaration()

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

◆ visitBufferDeclarationStatement()

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

◆ visitCallExpression()

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

◆ visitCastExpression()

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

◆ visitCodeBlock()

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

◆ visitCodeBlockStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitCodeBlockStatement ( CodeBlockStatement ast,
void args 
)
overrideprivatevirtual

◆ visitCtrlTransferStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitCtrlTransferStatement ( CtrlTransferStatement ast,
void args 
)
overrideprivatevirtual

◆ visitDoWhileLoopStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitDoWhileLoopStatement ( DoWhileLoopStatement ast,
void args 
)
overrideprivatevirtual

◆ visitElseStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitElseStatement ( ElseStatement ast,
void args 
)
overrideprivatevirtual

◆ visitExpressionStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitExpressionStatement ( ExpressionStatement ast,
void args 
)
overrideprivatevirtual

◆ visitForLoopStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitForLoopStatement ( ForLoopStatement ast,
void args 
)
overrideprivatevirtual

◆ visitFunctionDeclaration()

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

◆ visitIfStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitIfStatement ( IfStatement ast,
void args 
)
overrideprivatevirtual

◆ visitInitializerExpression()

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

◆ visitLayoutStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitLayoutStatement ( LayoutStatement ast,
void args 
)
overrideprivatevirtual

◆ visitLiteralExpression()

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

◆ visitMember() [1/2]

template<typename T >
void CeresEngine::ShaderCompiler::ASTPrinter::visitMember ( const Vector< T > &  astList,
const String name 
)
inlineprivate

◆ visitMember() [2/2]

template<typename T >
void CeresEngine::ShaderCompiler::ASTPrinter::visitMember ( T  ast,
const String name 
)
inlineprivate

◆ visitNullExpression()

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

◆ visitNullStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitNullStatement ( NullStatement ast,
void args 
)
overrideprivatevirtual

◆ visitObjectExpression()

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

◆ visitPackOffset()

void CeresEngine::ShaderCompiler::ASTPrinter::visitPackOffset ( PackOffset ast,
void args 
)
overrideprivatevirtual

◆ visitPostUnaryExpression()

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

◆ visitProgram()

void CeresEngine::ShaderCompiler::ASTPrinter::visitProgram ( Program ast,
void args 
)
overrideprivatevirtual

◆ visitRegister()

void CeresEngine::ShaderCompiler::ASTPrinter::visitRegister ( Register ast,
void args 
)
overrideprivatevirtual

◆ visitReturnStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitReturnStatement ( ReturnStatement ast,
void args 
)
overrideprivatevirtual

◆ visitSamplerDeclaration()

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

◆ visitSamplerDeclarationStatement()

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

◆ visitSamplerValue()

void CeresEngine::ShaderCompiler::ASTPrinter::visitSamplerValue ( SamplerValue ast,
void args 
)
overrideprivatevirtual

◆ visitSequenceExpression()

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

◆ visitStructDeclaration()

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

◆ visitSwitchCase()

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

◆ visitSwitchStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitSwitchStatement ( SwitchStatement ast,
void args 
)
overrideprivatevirtual

◆ visitTernaryExpression()

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

◆ visitTypeSpecifier()

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

◆ visitTypeSpecifierExpression()

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

◆ visitUnaryExpression()

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

◆ visitUniformBufferDeclaration()

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

◆ visitVarDeclaration()

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

◆ visitVarDeclarationStatement()

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

◆ visitWhileLoopStatement()

void CeresEngine::ShaderCompiler::ASTPrinter::visitWhileLoopStatement ( WhileLoopStatement ast,
void args 
)
overrideprivatevirtual

◆ writeLabel()

String CeresEngine::ShaderCompiler::ASTPrinter::writeLabel ( const String astName,
TypedAST ast = nullptr 
)
private

Member Data Documentation

◆ mLastSubNodeStack

Vector<bool> CeresEngine::ShaderCompiler::ASTPrinter::mLastSubNodeStack
private

◆ mMaxColStrLen

std::size_t CeresEngine::ShaderCompiler::ASTPrinter::mMaxColStrLen = 0
private

◆ mMaxRowStrLen

std::size_t CeresEngine::ShaderCompiler::ASTPrinter::mMaxRowStrLen = 0
private

◆ mMemberNameStack

Stack<String> CeresEngine::ShaderCompiler::ASTPrinter::mMemberNameStack
private

◆ mParentNodeStack

Stack<PrintableTree*> CeresEngine::ShaderCompiler::ASTPrinter::mParentNodeStack
private

◆ mTreeRoot

PrintableTree CeresEngine::ShaderCompiler::ASTPrinter::mTreeRoot
private

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