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

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

Inheritance diagram for CeresEngine::ShaderCompiler::FunctionDeclaration:
CeresEngine::ShaderCompiler::Declaration CeresEngine::ShaderCompiler::TypedAST CeresEngine::ShaderCompiler::AST

Classes

struct  ParameterSemantics
 
struct  ParameterStructure
 

Public Types

enum  : UInt32 { isEntryPoint = (1u << ( 0 )) , isSecondaryEntryPoint = (1u << ( 1 )) , hasNonReturnControlPath = (1u << ( 2 )) }
 
- Public Types inherited from CeresEngine::ShaderCompiler::Declaration
enum  : UInt32 { isWrittenTo = (1u << ( 0 )) , isReadFrom = (1u << ( 1 )) }
 
- 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

 FunctionDeclaration (const SourcePosition &astPos)
 
 FunctionDeclaration (const SourceArea &astArea)
 
Types getType () const override
 
void visit (Visitor *visitor, void *args=nullptr) override
 
TypeDenoterPtr deriveTypeDenoter (const TypeDenoter *expectedTypeDenoter) override
 
bool isForwardDeclaration () const
 
bool hasVoidReturnType () const
 
bool isMemberFunction () const
 
bool isStatic () const
 
String toString () const override
 
String toString (bool useParamNames) const
 
String toTypeDenoterString () const
 
bool equalsSignature (const FunctionDeclaration &rhs, const RawFlags &compareFlags=0) const
 
std::size_t numMinArgs () const
 
std::size_t numMaxArgs () const
 
void setFuncImplRef (FunctionDeclaration *funcDeclaration)
 
bool matchParameterWithTypeDenoter (std::size_t paramIndex, const TypeDenoter &argType, bool implicitConversion) const
 
- Public Member Functions inherited from CeresEngine::ShaderCompiler::Declaration
virtual TypeSpecifierfetchTypeSpecifier () const
 
bool isAnonymous () const
 
- 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
 

Static Public Member Functions

static FunctionDeclarationfetchFunctionDeclarationFromList (const Vector< FunctionDeclaration * > &funcDeclarationList, const String &ident, const Vector< TypeDenoterPtr > &argTypeDenoters, bool throwErrorIfNoMatch=true)
 
- 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)
 

Public Attributes

TypeSpecifierPtr returnType
 
Vector< VarDeclarationStatementPtrparameters
 
IndexedSemantic semantic = Semantic::Undefined
 
Vector< VarDeclarationStatementPtrannotations
 
CodeBlockPtr codeBlock
 
ParameterSemantics inputSemantics
 
ParameterSemantics outputSemantics
 
BasicDeclarationStatementdeclarationStatementRef = nullptr
 
FunctionDeclarationfuncImplRef = nullptr
 
Vector< FunctionDeclaration * > funcForwardDeclarationRefs
 
StructDeclarationstructDeclarationRef = nullptr
 
Vector< ParameterStructureparamStructs
 
- Public Attributes inherited from CeresEngine::ShaderCompiler::Declaration
Identifier ident
 
- Public Attributes inherited from CeresEngine::ShaderCompiler::AST
SourceArea area
 
RawFlags flags
 

Static Public Attributes

static const Types classType = Types:: FunctionDeclaration
 

Additional Inherited Members

Member Enumeration Documentation

◆ anonymous enum

Enumerator
isEntryPoint 
isSecondaryEntryPoint 
hasNonReturnControlPath 

Constructor & Destructor Documentation

◆ FunctionDeclaration() [1/2]

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

◆ FunctionDeclaration() [2/2]

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

Member Function Documentation

◆ deriveTypeDenoter()

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

◆ equalsSignature()

bool CeresEngine::ShaderCompiler::FunctionDeclaration::equalsSignature ( const FunctionDeclaration rhs,
const RawFlags compareFlags = 0 
) const

◆ fetchFunctionDeclarationFromList()

static FunctionDeclaration * CeresEngine::ShaderCompiler::FunctionDeclaration::fetchFunctionDeclarationFromList ( const Vector< FunctionDeclaration * > &  funcDeclarationList,
const String ident,
const Vector< TypeDenoterPtr > &  argTypeDenoters,
bool  throwErrorIfNoMatch = true 
)
static

◆ getType()

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

◆ hasVoidReturnType()

bool CeresEngine::ShaderCompiler::FunctionDeclaration::hasVoidReturnType ( ) const

◆ isForwardDeclaration()

bool CeresEngine::ShaderCompiler::FunctionDeclaration::isForwardDeclaration ( ) const

◆ isMemberFunction()

bool CeresEngine::ShaderCompiler::FunctionDeclaration::isMemberFunction ( ) const

◆ isStatic()

bool CeresEngine::ShaderCompiler::FunctionDeclaration::isStatic ( ) const

◆ matchParameterWithTypeDenoter()

bool CeresEngine::ShaderCompiler::FunctionDeclaration::matchParameterWithTypeDenoter ( std::size_t  paramIndex,
const TypeDenoter argType,
bool  implicitConversion 
) const

◆ numMaxArgs()

std::size_t CeresEngine::ShaderCompiler::FunctionDeclaration::numMaxArgs ( ) const

◆ numMinArgs()

std::size_t CeresEngine::ShaderCompiler::FunctionDeclaration::numMinArgs ( ) const

◆ setFuncImplRef()

void CeresEngine::ShaderCompiler::FunctionDeclaration::setFuncImplRef ( FunctionDeclaration funcDeclaration)

◆ toString() [1/2]

String CeresEngine::ShaderCompiler::FunctionDeclaration::toString ( ) const
overridevirtual

◆ toString() [2/2]

String CeresEngine::ShaderCompiler::FunctionDeclaration::toString ( bool  useParamNames) const

◆ toTypeDenoterString()

String CeresEngine::ShaderCompiler::FunctionDeclaration::toTypeDenoterString ( ) const

◆ visit()

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

Member Data Documentation

◆ annotations

Vector<VarDeclarationStatementPtr> CeresEngine::ShaderCompiler::FunctionDeclaration::annotations

◆ classType

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

◆ codeBlock

CodeBlockPtr CeresEngine::ShaderCompiler::FunctionDeclaration::codeBlock

◆ declarationStatementRef

BasicDeclarationStatement* CeresEngine::ShaderCompiler::FunctionDeclaration::declarationStatementRef = nullptr

◆ funcForwardDeclarationRefs

Vector<FunctionDeclaration*> CeresEngine::ShaderCompiler::FunctionDeclaration::funcForwardDeclarationRefs

◆ funcImplRef

FunctionDeclaration* CeresEngine::ShaderCompiler::FunctionDeclaration::funcImplRef = nullptr

◆ inputSemantics

ParameterSemantics CeresEngine::ShaderCompiler::FunctionDeclaration::inputSemantics

◆ outputSemantics

ParameterSemantics CeresEngine::ShaderCompiler::FunctionDeclaration::outputSemantics

◆ parameters

Vector<VarDeclarationStatementPtr> CeresEngine::ShaderCompiler::FunctionDeclaration::parameters

◆ paramStructs

Vector<ParameterStructure> CeresEngine::ShaderCompiler::FunctionDeclaration::paramStructs

◆ returnType

TypeSpecifierPtr CeresEngine::ShaderCompiler::FunctionDeclaration::returnType

◆ semantic

IndexedSemantic CeresEngine::ShaderCompiler::FunctionDeclaration::semantic = Semantic::Undefined

◆ structDeclarationRef

StructDeclaration* CeresEngine::ShaderCompiler::FunctionDeclaration::structDeclarationRef = nullptr

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