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< ExpressionPtr > makeArrayIndices (const Vector< int > &arrayIndices)
 
Vector< ArrayDimensionPtr > makeArrayDimensionList (const Vector< int > &arraySizes)
 
ExpressionPtr convertExpressionBaseType (const DataType dataType, const ExpressionPtr &subExpression)
 
ArrayDimensionPtr convertExpressionToArrayDimension (const ExpressionPtr &expression)
 
Vector< ArrayDimensionPtr > convertExpressionListToArrayDimensionList (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 
)