UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SemanticEnumeration.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2// uLang Compiler Public API
3
4#pragma once
5
14
15#define UE_API VERSECOMPILER_API
16
17namespace uLang
18{
19class CEnumeration;
20class CExprEnumLiteral;
21class CExprEnumDefinition;
22
27{
28public:
29
30 static constexpr EKind StaticDefinitionKind = EKind::Enumerator;
31
34
37
39
41
42 // CDefinition interface.
45
47 UE_API CExprEnumLiteral* GetIrNode(bool bForce = false) const;
48
49 UE_API virtual bool IsPersistenceCompatConstraint() const override;
50};
51
52
57class CEnumeration : public CDefinition, public CLogicalScope, public CNominalType
58{
59public:
60 static const ETypeKind StaticTypeKind = ETypeKind::Enumeration;
61 static const CDefinition::EKind StaticDefinitionKind = CDefinition::EKind::Enumeration;
62
64
66
68
69 // CTypeBase interface.
73 UE_API virtual bool IsPersistable() const override;
74 virtual bool IsExplicitlyCastable() const override { return false; }
75 virtual bool IsExplicitlyConcrete() const override { return false; }
76 virtual bool CanBeCustomAccessorDataType() const override { return true; };
77
78 // CNominalType interface.
79 virtual const CDefinition* Definition() const override { return this; }
80
81 // CScope interface.
82 virtual CSymbol GetScopeName() const override { return GetName(); }
83 virtual const CTypeBase* ScopeAsType() const override { return this; }
84 virtual const CDefinition* ScopeAsDefinition() const override { return this; }
86
87 // CDefinition interface.
90
92 UE_API CExprEnumDefinition* GetIrNode(bool bForce = false) const;
93
94 virtual const CLogicalScope* DefinitionAsLogicalScopeNullable() const override { return this; }
95
96 virtual bool IsPersistenceCompatConstraint() const override { return IsPersistable(); }
97
98 bool IsOpen() const { return GetOpenness() == EEnumOpenness::Open; }
99 bool IsClosed() const { return GetOpenness() == EEnumOpenness::Closed; }
100
101 enum class EEnumOpenness
102 {
103 Closed,
104 Open,
105 Invalid,
106 };
107
109};
110
111}
112
113#undef UE_API
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_API
Definition SColorGradingComponentViewer.h:12
Base class for everything that can have attributes attached to it (classes, expressions,...
Definition Attributable.h:51
Definition Definition.h:131
EKind
Definition Definition.h:135
Definition SemanticEnumeration.h:58
virtual const CTypeBase * ScopeAsType() const override
Definition SemanticEnumeration.h:83
CAttributable _EffectAttributable
Definition SemanticEnumeration.h:63
virtual const CLogicalScope * DefinitionAsLogicalScopeNullable() const override
Definition SemanticEnumeration.h:94
bool IsOpen() const
Definition SemanticEnumeration.h:98
virtual CSymbol GetScopeName() const override
Definition SemanticEnumeration.h:82
virtual const CDefinition * ScopeAsDefinition() const override
Definition SemanticEnumeration.h:84
UE_API void SetAstNode(CExprEnumDefinition *AstNode)
Definition SemanticEnumeration.cpp:86
UE_API CEnumerator & CreateEnumerator(const CSymbol &EnumeratorName, int32_t Value)
Definition SemanticEnumeration.cpp:63
bool IsClosed() const
Definition SemanticEnumeration.h:99
virtual bool CanBeCustomAccessorDataType() const override
Definition SemanticEnumeration.h:76
UE_API CExprEnumDefinition * GetAstNode() const
Definition SemanticEnumeration.cpp:90
UE_API EEnumOpenness GetOpenness() const
Definition SemanticEnumeration.cpp:104
virtual UE_API SAccessLevel GetDefaultDefinitionAccessLevel() const override
Definition SemanticEnumeration.cpp:81
EEnumOpenness
Definition SemanticEnumeration.h:102
virtual bool IsExplicitlyConcrete() const override
Definition SemanticEnumeration.h:75
static const ETypeKind StaticTypeKind
Definition SemanticEnumeration.h:60
virtual bool IsExplicitlyCastable() const override
Definition SemanticEnumeration.h:74
virtual const CDefinition * Definition() const override
Definition SemanticEnumeration.h:79
virtual bool IsPersistenceCompatConstraint() const override
Definition SemanticEnumeration.h:96
UE_API CExprEnumDefinition * GetIrNode(bool bForce=false) const
Definition SemanticEnumeration.cpp:99
UE_API void SetIrNode(CExprEnumDefinition *AstNode)
Definition SemanticEnumeration.cpp:95
virtual EComparability GetComparability() const override
Definition SemanticEnumeration.h:72
virtual UE_API bool IsPersistable() const override
Definition SemanticEnumeration.cpp:76
virtual UE_API SmallDefinitionArray FindTypeMember(const CSymbol &Name, EMemberOrigin Origin, const SQualifier &Qualifier=SQualifier::Unknown(), VisitStampType VisitStamp=CScope::GenerateNewVisitStamp()) const override
Definition SemanticEnumeration.cpp:71
static const CDefinition::EKind StaticDefinitionKind
Definition SemanticEnumeration.h:61
Definition SemanticEnumeration.h:27
static constexpr EKind StaticDefinitionKind
Definition SemanticEnumeration.h:30
UE_API CExprEnumLiteral * GetAstNode() const
Definition SemanticEnumeration.cpp:36
UE_API void SetIrNode(CExprEnumLiteral *AstNode)
Definition SemanticEnumeration.cpp:41
virtual UE_API bool IsPersistenceCompatConstraint() const override
Definition SemanticEnumeration.cpp:50
UE_API CUTF8String AsCode() const
Definition SemanticEnumeration.cpp:22
CEnumeration * _Enumeration
Type this enumerator belongs to.
Definition SemanticEnumeration.h:36
UE_API void SetAstNode(CExprEnumLiteral *AstNode)
Definition SemanticEnumeration.cpp:32
const int32_t _IntValue
The integer value denoting this enumerator for native representation.
Definition SemanticEnumeration.h:33
UE_API CExprEnumLiteral * GetIrNode(bool bForce=false) const
Definition SemanticEnumeration.cpp:45
Definition Expression.h:2875
Definition Expression.h:828
Definition SemanticScope.h:242
ULANG_FORCEINLINE const CSymbol & GetName() const
Definition Named.h:41
Class defining instance and class objects.
Definition SemanticTypes.h:608
Definition SemanticScope.h:73
static UE_API VisitStampType GenerateNewVisitStamp()
Generates a new stamp id.
Definition SemanticScope.cpp:562
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 Array.h:51
Definition VVMEngineEnvironment.h:23
uint32_t VisitStampType
Used to mark scopes already visited during a search.
Definition VisitStamp.h:11
ETypeKind
Definition SemanticTypes.h:92
EComparability
Definition SemanticTypes.h:113
EMemberOrigin
Specifies whether to find only member definitions originating in the current type,...
Definition MemberOrigin.h:10
Definition AccessLevel.h:15
Information about a given qualifier.
Definition Definition.h:35
static SQualifier Unknown()
Definition Definition.h:81