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 TypeSpecifier * fetchTypeSpecifier () const
 
bool isAnonymous () const
 
- Public Member Functions inherited from CeresEngine::ShaderCompiler::TypedAST
const TypeDenoterPtr & getTypeDenoter (const TypeDenoter *expectedTypeDenoter=nullptr)
 
void resetTypeDenoter ()
 
- Public Member Functions inherited from CeresEngine::ShaderCompiler::AST
virtual ~AST ()
 
template<typename T >
T * as ()
 
template<typename T >
const T * as () const
 

Static Public Member Functions

static FunctionDeclaration * fetchFunctionDeclarationFromList (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 T * getAs (AST *ast)
 
template<typename T >
static const T * getAs (const AST *ast)
 

Public Attributes

TypeSpecifierPtr returnType
 
Vector< VarDeclarationStatementPtr > parameters
 
IndexedSemantic semantic = Semantic::Undefined
 
Vector< VarDeclarationStatementPtr > annotations
 
CodeBlockPtr codeBlock
 
ParameterSemantics inputSemantics
 
ParameterSemantics outputSemantics
 
BasicDeclarationStatement * declarationStatementRef = nullptr
 
FunctionDeclaration * funcImplRef = nullptr
 
Vector< FunctionDeclaration * > funcForwardDeclarationRefs
 
StructDeclaration * structDeclarationRef = nullptr
 
Vector< ParameterStructure > paramStructs
 
- 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: