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="")
 
PrintableTree * topPrintable ()
 
void pushMemberName (const String &name)
 
void popMemberName ()
 
const String & topMemberName () 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< bool > mLastSubNodeStack
 
Stack< String > mMemberNameStack
 
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: