CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::ShaderCompiler::VarDeclarationStatement Struct Reference

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

Inheritance diagram for CeresEngine::ShaderCompiler::VarDeclarationStatement:
CeresEngine::ShaderCompiler::Statement CeresEngine::ShaderCompiler::AST

Public Types

enum  : UInt32 {
  isShaderInput = (1u << ( 0 )) , isShaderOutput = (1u << ( 1 )) , isParameter = (1u << ( 2 )) , isSelfParameter = (1u << ( 3 )) ,
  isBaseMember = (1u << ( 4 )) , isImplicitConst = (1u << ( 5 ))
}
 
- Public Types inherited from CeresEngine::ShaderCompiler::AST
enum class  Types {
  Program , CodeBlock , Attribute , SwitchCase ,
  SamplerValue , Register , PackOffset , ArrayDimension ,
  TypeSpecifier , VarDeclaration , BufferDeclaration , SamplerDeclaration ,
  StructDeclaration , AliasDeclaration , FunctionDeclaration , UniformBufferDeclaration ,
  VarDeclarationStatement , BufferDeclarationStatement , SamplerDeclarationStatement , AliasDeclarationStatement ,
  BasicDeclarationStatement , NullStatement , CodeBlockStatement , ForLoopStatement ,
  WhileLoopStatement , DoWhileLoopStatement , IfStatement , ElseStatement ,
  SwitchStatement , ExpressionStatement , ReturnStatement , CtrlTransferStatement ,
  LayoutStatement , NullExpression , SequenceExpression , LiteralExpression ,
  TypeSpecifierExpression , TernaryExpression , BinaryExpression , UnaryExpression ,
  PostUnaryExpression , CallExpression , BracketExpression , ObjectExpression ,
  AssignExpression , ArrayExpression , CastExpression , InitializerExpression
}
 
enum  : UInt32 { isReachable = (1u << ( 30 )) , isDeadCode = (1u << ( 29 )) , isBuiltin = (1u << ( 28 )) }
 

Public Member Functions

 VarDeclarationStatement (const SourcePosition &astPos)
 
 VarDeclarationStatement (const SourceArea &astArea)
 
Types getType () const override
 
void visit (Visitor *visitor, void *args=nullptr) override
 
void collectDeclarationIdents (Map< const AST *, String > &declarationASTIdents) const override
 
String toString (bool useVarNames=true) const
 
VarDeclarationfetchVarDeclaration (const String &ident) const
 
VarDeclarationfetchUniqueVarDeclaration () const
 
bool isInput () const
 
bool isOutput () const
 
bool isUniform () const
 
bool isConstOrUniform () const
 
void setTypeModifier (const TypeModifier modifier)
 
bool hasAnyTypeModifierOf (const InitializerList< TypeModifier > &modifiers) const
 
void forEachVarDeclaration (const VarDeclarationIteratorFunctor &iterator)
 
void makeImplicitConst ()
 
StructDeclarationfetchStructDeclarationRef () const
 
bool accumulateAlignedVectorSize (UInt32 &size, UInt32 &padding, UInt32 *offset=nullptr)
 
- Public Member Functions inherited from CeresEngine::ShaderCompiler::AST
virtual ~AST ()
 
template<typename T >
Tas ()
 
template<typename T >
const Tas () const
 

Public Attributes

TypeSpecifierPtr typeSpecifier
 
Vector< VarDeclarationPtrvarDeclarations
 
- Public Attributes inherited from CeresEngine::ShaderCompiler::Statement
String comment
 
Vector< AttributePtrattributes
 
- Public Attributes inherited from CeresEngine::ShaderCompiler::AST
SourceArea area
 
RawFlags flags
 

Static Public Attributes

static const Types classType = Types:: VarDeclarationStatement
 

Additional Inherited Members

- Static Public Member Functions inherited from CeresEngine::ShaderCompiler::AST
template<typename T >
static TgetAs (AST *ast)
 
template<typename T >
static const TgetAs (const AST *ast)
 

Member Enumeration Documentation

◆ anonymous enum

Enumerator
isShaderInput 
isShaderOutput 
isParameter 
isSelfParameter 
isBaseMember 
isImplicitConst 

Constructor & Destructor Documentation

◆ VarDeclarationStatement() [1/2]

CeresEngine::ShaderCompiler::VarDeclarationStatement::VarDeclarationStatement ( const SourcePosition astPos)
inlineexplicit

◆ VarDeclarationStatement() [2/2]

CeresEngine::ShaderCompiler::VarDeclarationStatement::VarDeclarationStatement ( const SourceArea astArea)
inlineexplicit

Member Function Documentation

◆ accumulateAlignedVectorSize()

bool CeresEngine::ShaderCompiler::VarDeclarationStatement::accumulateAlignedVectorSize ( UInt32 size,
UInt32 padding,
UInt32 offset = nullptr 
)

◆ collectDeclarationIdents()

void CeresEngine::ShaderCompiler::VarDeclarationStatement::collectDeclarationIdents ( Map< const AST *, String > &  declarationASTIdents) const
overridevirtual

◆ fetchStructDeclarationRef()

StructDeclaration * CeresEngine::ShaderCompiler::VarDeclarationStatement::fetchStructDeclarationRef ( ) const

◆ fetchUniqueVarDeclaration()

VarDeclaration * CeresEngine::ShaderCompiler::VarDeclarationStatement::fetchUniqueVarDeclaration ( ) const

◆ fetchVarDeclaration()

VarDeclaration * CeresEngine::ShaderCompiler::VarDeclarationStatement::fetchVarDeclaration ( const String ident) const

◆ forEachVarDeclaration()

void CeresEngine::ShaderCompiler::VarDeclarationStatement::forEachVarDeclaration ( const VarDeclarationIteratorFunctor iterator)

◆ getType()

Types CeresEngine::ShaderCompiler::VarDeclarationStatement::getType ( ) const
inlineoverridevirtual

◆ hasAnyTypeModifierOf()

bool CeresEngine::ShaderCompiler::VarDeclarationStatement::hasAnyTypeModifierOf ( const InitializerList< TypeModifier > &  modifiers) const

◆ isConstOrUniform()

bool CeresEngine::ShaderCompiler::VarDeclarationStatement::isConstOrUniform ( ) const

◆ isInput()

bool CeresEngine::ShaderCompiler::VarDeclarationStatement::isInput ( ) const

◆ isOutput()

bool CeresEngine::ShaderCompiler::VarDeclarationStatement::isOutput ( ) const

◆ isUniform()

bool CeresEngine::ShaderCompiler::VarDeclarationStatement::isUniform ( ) const

◆ makeImplicitConst()

void CeresEngine::ShaderCompiler::VarDeclarationStatement::makeImplicitConst ( )

◆ setTypeModifier()

void CeresEngine::ShaderCompiler::VarDeclarationStatement::setTypeModifier ( const TypeModifier  modifier)

◆ toString()

String CeresEngine::ShaderCompiler::VarDeclarationStatement::toString ( bool  useVarNames = true) const

◆ visit()

void CeresEngine::ShaderCompiler::VarDeclarationStatement::visit ( Visitor visitor,
void args = nullptr 
)
inlineoverridevirtual

Member Data Documentation

◆ classType

const Types CeresEngine::ShaderCompiler::VarDeclarationStatement::classType = Types:: VarDeclarationStatement
static

◆ typeSpecifier

TypeSpecifierPtr CeresEngine::ShaderCompiler::VarDeclarationStatement::typeSpecifier

◆ varDeclarations

Vector<VarDeclarationPtr> CeresEngine::ShaderCompiler::VarDeclarationStatement::varDeclarations

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