CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::ShaderCompiler::ASTFactory Namespace Reference

Functions

CallExpressionPtr makeIntrinsicCallExpression (const Intrinsic intrinsic, const String &ident, const TypeDenoterPtr &typeDenoter, const Vector< ExpressionPtr > &arguments)
 
CallExpressionPtr makeTextureSamplerBindingCallExpression (const ExpressionPtr &textureObjectExpression, const ExpressionPtr &samplerObjectExpression)
 
CallExpressionPtr makeWrapperCallExpression (const String &funcIdent, const TypeDenoterPtr &typeDenoter, const Vector< ExpressionPtr > &arguments)
 
InitializerExpressionPtr makeInitializerExpression (const Vector< ExpressionPtr > &expressions)
 
CallExpressionPtr makeTypeCtorCallExpression (const TypeDenoterPtr &typeDenoter, const Vector< ExpressionPtr > &arguments)
 
CastExpressionPtr makeCastExpression (const TypeDenoterPtr &typeDenoter, const ExpressionPtr &valueExpression)
 
CastExpressionPtr makeLiteralCastExpression (const TypeDenoterPtr &typeDenoter, const DataType literalType, const String &literalValue)
 
BinaryExpressionPtr makeBinaryExpression (const ExpressionPtr &lhsExpression, const BinaryOp op, const ExpressionPtr &rhsExpression)
 
LiteralExpressionPtr makeLiteralExpression (const DataType literalType, const String &literalValue)
 
LiteralExpressionPtr makeLiteralExpressionOrNull (const Variant &literalValue)
 
AliasDeclarationStatementPtr makeBaseTypeAlias (const DataType dataType, const String &ident)
 
TypeSpecifierPtr makeTypeSpecifier (const StructDeclarationPtr &structDeclaration)
 
TypeSpecifierPtr makeTypeSpecifier (const TypeDenoterPtr &typeDenoter)
 
TypeSpecifierPtr makeTypeSpecifier (const DataType dataType)
 
VarDeclarationStatementPtr makeVarDeclarationStatement (const TypeSpecifierPtr &typeSpecifier, const String &ident, const ExpressionPtr &initializer=nullptr)
 
VarDeclarationStatementPtr makeVarDeclarationStatement (const DataType dataType, const String &ident, const ExpressionPtr &initializer=nullptr)
 
VarDeclarationStatementPtr makeVarDeclarationStatementSplit (const VarDeclarationStatementPtr &varDeclarationStatement, std::size_t idx)
 
ObjectExpressionPtr makeObjectExpression (const ExpressionPtr &prefixExpression, const String &ident, Declaration *symbolRef=nullptr)
 
ObjectExpressionPtr makeObjectExpression (const String &ident, Declaration *symbolRef=nullptr)
 
ObjectExpressionPtr makeObjectExpression (Declaration *symbolRef)
 
ArrayExpressionPtr makeArrayExpression (const ExpressionPtr &prefixExpression, Vector< ExpressionPtr > &&arrayIndices)
 
ArrayExpressionPtr makeArrayExpression (const ExpressionPtr &prefixExpression, const Vector< int > &arrayIndices)
 
ArrayExpressionPtr makeArrayExpression (const ExpressionPtr &prefixExpression, const Vector< ExpressionPtr >::const_iterator &arrayIndicesBegin, const Vector< ExpressionPtr >::const_iterator &arrayIndicesEnd)
 
ArrayExpressionPtr makeArrayExpressionSplit (const ArrayExpressionPtr &arrayExpression, std::size_t splitArrayIndex)
 Splits the specified array expression at the specified array index location.
 
RegisterPtr makeRegister (Int32 set, Int32 slot, const RegisterType registerType=RegisterType::Undefined)
 
BracketExpressionPtr makeBracketExpression (const ExpressionPtr &expression)
 
ExpressionPtr makeConstructorListExpression (const ExpressionPtr &expression, const Vector< TypeDenoterPtr > &listTypeDens)
 
ExpressionStatementPtr makeAssignStatement (const ExpressionPtr &lvalueExpression, const ExpressionPtr &rvalueExpression, const AssignOp op=AssignOp::Set)
 
ExpressionStatementPtr makeArrayAssignStatement (VarDeclaration *varDeclaration, const Vector< int > &arrayIndices, const ExpressionPtr &assignExpression)
 
ArrayDimensionPtr makeArrayDimension (int arraySize)
 
CodeBlockStatementPtr makeCodeBlockStatement (const StatementPtr &statement)
 
BasicDeclarationStatementPtr makeStructDeclarationStatement (const StructDeclarationPtr &structDeclaration)
 
UniformBufferDeclarationPtr makeUniformBufferDeclaration (const String &ident, Int32 bindingSlot=0, const UniformBufferType bufferType=UniformBufferType::ConstantBuffer)
 
Vector< ExpressionPtrmakeArrayIndices (const Vector< int > &arrayIndices)
 
Vector< ArrayDimensionPtrmakeArrayDimensionList (const Vector< int > &arraySizes)
 
ExpressionPtr convertExpressionBaseType (const DataType dataType, const ExpressionPtr &subExpression)
 
ArrayDimensionPtr convertExpressionToArrayDimension (const ExpressionPtr &expression)
 
Vector< ArrayDimensionPtrconvertExpressionListToArrayDimensionList (const Vector< ExpressionPtr > &expressions)
 

Function Documentation

◆ convertExpressionBaseType()

ExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::convertExpressionBaseType ( const DataType  dataType,
const ExpressionPtr subExpression 
)

◆ convertExpressionListToArrayDimensionList()

Vector< ArrayDimensionPtr > CeresEngine::ShaderCompiler::ASTFactory::convertExpressionListToArrayDimensionList ( const Vector< ExpressionPtr > &  expressions)

◆ convertExpressionToArrayDimension()

ArrayDimensionPtr CeresEngine::ShaderCompiler::ASTFactory::convertExpressionToArrayDimension ( const ExpressionPtr expression)

◆ makeArrayAssignStatement()

ExpressionStatementPtr CeresEngine::ShaderCompiler::ASTFactory::makeArrayAssignStatement ( VarDeclaration varDeclaration,
const Vector< int > &  arrayIndices,
const ExpressionPtr assignExpression 
)

◆ makeArrayDimension()

ArrayDimensionPtr CeresEngine::ShaderCompiler::ASTFactory::makeArrayDimension ( int  arraySize)

◆ makeArrayDimensionList()

Vector< ArrayDimensionPtr > CeresEngine::ShaderCompiler::ASTFactory::makeArrayDimensionList ( const Vector< int > &  arraySizes)

◆ makeArrayExpression() [1/3]

ArrayExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeArrayExpression ( const ExpressionPtr prefixExpression,
const Vector< ExpressionPtr >::const_iterator &  arrayIndicesBegin,
const Vector< ExpressionPtr >::const_iterator &  arrayIndicesEnd 
)

◆ makeArrayExpression() [2/3]

ArrayExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeArrayExpression ( const ExpressionPtr prefixExpression,
const Vector< int > &  arrayIndices 
)

◆ makeArrayExpression() [3/3]

ArrayExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeArrayExpression ( const ExpressionPtr prefixExpression,
Vector< ExpressionPtr > &&  arrayIndices 
)

◆ makeArrayExpressionSplit()

ArrayExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeArrayExpressionSplit ( const ArrayExpressionPtr arrayExpression,
std::size_t  splitArrayIndex 
)

Splits the specified array expression at the specified array index location.

If 'lastPrefixArrayIndex' is zero, or greater than or equal to the number of array indices, the input expression 'arrayExpression' is returned. Otherwise, the left hand side is splitted as prefix expression into the return expression. Example (pseudocode): MakeArrayExpressionSplit('prefix[0][1][2]', 2) --> '(prefix[0][1])[2]'

◆ makeArrayIndices()

Vector< ExpressionPtr > CeresEngine::ShaderCompiler::ASTFactory::makeArrayIndices ( const Vector< int > &  arrayIndices)

◆ makeAssignStatement()

ExpressionStatementPtr CeresEngine::ShaderCompiler::ASTFactory::makeAssignStatement ( const ExpressionPtr lvalueExpression,
const ExpressionPtr rvalueExpression,
const AssignOp  op = AssignOp::Set 
)

◆ makeBaseTypeAlias()

AliasDeclarationStatementPtr CeresEngine::ShaderCompiler::ASTFactory::makeBaseTypeAlias ( const DataType  dataType,
const String ident 
)

◆ makeBinaryExpression()

BinaryExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeBinaryExpression ( const ExpressionPtr lhsExpression,
const BinaryOp  op,
const ExpressionPtr rhsExpression 
)

◆ makeBracketExpression()

BracketExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeBracketExpression ( const ExpressionPtr expression)

◆ makeCastExpression()

CastExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeCastExpression ( const TypeDenoterPtr typeDenoter,
const ExpressionPtr valueExpression 
)

◆ makeCodeBlockStatement()

CodeBlockStatementPtr CeresEngine::ShaderCompiler::ASTFactory::makeCodeBlockStatement ( const StatementPtr statement)

◆ makeConstructorListExpression()

ExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeConstructorListExpression ( const ExpressionPtr expression,
const Vector< TypeDenoterPtr > &  listTypeDens 
)

◆ makeInitializerExpression()

InitializerExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeInitializerExpression ( const Vector< ExpressionPtr > &  expressions)

◆ makeIntrinsicCallExpression()

CallExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeIntrinsicCallExpression ( const Intrinsic  intrinsic,
const String ident,
const TypeDenoterPtr typeDenoter,
const Vector< ExpressionPtr > &  arguments 
)

◆ makeLiteralCastExpression()

CastExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeLiteralCastExpression ( const TypeDenoterPtr typeDenoter,
const DataType  literalType,
const String literalValue 
)

◆ makeLiteralExpression()

LiteralExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeLiteralExpression ( const DataType  literalType,
const String literalValue 
)

◆ makeLiteralExpressionOrNull()

LiteralExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeLiteralExpressionOrNull ( const Variant literalValue)

◆ makeObjectExpression() [1/3]

ObjectExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeObjectExpression ( const ExpressionPtr prefixExpression,
const String ident,
Declaration symbolRef = nullptr 
)

◆ makeObjectExpression() [2/3]

ObjectExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeObjectExpression ( const String ident,
Declaration symbolRef = nullptr 
)

◆ makeObjectExpression() [3/3]

ObjectExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeObjectExpression ( Declaration symbolRef)

◆ makeRegister()

RegisterPtr CeresEngine::ShaderCompiler::ASTFactory::makeRegister ( Int32  set,
Int32  slot,
const RegisterType  registerType = RegisterType::Undefined 
)

◆ makeStructDeclarationStatement()

BasicDeclarationStatementPtr CeresEngine::ShaderCompiler::ASTFactory::makeStructDeclarationStatement ( const StructDeclarationPtr structDeclaration)

◆ makeTextureSamplerBindingCallExpression()

CallExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeTextureSamplerBindingCallExpression ( const ExpressionPtr textureObjectExpression,
const ExpressionPtr samplerObjectExpression 
)

◆ makeTypeCtorCallExpression()

CallExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeTypeCtorCallExpression ( const TypeDenoterPtr typeDenoter,
const Vector< ExpressionPtr > &  arguments 
)

◆ makeTypeSpecifier() [1/3]

TypeSpecifierPtr CeresEngine::ShaderCompiler::ASTFactory::makeTypeSpecifier ( const DataType  dataType)

◆ makeTypeSpecifier() [2/3]

TypeSpecifierPtr CeresEngine::ShaderCompiler::ASTFactory::makeTypeSpecifier ( const StructDeclarationPtr structDeclaration)

◆ makeTypeSpecifier() [3/3]

TypeSpecifierPtr CeresEngine::ShaderCompiler::ASTFactory::makeTypeSpecifier ( const TypeDenoterPtr typeDenoter)

◆ makeUniformBufferDeclaration()

UniformBufferDeclarationPtr CeresEngine::ShaderCompiler::ASTFactory::makeUniformBufferDeclaration ( const String ident,
Int32  bindingSlot = 0,
const UniformBufferType  bufferType = UniformBufferType::ConstantBuffer 
)

◆ makeVarDeclarationStatement() [1/2]

VarDeclarationStatementPtr CeresEngine::ShaderCompiler::ASTFactory::makeVarDeclarationStatement ( const DataType  dataType,
const String ident,
const ExpressionPtr initializer = nullptr 
)

◆ makeVarDeclarationStatement() [2/2]

VarDeclarationStatementPtr CeresEngine::ShaderCompiler::ASTFactory::makeVarDeclarationStatement ( const TypeSpecifierPtr typeSpecifier,
const String ident,
const ExpressionPtr initializer = nullptr 
)

◆ makeVarDeclarationStatementSplit()

VarDeclarationStatementPtr CeresEngine::ShaderCompiler::ASTFactory::makeVarDeclarationStatementSplit ( const VarDeclarationStatementPtr varDeclarationStatement,
std::size_t  idx 
)

◆ makeWrapperCallExpression()

CallExpressionPtr CeresEngine::ShaderCompiler::ASTFactory::makeWrapperCallExpression ( const String funcIdent,
const TypeDenoterPtr typeDenoter,
const Vector< ExpressionPtr > &  arguments 
)