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

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

Inheritance diagram for CeresEngine::ShaderCompiler::CallExpression:
CeresEngine::ShaderCompiler::Expression CeresEngine::ShaderCompiler::TypedAST CeresEngine::ShaderCompiler::AST

Public Types

enum  : UInt32 { canInlineIntrinsicWrapper = (1u << ( 0 )) , isWrapperCall = (1u << ( 1 )) }
 
- Public Types inherited from CeresEngine::ShaderCompiler::Expression
enum  : UInt32 { wasConverted = (1u << ( 0 )) }
 
- 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

 CallExpression (const SourcePosition &astPos)
 
 CallExpression (const SourceArea &astArea)
 
Types getType () const override
 
void visit (Visitor *visitor, void *args=nullptr) override
 
TypeDenoterPtr deriveTypeDenoter (const TypeDenoter *expectedTypeDenoter) override
 
const Expressionfind (const FindPredicateConstFunctor &predicate, UInt32 flags=SearchAll) const override
 
IndexedSemantic fetchSemantic () const override
 
FunctionDeclarationgetFunctionDeclaration () const
 
FunctionDeclarationgetFunctionImpl () const
 
void forEachOutputArgument (const ExpressionIteratorFunctor &iterator)
 
void forEachArgumentWithParameterType (const ArgumentParameterTypeFunctor &iterator)
 
void pushArgumentFront (const ExpressionPtr &expression)
 
bool pushPrefixToArguments ()
 
bool popPrefixFromArguments ()
 
bool mergeArguments (std::size_t firstArgIndex, const MergeExpressionFunctor &mergeFunctor)
 
ExpressiongetMemberFuncObjectExpression () const
 
- Public Member Functions inherited from CeresEngine::ShaderCompiler::Expression
VarDeclarationfetchVarDeclaration () const
 
virtual const ObjectExpressionfetchLValueExpression () const
 Returns the first node in the expression tree that is an l-value (may also be constant!), or null if there is no l-value.
 
ObjectExpressionfetchLValueExpression ()
 
virtual bool isTrivialCopyable (UInt32 maxTreeDepth=3) const
 
const ExpressionfindFirstOf (const Types expressionType, UInt32 flags=SearchAll) const
 
const ExpressionfindFirstNotOf (const Types expressionType, UInt32 flags=SearchAll) const
 
Expressionfind (const FindPredicateConstFunctor &predicate, UInt32 flags=SearchAll)
 
ExpressionfindFirstOf (const Types expressionType, UInt32 flags=SearchAll)
 
ExpressionfindFirstNotOf (const Types expressionType, UInt32 flags=SearchAll)
 
- Public Member Functions inherited from CeresEngine::ShaderCompiler::TypedAST
const TypeDenoterPtrgetTypeDenoter (const TypeDenoter *expectedTypeDenoter=nullptr)
 
void resetTypeDenoter ()
 
- Public Member Functions inherited from CeresEngine::ShaderCompiler::AST
virtual ~AST ()
 
template<typename T >
Tas ()
 
template<typename T >
const Tas () const
 

Public Attributes

ExpressionPtr prefixExpression
 
bool isStatic = false
 
String ident
 
TypeDenoterPtr typeDenoter
 
Vector< ExpressionPtrarguments
 
FunctionDeclarationfuncDeclarationRef = nullptr
 
Intrinsic intrinsic = Intrinsic::Undefined
 
Vector< VarDeclaration * > defaultParamRefs
 
- Public Attributes inherited from CeresEngine::ShaderCompiler::AST
SourceArea area
 
RawFlags flags
 

Static Public Attributes

static const Types classType = Types:: CallExpression
 

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
canInlineIntrinsicWrapper 
isWrapperCall 

Constructor & Destructor Documentation

◆ CallExpression() [1/2]

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

◆ CallExpression() [2/2]

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

Member Function Documentation

◆ deriveTypeDenoter()

TypeDenoterPtr CeresEngine::ShaderCompiler::CallExpression::deriveTypeDenoter ( const TypeDenoter expectedTypeDenoter)
overridevirtual

◆ fetchSemantic()

IndexedSemantic CeresEngine::ShaderCompiler::CallExpression::fetchSemantic ( ) const
overridevirtual

◆ find()

const Expression * CeresEngine::ShaderCompiler::CallExpression::find ( const FindPredicateConstFunctor predicate,
UInt32  flags = SearchAll 
) const
overridevirtual

◆ forEachArgumentWithParameterType()

void CeresEngine::ShaderCompiler::CallExpression::forEachArgumentWithParameterType ( const ArgumentParameterTypeFunctor iterator)

◆ forEachOutputArgument()

void CeresEngine::ShaderCompiler::CallExpression::forEachOutputArgument ( const ExpressionIteratorFunctor iterator)

◆ getFunctionDeclaration()

FunctionDeclaration * CeresEngine::ShaderCompiler::CallExpression::getFunctionDeclaration ( ) const

◆ getFunctionImpl()

FunctionDeclaration * CeresEngine::ShaderCompiler::CallExpression::getFunctionImpl ( ) const

◆ getMemberFuncObjectExpression()

Expression * CeresEngine::ShaderCompiler::CallExpression::getMemberFuncObjectExpression ( ) const

◆ getType()

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

◆ mergeArguments()

bool CeresEngine::ShaderCompiler::CallExpression::mergeArguments ( std::size_t  firstArgIndex,
const MergeExpressionFunctor mergeFunctor 
)

◆ popPrefixFromArguments()

bool CeresEngine::ShaderCompiler::CallExpression::popPrefixFromArguments ( )

◆ pushArgumentFront()

void CeresEngine::ShaderCompiler::CallExpression::pushArgumentFront ( const ExpressionPtr expression)

◆ pushPrefixToArguments()

bool CeresEngine::ShaderCompiler::CallExpression::pushPrefixToArguments ( )

◆ visit()

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

Member Data Documentation

◆ arguments

Vector<ExpressionPtr> CeresEngine::ShaderCompiler::CallExpression::arguments

◆ classType

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

◆ defaultParamRefs

Vector<VarDeclaration*> CeresEngine::ShaderCompiler::CallExpression::defaultParamRefs

◆ funcDeclarationRef

FunctionDeclaration* CeresEngine::ShaderCompiler::CallExpression::funcDeclarationRef = nullptr

◆ ident

String CeresEngine::ShaderCompiler::CallExpression::ident

◆ intrinsic

Intrinsic CeresEngine::ShaderCompiler::CallExpression::intrinsic = Intrinsic::Undefined

◆ isStatic

bool CeresEngine::ShaderCompiler::CallExpression::isStatic = false

◆ prefixExpression

ExpressionPtr CeresEngine::ShaderCompiler::CallExpression::prefixExpression

◆ typeDenoter

TypeDenoterPtr CeresEngine::ShaderCompiler::CallExpression::typeDenoter

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