13#define UE_API VERSECOMPILER_API
21#define VERSE_ENUM_DEFINITION_KINDS(v) \
24 v(Enumeration, "enumeration") \
25 v(Enumerator, "enumerator") \
26 v(Function, "function") \
27 v(Interface, "interface") \
29 v(ModuleAlias, "module alias") \
30 v(TypeAlias, "type alias") \
31 v(TypeVariable, "type variable")
58 return U._NominalType;
65 return U._LogicalScope;
104 return !(*
this ==
Other);
111template<
class AstNodeType>
136 #define VISIT_KIND(Name, ...) Name,
161 if (_PrototypeDefinition->_LastOverridingVisitStamp ==
VisitStamp)
175 if (_ConstrainedDefinition)
186 template<
typename TDefinition>
189 template<
typename TDefinition>
192 template<
typename TDefinition>
193 bool IsA()
const {
return _Kind == TDefinition::StaticDefinitionKind; }
195 template<
typename TDefinition>
198 template<
typename TDefinition>
204 return _OverriddenDefinition;
223 ULANG_ASSERTF(_PrototypeDefinition ==
this,
"Setting constrained definition on instantiated definition");
228 return _PrototypeDefinition->_ConstrainedDefinition;
236 ULANG_ASSERTF(_PrototypeDefinition ==
this,
"Setting access level on instantiated definition");
331 ULANG_ASSERTF(_PrototypeDefinition ==
this,
"Setting IR node on instantiated definition");
336 ULANG_ASSERTF(_PrototypeDefinition ==
this,
"Setting IR node on instantiated definition");
348 const CDefinition* _PrototypeDefinition{
this };
351 const CDefinition* _OverriddenDefinition{
nullptr };
354 const CDefinition* _ConstrainedDefinition{
nullptr };
367template<
typename TDefinition>
374template<
typename TDefinition>
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define VERSE_ENUM_DEFINITION_KINDS(v)
Definition Definition.h:21
#define UE_API
Definition SColorGradingComponentViewer.h:12
#define ULANG_ASSERTF(expr, format,...)
Definition Common.h:290
Base class for everything that can have attributes attached to it (classes, expressions,...
Definition Attributable.h:51
Definition Definition.h:131
void SetCombinedAvailableVersion(uint64_t InAvailableVersion) const
Definition Definition.h:319
TDefinition * AsNullable()
Definition Definition.h:196
bool IsA() const
Definition Definition.h:193
UE_API SAccessLevel DerivedAccessLevel() const
Definition Definition.cpp:67
const CDefinition * GetPrototypeDefinition() const
Definition Definition.h:219
TOptional< uint64_t > GetCombinedAvailableVersion() const
Definition Definition.h:318
void SetOverriddenDefinition(const CDefinition *OverriddenDefinition)
Definition Definition.h:298
UE_API bool IsNative() const
Definition Definition.cpp:106
const CDefinition & GetDefinitionAccessibilityRoot() const
Definition Definition.h:285
SQualifier _Qualifier
Definition Definition.h:149
UE_API CDefinition(EKind Kind, CScope &EnclosingScope, const CSymbol &Name)
Definition Definition.cpp:39
TDefinition const & AsChecked() const
UE_API void SetName(const CSymbol &NewName)
Definition Definition.cpp:185
void SetConstrainedDefinition(const CDefinition &ConstrainedDefinition)
Definition Definition.h:221
void SetAstNode(CExpressionBase *AstNode)
Definition Definition.h:329
UE_API bool IsBuiltIn() const
Definition Definition.cpp:111
CScope & _EnclosingScope
Definition Definition.h:141
UE_API bool IsFinal() const
Definition Definition.cpp:96
bool IsExplicitlyLocallyQualified() const
If the definition is explicitly qualified with the (local:) identifier.
Definition Definition.cpp:162
UE_API bool IsDeprecated() const
Definition Definition.cpp:86
const CDefinition & GetBaseOverriddenDefinition() const
Definition Definition.h:206
UE_API bool IsExperimental() const
Definition Definition.cpp:91
const int32_t _ParentScopeOrdinal
Definition Definition.h:146
CExpressionBase * GetAstNode() const
Definition Definition.h:231
UE_API const CExpressionBase * GetNativeSpecifierExpression() const
Definition Definition.cpp:101
EKind
Definition Definition.h:135
TDefinition const * AsNullable() const
Definition Definition.h:199
UE_API SQualifier GetImplicitQualifier() const
Determines the qualifier for this definition, even if not explicitly specified (from the original sou...
Definition Definition.cpp:179
void SetAccessLevel(const TOptional< SAccessLevel > &AccessLevel)
Definition Definition.h:234
void SetIrNode(CExpressionBase *IrNode)
Definition Definition.h:334
virtual bool IsPersistenceCompatConstraint() const =0
bool TryMarkOverriddenAndConstrainedDefinitionsVisited(VisitStampType VisitStamp) const
Definition Definition.h:159
bool IsLocallyQualified() const
If the definition is implicitly local by virtue of being a definition within a function body/explicit...
Definition Definition.cpp:167
UE_API bool IsInstanceMember() const
Definition Definition.cpp:80
const TOptional< SAccessLevel > & SelfAccessLevel() const
Definition Definition.h:240
void SetPrototypeDefinition(const CDefinition &PrototypeDefinition)
Definition Definition.h:324
UE_API ~CDefinition()
Definition Definition.cpp:49
CExpressionBase * GetIrNode(bool bForce=false) const
Definition Definition.h:232
UE_API const CDefinition * GetEnclosingDefinition() const
Definition Definition.cpp:150
virtual const CLogicalScope * DefinitionAsLogicalScopeNullable() const
Definition Definition.h:267
EKind GetKind() const
Definition Definition.h:184
const CDefinition * GetOverriddenDefinition() const
Definition Definition.h:202
void SetOverriddenDefinition(const CDefinition &OverriddenDefinition)
Definition Definition.h:294
UE_API bool IsAccessibleFrom(const CScope &) const
Definition Definition.cpp:144
TDefinition & AsChecked()
Definition Definition.h:368
const CDefinition * GetConstrainedDefinition() const
Definition Definition.h:226
UE_API const CDefinition & GetBaseClassOverriddenDefinition() const
Definition Definition.cpp:57
Definition Expression.h:387
Definition SemanticScope.h:242
Class defining instance and class objects.
Definition SemanticTypes.h:608
Definition SemanticScope.h:73
Definition SharedPointer.h:28
Symbol representing a text string with an associated id.
Definition Symbol.h:98
Definition Definition.h:113
void SetIrNode(AstNodeType *IrNode)
Definition Definition.h:118
AstNodeType * GetAstNode() const
Definition Definition.h:115
void SetAstNode(AstNodeType *AstNode)
Definition Definition.h:117
AstNodeType * GetIrNode(bool bForce=false) const
Definition Definition.h:116
Definition VVMEngineEnvironment.h:23
uint32_t VisitStampType
Used to mark scopes already visited during a search.
Definition VisitStamp.h:11
uLang::TUTF8String< CHeapRawAllocator > CUTF8String
A string allocated on the heap.
Definition UTF8String.h:269
const char * DefinitionKindAsCString(CDefinition::EKind Kind)
Definition Definition.cpp:133
CUTF8String GetQualifiedNameString(const CDefinition &Definition)
Definition Definition.cpp:116
CUTF8String GetCrcNameString(const CDefinition &Definition)
Definition Definition.cpp:121
Definition Optional.h:131
Definition AccessLevel.h:15
Information about a given qualifier.
Definition Definition.h:35
const CNominalType * GetNominalType() const
Definition Definition.h:54
const CNominalType * _NominalType
Definition Definition.h:46
EType _Type
Definition Definition.h:50
const CLogicalScope * _LogicalScope
Definition Definition.h:47
static SQualifier Local()
Definition Definition.h:77
bool operator==(const SQualifier &Other) const
Definition Definition.h:96
union uLang::SQualifier::@2416 U
The definition that the qualifier is referring to.
bool IsUnspecified() const
Definition Definition.h:86
SQualifier GetConstrainedQualifier() const
Definition Definition.cpp:12
static SQualifier LogicalScope(const CLogicalScope *LogicalScope)
Definition Definition.h:73
const CLogicalScope * GetLogicalScope() const
Definition Definition.h:62
static SQualifier Unknown()
Definition Definition.h:81
bool operator!=(const SQualifier &Other) const
Definition Definition.h:102
static SQualifier NominalType(const CNominalType *NominalType)
Definition Definition.h:69
EType
Definition Definition.h:37
bool IsLocal() const
Definition Definition.h:91