19#define UE_API VERSECOMPILER_API
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
T * New(FMemStackBase &Mem, int32 Count=1, int32 Align=DEFAULT_ALIGNMENT)
Definition MemStack.h:259
#define UE_API
Definition SColorGradingComponentViewer.h:12
UEBinkAudioDecodeInterface * Interface
Definition binka_ue_decode_test.cpp:24
Definition Expression.h:3494
Base class for everything that can have attributes attached to it (classes, expressions,...
Definition Attributable.h:51
Definition Definition.h:131
void SetAstNode(CExpressionBase *AstNode)
Definition Definition.h:329
CExpressionBase * GetAstNode() const
Definition Definition.h:231
EKind
Definition Definition.h:135
void SetIrNode(CExpressionBase *IrNode)
Definition Definition.h:334
CExpressionBase * GetIrNode(bool bForce=false) const
Definition Definition.h:232
Definition Expression.h:2918
Definition SemanticFunction.h:75
Definition SemanticInterface.h:151
CInstantiatedInterface(CSemanticProgram &Program, const CInterface &Interface, ETypePolarity Polarity, TArray< STypeVariableSubstitution > Arguments)
Definition SemanticInterface.h:153
virtual UE_API const CNormalType & CreateNormalType() const override
Definition SemanticInterface.cpp:213
virtual bool CanBeCustomAccessorDataType() const override
Definition SemanticInterface.h:159
Definition SemanticTypes.h:1228
Definition SemanticInterface.h:25
TURefArray< CInterface > _InstantiatedInterfaces
Definition SemanticInterface.h:40
SAccessLevel DerivedConstructorAccessLevel() const
Definition SemanticInterface.h:77
virtual bool IsPersistenceCompatConstraint() const override
Definition SemanticInterface.h:125
UE_API bool HasFinalSuperBaseAttribute() const
Does this interface hold a <final_super_base> attribute?
Definition SemanticInterface.cpp:192
virtual const CDefinition * Definition() const override
Definition SemanticInterface.h:107
TArray< STypeVariableSubstitution > _TypeVariableSubstitutions
Definition SemanticInterface.h:38
CInterface(const CSymbol &Name, CScope &EnclosingScope, const TArray< CInterface * > &SuperInterfaces={})
Definition SemanticInterface.h:49
CAttributable _EffectAttributable
Definition SemanticInterface.h:31
TOptional< SAccessLevel > _ConstructorAccessLevel
Definition SemanticInterface.h:32
virtual bool IsExplicitlyCastable() const override
Is this interface castable either by having a castable attribute or inheriting one.
Definition SemanticInterface.h:138
void SetAstNode(CExprInterfaceDefinition *AstNode)
Definition SemanticInterface.h:110
CSemanticProgram & GetProgram() const
Definition SemanticTypes.h:143
virtual const CDefinition * ScopeAsDefinition() const override
Definition SemanticInterface.h:95
static const ETypeKind StaticTypeKind
Definition SemanticInterface.h:27
virtual UE_API SmallDefinitionArray FindDefinitions(const CSymbol &Name, EMemberOrigin Origin=EMemberOrigin::InheritedOrOriginal, const SQualifier &Qualifier=SQualifier::Unknown(), const CAstPackage *ContextPackage=nullptr, VisitStampType VisitStamp=GenerateNewVisitStamp()) const override
Definition SemanticInterface.cpp:79
CExprInterfaceDefinition * GetIrNode(bool bForce=false) const
Definition SemanticInterface.h:114
UE_API bool IsInterface(const CInterface &Interface) const
Determine if current interface is the same interface or a sub interface of the specified Interface
Definition SemanticInterface.cpp:197
CInterface * _GeneralizedInterface
Definition SemanticInterface.h:36
TArray< CInterface * > _SuperInterfaces
Definition SemanticInterface.h:34
CInterface(CScope &EnclosingScope, const CSymbol &Name, const TArray< CInterface * > &SuperInterfaces, CInterface *GeneralizedInterface, TArray< STypeVariableSubstitution > TypeVariableSubstitutions, bool bHasCyclesBroken)
Definition SemanticInterface.h:55
UE_API bool IsUnique() const
Definition SemanticInterface.cpp:150
virtual bool IsExplicitlyConcrete() const override
Interfaces are never explicitly concrete.
Definition SemanticInterface.h:141
virtual CSymbol GetScopeName() const override
Definition SemanticInterface.h:93
virtual bool CanBePredictsVarDataType() const override
Definition SemanticInterface.h:90
virtual bool CanBeCustomAccessorDataType() const override
Definition SemanticInterface.h:89
virtual UE_API SmallDefinitionArray FindInstanceMember(const CSymbol &Name, EMemberOrigin Origin, const SQualifier &Qualifier=SQualifier::Unknown(), const CAstPackage *ContextPackage=nullptr, VisitStampType VisitStamp=CScope::GenerateNewVisitStamp()) const override
Definition SemanticInterface.cpp:89
bool _bHasCyclesBroken
Definition SemanticInterface.h:46
CExprInterfaceDefinition * GetAstNode() const
Definition SemanticInterface.h:111
CInterface * _NegativeInterface
Definition SemanticInterface.h:44
virtual UE_API void CreateNegativeFunction(const CFunction &PositiveFunction) const override
Definition SemanticInterface.cpp:144
virtual UE_API EComparability GetComparability() const override
Definition SemanticInterface.cpp:112
UE_API bool HasCastableAttribute() const
Does this interface hold a castable attribute?
Definition SemanticInterface.cpp:169
bool IsParametric() const
Definition SemanticInterface.h:120
virtual const CTypeBase * ScopeAsType() const override
Definition SemanticInterface.h:94
virtual UE_API CUTF8String AsCodeRecursive(ETypeSyntaxPrecedence OuterPrecedence, TArray< const CFlowType * > &VisitedFlowTypes, bool bLinkable, ETypeStringFlag Flag) const override
Definition SemanticInterface.cpp:24
bool HasCyclesBroken() const
Definition SemanticInterface.h:118
virtual const CLogicalScope * DefinitionAsLogicalScopeNullable() const override
Definition SemanticInterface.h:116
void SetIrNode(CExprInterfaceDefinition *AstNode)
Definition SemanticInterface.h:113
static const CDefinition::EKind StaticDefinitionKind
Definition SemanticInterface.h:28
TUPtr< CInterface > _OwnedNegativeInterface
Definition SemanticInterface.h:42
virtual bool IsPersistable() const override
Definition SemanticInterface.h:135
UE_API const CNominalType * FindExplicitlyCastableBase() const
Return first class in the inheritance chain that contains the castable attribute. Otherwise null.
Definition SemanticInterface.cpp:174
Definition SemanticScope.h:242
ULANG_FORCEINLINE const CSymbol & GetName() const
Definition Named.h:41
Class defining instance and class objects.
Definition SemanticTypes.h:608
A normal type: a head normal form of types where the head is not a parametric type instantiation.
Definition SemanticTypes.h:217
Definition SemanticScope.h:73
static UE_API VisitStampType GenerateNewVisitStamp()
Generates a new stamp id.
Definition SemanticScope.cpp:562
Definition SemanticProgram.h:277
Symbol representing a text string with an associated id.
Definition Symbol.h:98
Base class for all types.
Definition SemanticTypes.h:138
CSemanticProgram & GetProgram() const
Definition SemanticTypes.h:143
Definition UniquePointerArray.h:16
Definition UniquePointer.h:15
Definition VVMEngineEnvironment.h:23
TArray< CInterface * > GetNegativeInterfaces(const TArray< CInterface * > &Interfaces)
Definition SemanticInterface.cpp:330
ETypeSyntaxPrecedence
Definition SemanticTypes.h:100
void InstantiatePositiveFunction(CLogicalScope &InstScope, const CNormalType &InstType, const CFunction &Function, const TArray< STypeVariableSubstitution > &Substitutions)
Definition SemanticInterface.cpp:358
TArray< STypeVariableSubstitution > InstantiateTypeVariableSubstitutions(const TArray< STypeVariableSubstitution > &TypeVariables, const TArray< STypeVariableSubstitution > &Substitutions)
Definition SemanticInterface.cpp:283
TArray< CInterface * > InstantiatePositiveInterfaces(const TArray< CInterface * > &Interfaces, const TArray< STypeVariableSubstitution > &Substitutions)
Definition SemanticInterface.cpp:315
uint32_t VisitStampType
Used to mark scopes already visited during a search.
Definition VisitStamp.h:11
ETypePolarity
Definition SemanticTypes.h:1131
ETypeKind
Definition SemanticTypes.h:92
TSRef< CFunction > CreateNegativeMemberFunction(CLogicalScope &NegativeScope, const CFunction &PositiveFunction)
Definition SemanticInterface.cpp:380
ETypeStringFlag
Definition SemanticTypes.h:121
void SetInstantiatedOverriddenDefinition(CDefinition &InstDefinition, const CNormalType &InstType, const CDefinition &Definition)
Definition SemanticInterface.cpp:341
void SetNegativeInterfaceMemberDefinitionTypes(const CInterface &PositiveInterface)
Definition SemanticInterface.cpp:388
CInterface * InstantiateInterface(const CInterface &Interface, ETypePolarity Polarity, const TArray< STypeVariableSubstitution > &Substitutions)
Definition SemanticInterface.cpp:300
ULANG_FORCEINLINE TRemoveReference< T >::Type && Move(T &&Obj)
Definition References.h:86
CInterface * InstantiatePositiveInterface(const CInterface &Interface, const TArray< STypeVariableSubstitution > &Substitutions)
Definition SemanticInterface.cpp:244
EComparability
Definition SemanticTypes.h:113
EMemberOrigin
Specifies whether to find only member definitions originating in the current type,...
Definition MemberOrigin.h:10
void SetNegativeMemberDefinitionType(CFunction &NegativeFunction, const CFunction &PositiveFunction)
Definition SemanticInterface.cpp:403
Definition AccessLevel.h:15
Information about a given qualifier.
Definition Definition.h:35
static SQualifier Unknown()
Definition Definition.h:81