UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SemanticProgram.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
18
19#define UE_API VERSECOMPILER_API
20
21namespace uLang
22{
23class CAstModule;
24class CModulePart;
25
27{
28 SEffectSet _EffectSet; // If we get this effect-set...
29 SEffectSet _RescindFromDefault; // ...we trim these from the default
30 uLang::TArray<const CClass*> _MutualExclusions; // ...but this effect set is not allowed with these others
31 bool _AllowInDecomposition = true; // When decomposing an effect set, allow this class to be used. Needed when deprecating an effect.
32};
33
39
50
62
67
68
73{
74public:
75 void SetAstPackage(CAstPackage* AstPackage) { ULANG_ASSERTF(!_IrPackage, "Called AST function when IR available"); _AstPackage = AstPackage; }
76 CAstPackage* GetAstPackage() const { ULANG_ASSERTF(!_IrPackage, "Called AST function when IR available"); return _AstPackage; }
78 CAstPackage* GetIrPackage() const { return _IrPackage ? _IrPackage : _AstPackage; }
79
80private:
81 CAstPackage* _AstPackage{ nullptr };
82 CAstPackage* _IrPackage{ nullptr };
83};
84
88class CModule : public CDefinition, public CNominalType, public CLogicalScope, public CAstPackageRef
89{
90public:
91 static const ETypeKind StaticTypeKind = ETypeKind::Module;
92 static const CDefinition::EKind StaticDefinitionKind = CDefinition::EKind::Module;
94
96
97 // Handling of partial module definitions
98 bool HasParts() const { return _Parts.IsFilled(); }
99 const PartArray& GetParts() const { return _Parts; }
101 UE_API bool IsExplicitDefinition() const;
102
103 // CScope interface
104 virtual CSymbol GetScopeName() const override { return CNamed::GetName(); }
105 virtual const CTypeBase* ScopeAsType() const override { return this; }
106 virtual const CDefinition* ScopeAsDefinition() const override { return this; }
107
108 // CLogicalScope interface
110 const CSymbol& Name,
112 const SQualifier& Qualifier = SQualifier::Unknown(),
113 const CAstPackage* ContextPackage = nullptr,
115
116 // CTypeBase interface.
118 virtual bool IsPersistable() const override { return false; }
119 virtual bool IsExplicitlyCastable() const override { return false; }
120 virtual bool IsExplicitlyConcrete() const override { return false; }
121 virtual bool CanBeCustomAccessorDataType() const override { return false; };
122
123 // CNominalType interface.
124 virtual const CDefinition* Definition() const override { return this; }
125
126 // CDefinition interface.
127 virtual const CLogicalScope* DefinitionAsLogicalScopeNullable() const override { return this; }
132
134
135 virtual bool IsPersistenceCompatConstraint() const override { return _bPersistenceCompatConstraint; }
136
137private:
138 // The partial modules that make up this module (in 99% of cases there will be just one)
139 PartArray _Parts;
140
141 mutable bool _bPersistenceCompatConstraint{ false };
142};
143
149class CModulePart : public CScope, public TAstNodeRef<CExprModuleDefinition>, public CAstPackageRef
150{
151public:
153
154 // This statically overrides CScope::GetModule() for efficiency, calling either override will return the same result
155 const CModule* GetModule() const { return &_Module; }
156 CModule* GetModule() { return &_Module; }
157 bool IsExplicitDefinition() const { return _bExplicitDefinition; }
159 const TOptional<uint64_t>& GetAvailableVersion() const { return _AvailableVersion; }
160
161 // CScope interface
162 virtual CSymbol GetScopeName() const override { return _Module.GetName(); }
163 virtual const CTypeBase* ScopeAsType() const override { return &_Module; }
164 virtual const CDefinition* ScopeAsDefinition() const override { return &_Module; }
165
166 virtual const CLogicalScope* AsLogicalScopeNullable() const override { return &_Module; }
167 virtual CLogicalScope* AsLogicalScopeNullable() override { return &_Module; }
168
169private:
170 CModule& _Module; // The module this part belongs to
171 bool _bExplicitDefinition; // True for definition via module macro, false for definition via directory or VersePath component
172 TOptional<uint64_t> _AvailableVersion; // Used to ensure that all multi-part module parts have the same version. That is currently a requirement.
173};
174
178class CSnippet : public CScope, public CNamed
179{
180public:
182
183 // CScope interface
184 virtual CSymbol GetScopeName() const override { return CNamed::GetName(); }
185};
186
191{
192public:
194
196
198
200
203
204 UE_API bool IsOperatorOpName(CSymbol) const;
205
206 UE_API bool IsPrefixOpName(CSymbol) const;
207
208 UE_API bool IsPostfixOpName(CSymbol) const;
209
227
233
235
237
240
241 // @available symbols
243
245
246private:
247 CUTF8StringView _OperatorOpNamePrefix;
248 CUTF8StringView _PrefixOpNamePrefix;
249 CUTF8StringView _PostfixOpNamePrefix;
250 CUTF8StringView _OpNameSuffix;
251 CUTF8StringView _ExtensionFieldPrefix;
252 CUTF8StringView _ExtensionFieldSuffix;
253};
254
259{
260public:
264
265 // CScope interface
266 virtual CSymbol GetScopeName() const override { return GetSymbols()->AddChecked("CompatConstraintRoot"); }
267
269};
270
272
277{
278public:
279// Public data members
280
281 // An optional root module for a compatible ancestor of the current code.
285
286 // The notional package that is created to contain the built-in definitions.
288
289 // The /Verse.org/Verse module.
291
292 // Global types for the program.
306
307 // Non-globalTypes that have an alias
308 const CTypeType* _typeType{nullptr};
309 const CIntType* _intType{nullptr};
310 const CFloatType* _floatType{nullptr};
311
325
326 // Task class
327 UE_API const CFunction* GetTaskFunction() const;
328 UE_API const CClass* GetTaskClass() const;
330
331 // Leaderboard class
333
334 // Attribute classes
336 CClass* _abstractClass{nullptr}; // <abstract> - class: cannot be instantiated - only its subclasses
337 CClass* _finalClass{nullptr}; // <final> - class: cannot be used as superclass; routine: cannot be overridden
338 CClass* _concreteClass{nullptr}; // <concrete> - class: all properties, including superclasses, must have initializers.
339 CClass* _uniqueClass{nullptr}; // <unique> - class: comparable with only the same instances equal
340 CClass* _intrinsicClass{nullptr}; // <intrinsic> - implementation is generated inline by backend
341 CClass* _nativeClass{nullptr}; // <native> - native body/implementation in C++
342 CClass* _nativeCallClass{nullptr}; // <native_callable> - script function which can be called from C++
343 CClass* _castableClass{nullptr}; // <castable> - enforces that a class or interface is castable - effectively non-parametric
344 CClass* _finalSuperClass{ nullptr }; // <final_super> - enforces that this class is always a direct descendant of its original class or interface through back compat
345 CClass* _finalSuperBaseClass{nullptr};// <final_super_base> - enforces that any type published as a direct subtype of this class will always be a direct subtype through back compat checking
346
347 CClass* _suspendsClass{nullptr}; // <suspends> - a durational, coroutine function
348 CClass* _decidesClass{nullptr}; // <decides> - failure effect
349 CClass* _variesClassDeprecated{nullptr}; // <varies> - impure meta-effect: non-referentially transparent
350 CClass* _computesClass{nullptr}; // <computes> - pure meta-effect: referentially transparent
351 CClass* _convergesClass{nullptr}; // <converges> - converges meta-effect: function is guaranteed to return in finite time
352 CClass* _transactsClass{nullptr}; // <transacts> - equivalent to computes+reads+writes+allocates
353 CClass* _readsClass{nullptr}; // <reads> - pointer reading. Part of transacts.
354 CClass* _writesClass{nullptr}; // <writes> - pointer writing. Part of transacts.
355 CClass* _allocatesClass{nullptr}; // <allocates> - adds some finer granularity on <varies> for unique classes and mutable values
356
357 CClass* _constructorClass{nullptr}; // <constructor> - this function is a constructor for the result class
358 CClass* _openClass{nullptr}; // <open> - used for open enumerations
359 CClass* _closedClass{nullptr}; // <closed> - default for enumerations - opposite of open
360 CClass* _overrideClass{nullptr}; // <override> - this function overrides an inherited function
361 CClass* _publicClass{nullptr}; // <public> - member which can be accessed from anywhere
362 CClass* _privateClass{nullptr}; // <private> - member which can only be accessed by the owning class
363 CClass* _protectedClass{nullptr}; // <protected> - member which can only be accessed by the owning class and sub-classes
364 CClass* _internalClass{nullptr}; // <internal> - member which can only be accessed by the current module
365 CClass* _scopedClass{ nullptr }; // <scoped> - member which can only be accessed by a code-specified list of modules
366 CClass* _epicInternalClass{nullptr}; // <epic_internal> - member which can only be accessed in Epic code
367 CClass* _localizes{nullptr}; // <localizes> - data definition or function that should resolve to a 'message' at runtime
368 CClass* _ignore_unreachable{nullptr};// @ignore_unreachable - unreachable code that can be ignored
369 CClass* _deprecatedClass{nullptr}; // @deprecated - this definition is deprecated
370 CClass* _experimentalClass{nullptr}; // @experimental - this definition is experimental
371 CClass* _persistentClass{nullptr}; // <persistent> - specify a `module_scoped_var_weak_map_key`'s related value is persistent
372 CClass* _persistableClass{nullptr}; // <persistable> - `struct` may be stored in a module-scoped `var` with `persistent` key
373 CClass* _moduleScopedVarWeakMapKeyClass{nullptr}; // <module_scoped_var_weak_map_key> - allow use as module-scoped `var` `weak_map` key
374 CClass* _rtfmAlwaysOpen{nullptr}; // @rtfm_always_open - this native function can always run in the open
375 CClass* _vmNoEffectToken{nullptr}; // @vm_no_effect_token - this native function can run without a concrete effect token
378 CClass* _predictsClass{nullptr}; // <predicts> - data definition that should be accessible from <predicts> contexts
379
380 CClass* _attributeScopeAttribute{ nullptr }; // @attribscope_attribute - attribute which can be used with prefix @attr syntax
381 CClass* _attributeScopeSpecifier{ nullptr }; // @attribscope_specifier - attribute which can be used with suffix <spec> syntax
382 CClass* _attributeScopeModule{nullptr}; // @attribscope_module - attribute which can be used on the module definition scope
383 CClass* _attributeScopeClass{nullptr}; // @attribscope_class - attribute which can be used on the class definition scope
384 CClass* _attributeScopeStruct{nullptr}; // @attribscope_struct - attribute which can be used on the struct definition scope
385 CClass* _attributeScopeData{nullptr}; // @attribscope_data - attribute which can be used on defining data members within a class
386 CClass* _attributeScopeFunction{nullptr}; // @attribscope_function - attribute which can be used on functions
387 CClass* _attributeScopeEnum{nullptr}; // @attribscope_enum - attribute which can be used on enumerations
388 CClass* _attributeScopeEnumerator{nullptr}; // @attribscope_enumerator - attribute which can be used on a single enumeration value
389 CClass* _attributeScopeAttributeClass{nullptr}; // @attribscope_attribclass - attribute which can be used on attribute classes
390 CClass* _attributeScopeInterface{nullptr}; // @attribscope_interface - attribute which can be used on interfaces
391 CClass* _attributeScopeIdentifier{nullptr}; // @attribscope_identifier - attribute which can be used on identifier expressions
392 CClass* _attributeScopeExpression{nullptr}; // @attribscope_expression - attribute which can be used on expressions
393 CClass* _attributeScopeClassMacro{nullptr}; // @attribscope_classmacro - attribute which can be used class<here>{}
394 CClass* _attributeScopeStructMacro{nullptr}; // @attribscope_structmacro - attribute which can be used struct<here>{}
395 CClass* _attributeScopeInterfaceMacro{nullptr}; // @attribscope_interfacemacro - attribute which can be used interface<here>{}
396 CClass* _attributeScopeEnumMacro{nullptr}; // @attribscope_enummacro - attribute which can be used enum<here>{}
397 CClass* _attributeScopeVar{nullptr}; // @attribscope_var - attribute which can be used var<here>
398 CClass* _attributeScopeName{nullptr}; // @attribscope_name - attribute which can be used on names
399 CClass* _attributeScopeEffect{nullptr}; // @attribscope_effect - attribute which can be used as an effect
400 CClass* _attributeScopeTypeDefinition{nullptr}; // @attribscope_typedefinition - attribute which can be on type definitions
401 CClass* _attributeScopeScopedDefinition{nullptr}; // @attribscope_scopeddefinition - attribute which can be on scoped access level definitions
402 CClass* _customAttributeHandler{nullptr}; // @customattribhandler - attribute has a native custom handler to process
403
404 CClass* _availableClass{nullptr}; // @available - this definition is only available in certain versions
405
406 // Cached references to some attributes that are defined in code, but commonly interpreted by the compiler.
407 template<typename DefinitionType>
409 {
412 {
413 if (!_CachedValue.IsSet())
414 {
415 // If not found, cache a null result as well so we won't keep trying indefinitely to find it
416 _CachedValue = _Program.FindDefinitionByVersePath<DefinitionType>(_Path);
417 }
418 return *_CachedValue;
419 }
420 private:
421 CSemanticProgram& _Program;
422 CUTF8String _Path;
423 mutable TOptional<DefinitionType*> _CachedValue;
424 };
425
426 TCachedIntrinsicDefinition<CClassDefinition> _editable{ *this,"/Verse.org/Simulation/editable" };
427 TCachedIntrinsicDefinition<CClassDefinition> _editable_non_concrete{ *this,"/Verse.org/Simulation/editable_non_concrete" };
428
429 TCachedIntrinsicDefinition<CClassDefinition> _import_as_attribute{ *this,"/Verse.org/Native/import_as_attribute" };
430 TCachedIntrinsicDefinition<CFunction> _import_as{ *this,"/Verse.org/Native/import_as" };
431
432 TCachedIntrinsicDefinition<CClassDefinition> _doc_attribute{ *this,"/Verse.org/Native/doc_attribute" };
433
435
436 TCachedIntrinsicDefinition<CClassDefinition> _agent_class{ *this, "/Verse.org/Simulation/agent" };
437
438 TCachedIntrinsicDefinition<CClassDefinition> _replicated{ *this, "/Verse.org/Temporary/EpicGamesRestricted/Network/replicated_attribute" };
439
440 // Intrinsic functions.
443
453
458
462
473
476
481
487#if WITH_VERSE_VM || defined(__INTELLISENSE__)
488 CFunction* _ArrayRefCallOp1{nullptr};
489#endif
490
494
497#if WITH_VERSE_VM || defined(__INTELLISENSE__)
499#endif
501
503
505
507
510
514
517
518 // Quick access names
520
522
524
526
527private:
528 TSPtr<CAstProject> _IrProject;
529public:
530
531 // The get-method is written to work even if no IR is generated.
532 // This is to make it easier to run with and without IR, a useful feature while developing the IR.
533 // It's temporary and won't work after IrNode is its own type distinct from AstNode.
534 TSPtr<CAstProject>& GetIrProject() { return _IrProject ? _IrProject : _AstProject; }
535 void SetIrProject(const TSPtr<CAstProject>& project) { _IrProject = project; }
536
537// Methods
538
543 {
544 // Destroy IR first. There are several asserts that fail if Ast is destroyed before IR.
545 _IrProject.Reset();
546
547 // Make sure the AST is deleted before any of the types to satisfy the assertions that check
548 // that the type<->AST node links are cleaned up correctly.
549 _AstProject.Reset();
550 }
551
553
554 ULANG_FORCEINLINE const TSPtr<CSymbolTable>& GetSymbols() const { return _Symbols; }
555
557 UE_API CSnippet* FindSnippet(const CUTF8StringView& NameStr) const;
558
559 UE_API CArrayType& GetOrCreateArrayType(const CTypeBase* ElementType);
560
562
563 UE_API CMapType& GetOrCreateMapType(const CTypeBase* KeyType, const CTypeBase* ValueType);
564 UE_API CMapType& GetOrCreateWeakMapType(const CTypeBase& KeyType, const CTypeBase& ValueType);
565 UE_API CMapType& GetOrCreateMapType(const CTypeBase& KeyType, const CTypeBase& ValueType, bool bWeak);
566
567 UE_API CPointerType& GetOrCreatePointerType(const CTypeBase* NegativeValueType, const CTypeBase* PositiveValueType);
568
569 UE_API CReferenceType& GetOrCreateReferenceType(const CTypeBase* NegativeValueType, const CTypeBase* PositiveValueType);
570
572
573 UE_API CTypeType& GetOrCreateTypeType(const CTypeBase* NegativeType, const CTypeBase* PositiveType);
574 UE_API CTypeType& GetOrCreateSubtypeType(const CTypeBase* PositiveType);
575
578
581 CTupleType::ElementArray&& Elements,
583
586 const CTypeBase* ValueType,
587 bool HasValue);
589 const CTypeBase& ParamsType,
590 const CTypeBase& ReturnType,
591 SEffectSet Effects = EffectSets::FunctionDefault,
593 bool ImplicitlySpecialized = false);
594
596 UE_API const CFloatType& GetOrCreateConstrainedFloatType(double Min, double Max);
597
599 UE_API CFlowType& CreateFlowType(ETypePolarity, const CTypeBase*);
602
604
606
613
615 CFunction*,
616 CSymbol DataName,
617 CSymbol TypeName,
619 const CTypeType* Type);
620
622
623 const CUnknownType* GetDefaultUnknownType() const { return _DefaultUnknownType.Get(); }
624
625 // Find definition by Verse path
626 template<class T>
628 {
629 CDefinition* Definition = FindDefinitionByVersePathInternal(VersePath);
630 return Definition ? Definition->AsNullable<T>() : nullptr;
631 }
632
635
637 // TODO-Verse: This might be always done, though it may be done solely by converting a CSyntaxProgram
638 UE_API void PopulateCoreAPI();
639
640 //~ Begin CScope interface
641 virtual CSymbol GetScopeName() const override { return CSymbol(); } // Program has no name
642 //~ End CScope interface
643
645 {
646 return _NumFunctions++;
647 }
648
649 // Construct the effects descriptor table against this instance of the program's notion of the effect classes
650 UE_API const SEffectDescriptor& FindEffectDescriptorChecked(const CClass* effectKey, uint32_t UploadedAtFNVersion = VerseFN::UploadedAtFNVersion::Latest) const;
651 inline const TArray<const CClass*>& GetAllEffectClasses() const { return _AllEffectClasses; }
652
657 uint32_t UploadedAtFNVersion = VerseFN::UploadedAtFNVersion::Latest) const;
658
660
662
663#if WITH_VERSE_BPVM
666#endif
667
668private:
669 friend class CScope;
670 friend class CLogicalScope;
671 friend class CDefinition;
672
673 // Snippets
675
676 // Array types
678
679 // Generator types
681
682 // Map types
684
685 // Pointer types
687
688 // Reference types
690
691 // Option types
693
694 // Type types
696
697 // Castable types
699
700 // Concrete types
702
703 // Named argument types
705
706 // Flow types
707 TURefArray<CFlowType> _FlowTypes;
708
709 // Ints constrained with the 'where' clause (the top int also happens to be retained here for easy hash-consing).
710 TURefArray<CIntType> _ConstrainedIntTypes;
711
712 // Floats constrained with the 'where' clause (the top float also happens to be retained here for easy hash-consing).
713 TURefArray<CFloatType> _ConstrainedFloatTypes;
714
715 // Instantiated classes
716 TURefArray<CInstantiatedClass> _InstantiatedClasses;
717
718 // Instantiated interfaces
719 TURefArray<CInstantiatedInterface> _InstantiatedInterfaces;
720
721 // Default unknown type
722 TUPtr<CUnknownType> _DefaultUnknownType;
723
726 TSPtr<CSymbolTable> _Symbols;
727
728 // A cached reference to the task(t) function.
729 mutable CFunction* _taskFunction{nullptr};
730
731 // A cached reference to the leaderboard class.
732 mutable CClassDefinition* _leaderboardClassDefinition{ nullptr };
733
734 int32_t _NumFunctions{0};
735
736 // We choose between these effects tables based on the UploadedAtFNVersion. If we end up versioning this
737 // further, we should consider some more expandable structure to put them all in.
738 TMap<const CClass*, SEffectDescriptor> _EffectDescriptorTable;
739 TMap<const CClass*, SEffectDescriptor> _EffectDescriptorTable_Pre3100;
740
741 TArray<const CClass*> _AllEffectClasses;
742 TArray<SDecompositionMapping> _OrderedEffectDecompositionData;
743 TMap<const CClass*, int32_t> _OrderedEffectDecompositionDataIndexFromClass;
744
745 bool bEffectsTablePopulated{ false };
746 UE_API void PopulateEffectDescriptorTable();
747 UE_API void ValidateEffectDescriptorTable(const TMap<const CClass*, SEffectDescriptor>& DescriptorTable) const;
748 UE_API CDefinition* FindDefinitionByVersePathInternal(CUTF8StringView VersePath) const;
749 UE_API const TMap<const CClass*, SEffectDescriptor>& GetEffectDescriptorTableForVersion(uint32_t UploadedAtFNVersion) const;
750
751 mutable TMap<SCachedEffectSetToEffectClassesKey, TArray<const CClass*>> _CachedEffectSetToEffectClasses;
752
754
755#if WITH_VERSE_BPVM
756 // Caches of some profiling data structures
757 const CTupleType* _ProfileDataType = nullptr;
758 const CTupleType* _ProfileLocusType = nullptr;
759#endif
760};
761
762} // namespace uLang
763
764#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
#define ULANG_FORCEINLINE
Definition Common.h:188
#define ULANG_ASSERTF(expr, format,...)
Definition Common.h:290
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SemanticTypes.h:788
Definition SemanticProgram.h:73
void SetAstPackage(CAstPackage *AstPackage)
Definition SemanticProgram.h:75
CAstPackage * GetAstPackage() const
Definition SemanticProgram.h:76
CAstPackage * GetIrPackage() const
Definition SemanticProgram.h:78
void SetIrPackage(CAstPackage *IrPackage)
Definition SemanticProgram.h:77
Definition Expression.h:3494
Base class for everything that can have attributes attached to it (classes, expressions,...
Definition Attributable.h:51
Definition SemanticTypes.h:460
Definition SemanticClass.h:207
Definition SemanticClass.h:33
Definition SemanticProgram.h:259
virtual CSymbol GetScopeName() const override
Definition SemanticProgram.h:266
virtual UE_API SmallDefinitionArray FindDefinitions(const CSymbol &Name, EMemberOrigin, const SQualifier &Qualifier, const CAstPackage *ContextPackage, VisitStampType) const override
Definition SemanticProgram.cpp:216
CCompatConstraintRoot(CSemanticProgram &Program)
Definition SemanticProgram.h:261
Definition SemanticTypes.h:533
Definition DataDefinition.h:41
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
EOp
Definition Expression.h:1689
Definition Expression.h:2849
Definition SemanticTypes.h:1392
Definition SemanticTypes.h:1144
Definition SemanticTypes.h:1055
Definition SemanticFunction.h:75
Definition SemanticTypes.h:851
Definition SemanticClass.h:246
Definition SemanticInterface.h:151
Definition SemanticTypes.h:1357
Definition SemanticInterface.h:25
Definition SemanticProgram.h:191
CSymbol _FuncNameFloor
Definition SemanticProgram.h:230
CSymbol _OpNameSub
Definition SemanticProgram.h:212
CSymbol _OpNameEqual
Definition SemanticProgram.h:219
CSymbol _FuncNameWeakMap
Definition SemanticProgram.h:231
CSymbol _FuncNameAbs
Definition SemanticProgram.h:228
UE_API CSymbol GetArithmeticOpName(CExprBinaryArithmetic::EOp) const
Definition SemanticProgram.cpp:144
CSymbol _Inf
Definition SemanticProgram.h:238
CSymbol _MinUploadedAtFNVersion
Definition SemanticProgram.h:242
CSymbol _OpNameAdd
Definition SemanticProgram.h:211
CSymbol _FuncNameCeil
Definition SemanticProgram.h:229
CSymbol _OpNameLess
Definition SemanticProgram.h:215
UE_API CUTF8StringView StripExtensionFieldOpName(CSymbol FieldName) const
Definition SemanticProgram.cpp:191
CSymbol _OpNameNegate
Definition SemanticProgram.h:210
CSymbol _OpNameSubRMW
Definition SemanticProgram.h:222
UE_API bool IsOperatorOpName(CSymbol) const
Definition SemanticProgram.cpp:198
CSymbol _FuncNameFitsInPlayerMap
Definition SemanticProgram.h:232
CSymbol _OpNameMulRMW
Definition SemanticProgram.h:223
CSymbol _OpNameDivRMW
Definition SemanticProgram.h:224
CSymbol _OpNameCall
Definition SemanticProgram.h:225
UE_API bool IsPostfixOpName(CSymbol) const
Definition SemanticProgram.cpp:210
CSymbol _OpNameMul
Definition SemanticProgram.h:213
CSymbol _Wildcard
Definition SemanticProgram.h:236
UE_API CSymbol GetComparisonOpName(CExprComparison::EOp) const
Definition SemanticProgram.cpp:156
CSymbol _NaN
Definition SemanticProgram.h:239
CSymbol _OpNameGreater
Definition SemanticProgram.h:217
CSymbol _OpNameNotEqual
Definition SemanticProgram.h:220
CSymbol _OpNameQuery
Definition SemanticProgram.h:226
CSymbol _OpNameDiv
Definition SemanticProgram.h:214
CSymbol _OpNameGreaterEqual
Definition SemanticProgram.h:218
CSymbol _VersePath
Definition SemanticProgram.h:244
UE_API CUTF8String MakeExtensionFieldOpName(CSymbol FieldName) const
Definition SemanticProgram.cpp:182
CSymbol _OpNameAddRMW
Definition SemanticProgram.h:221
CSymbol _OpNameLessEqual
Definition SemanticProgram.h:216
UE_API bool IsPrefixOpName(CSymbol) const
Definition SemanticProgram.cpp:204
UE_API CSymbol GetAssignmentOpName(CExprAssignment::EOp) const
Definition SemanticProgram.cpp:170
CSymbol _FieldNameLength
Definition SemanticProgram.h:234
Definition SemanticScope.h:242
SemanticRevision GetRevision() const
Definition SemanticScope.h:278
Definition SemanticTypes.h:880
Definition SemanticProgram.h:150
void SetAvailableVersion(TOptional< uint64_t > InAvailableVersion)
Definition SemanticProgram.h:158
const TOptional< uint64_t > & GetAvailableVersion() const
Definition SemanticProgram.h:159
CModulePart(CModule &Module, CScope *ParentScope, bool bExplicitDefinition, CSemanticProgram &Program)
Definition SemanticProgram.h:152
virtual const CTypeBase * ScopeAsType() const override
Definition SemanticProgram.h:163
virtual CSymbol GetScopeName() const override
Definition SemanticProgram.h:162
virtual CLogicalScope * AsLogicalScopeNullable() override
Definition SemanticProgram.h:167
virtual const CDefinition * ScopeAsDefinition() const override
Definition SemanticProgram.h:164
CModule * GetModule()
Definition SemanticProgram.h:156
virtual const CLogicalScope * AsLogicalScopeNullable() const override
Iff this scope is a logical scope, return it a pointer to it. Otherwise, return null.
Definition SemanticProgram.h:166
bool IsExplicitDefinition() const
Definition SemanticProgram.h:157
const CModule * GetModule() const
Definition SemanticProgram.h:155
Definition SemanticProgram.h:89
virtual bool IsExplicitlyCastable() const override
Definition SemanticProgram.h:119
CExprModuleDefinition * GetIrNode(bool bForce=false) const
Definition SemanticProgram.h:131
CExprModuleDefinition * GetAstNode() const
Definition SemanticProgram.h:129
virtual bool IsPersistenceCompatConstraint() const override
Definition SemanticProgram.h:135
UE_API void MarkPersistenceCompatConstraint() const
Definition SemanticProgram.cpp:58
static const CDefinition::EKind StaticDefinitionKind
Definition SemanticProgram.h:92
void SetAstNode(CExprModuleDefinition *AstNode)
Definition SemanticProgram.h:128
virtual bool CanBeCustomAccessorDataType() const override
Definition SemanticProgram.h:121
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 SemanticProgram.cpp:74
virtual bool IsExplicitlyConcrete() const override
Definition SemanticProgram.h:120
virtual const CTypeBase * ScopeAsType() const override
Definition SemanticProgram.h:105
virtual const CDefinition * Definition() const override
Definition SemanticProgram.h:124
virtual CSymbol GetScopeName() const override
Definition SemanticProgram.h:104
UE_API bool IsExplicitDefinition() const
Definition SemanticProgram.cpp:35
virtual const CDefinition * ScopeAsDefinition() const override
Definition SemanticProgram.h:106
virtual const CLogicalScope * DefinitionAsLogicalScopeNullable() const override
Definition SemanticProgram.h:127
virtual UE_API SmallDefinitionArray FindInstanceMember(const CSymbol &Name, EMemberOrigin Origin, const SQualifier &Qualifier, const CAstPackage *ContextPackage=nullptr, VisitStampType VisitStamp=CScope::GenerateNewVisitStamp()) const override
Definition SemanticProgram.cpp:49
UE_API CModulePart & CreatePart(CScope *ParentScope, bool bExplicitDefinition)
Definition SemanticProgram.cpp:30
static const ETypeKind StaticTypeKind
Definition SemanticProgram.h:91
bool HasParts() const
Definition SemanticProgram.h:98
TUPtrArrayG< CModulePart, false, TInlineElementAllocator< 1 > > PartArray
Definition SemanticProgram.h:93
const PartArray & GetParts() const
Definition SemanticProgram.h:99
void SetIrNode(CExprModuleDefinition *AstNode)
Definition SemanticProgram.h:130
virtual bool IsPersistable() const override
Definition SemanticProgram.h:118
Definition SemanticTypes.h:1269
Definition Named.h:15
ULANG_FORCEINLINE const CSymbol & GetName() const
Definition Named.h:41
Class defining instance and class objects.
Definition SemanticTypes.h:608
Definition SemanticTypes.h:760
Definition SemanticTypes.h:685
Definition SemanticTypes.h:712
Definition SemanticScope.h:73
UE_API const TSPtr< CSymbolTable > & GetSymbols() const
Definition SemanticScope.cpp:248
EKind
Definition SemanticScope.h:76
static UE_API VisitStampType GenerateNewVisitStamp()
Generates a new stamp id.
Definition SemanticScope.cpp:562
Definition SemanticProgram.h:277
UE_API CMapType & GetOrCreateMapType(const CTypeBase *KeyType, const CTypeBase *ValueType)
Definition SemanticProgram.cpp:357
TSPtr< CCompatConstraintRoot > _PersistenceSoftCompatConstraintRoot
Definition SemanticProgram.h:284
CClass * _uniqueClass
Definition SemanticProgram.h:339
CClass * _openClass
Definition SemanticProgram.h:358
TCachedIntrinsicDefinition< CClassDefinition > _doc_attribute
Definition SemanticProgram.h:432
CFunction * _WeakMapCallOp
Definition SemanticProgram.h:495
CClass * _attributeScopeExpression
Definition SemanticProgram.h:392
CClass * _allocatesClass
Definition SemanticProgram.h:355
CClass * _attributeScopeEnum
Definition SemanticProgram.h:387
CConcreteType & GetOrCreateConcreteType(const CTypeBase &SuperType)
Definition SemanticProgram.cpp:456
CFunction * _MapConcatenateMaps
Definition SemanticProgram.h:493
CFunction * _PredictsGetDataValue
Definition SemanticProgram.h:515
CClass * _attributeScopeData
Definition SemanticProgram.h:385
CClass * _writesClass
Definition SemanticProgram.h:354
CFunction * _ComparableNotEqualOp
Definition SemanticProgram.h:442
CFunction * _FloatDivideOp
Definition SemanticProgram.h:467
CTypeAlias * _logicAlias
Definition SemanticProgram.h:317
CClass * _moduleScopedVarWeakMapKeyClass
Definition SemanticProgram.h:373
CFunction * _PredictsGetDataRef
Definition SemanticProgram.h:516
CAnyType _anyType
Definition SemanticProgram.h:296
CFunction * _IntNegateOp
Definition SemanticProgram.h:444
CTypeAlias * _char8Alias
Definition SemanticProgram.h:321
CComparableType _comparableType
Definition SemanticProgram.h:297
CFunction * _IntGreaterEqualOp
Definition SemanticProgram.h:455
CFlowType & CreateNegativeFlowType()
Definition SemanticProgram.h:600
CFunction * _FloatGreaterEqualOp
Definition SemanticProgram.h:478
TCachedIntrinsicDefinition< CClassDefinition > _import_as_attribute
Definition SemanticProgram.h:429
TSPtr< CAstProject > & GetIrProject()
Definition SemanticProgram.h:534
CFunction * _Setter
Definition SemanticProgram.h:512
CTupleType _EmptyTupleType
Definition SemanticProgram.h:305
CTypeAlias * _char32Alias
Definition SemanticProgram.h:322
CClass * _customAttributeHandler
Definition SemanticProgram.h:402
CClass * _attributeScopeEnumerator
Definition SemanticProgram.h:388
CFunction * _MapRefCallOp
Definition SemanticProgram.h:491
friend class CDefinition
Definition SemanticProgram.h:671
CTypeAlias * _stringAlias
Definition SemanticProgram.h:323
TCachedIntrinsicDefinition< CClassDefinition > _replicated
Definition SemanticProgram.h:438
CFunction * _WeakMapOp
Definition SemanticProgram.h:500
CFunction * _IntAddAssignOp
Definition SemanticProgram.h:449
const CTypeType * _typeType
Definition SemanticProgram.h:308
UE_API CSnippet * FindSnippet(const CUTF8StringView &NameStr) const
Definition SemanticProgram.cpp:318
CClass * _attributeScopeStruct
Definition SemanticProgram.h:384
CClass * _privateClass
Definition SemanticProgram.h:362
virtual CSymbol GetScopeName() const override
Definition SemanticProgram.h:641
TSet< CClassDefinition * > _PredictsClasses
Definition SemanticProgram.h:525
CFunction * _IntAbs
Definition SemanticProgram.h:452
CClass * _ignore_unreachable
Definition SemanticProgram.h:368
CClass * _nativeCallClass
Definition SemanticProgram.h:342
UE_API CTypeType & GetOrCreateSubtypeType(const CTypeBase *PositiveType)
Definition SemanticProgram.cpp:437
ULANG_FORCEINLINE CSemanticProgram()
Definition SemanticProgram.h:539
CClass * _experimentalClass
Definition SemanticProgram.h:370
CClass * _attributeScopeModule
Definition SemanticProgram.h:382
CFalseType _falseType
Definition SemanticProgram.h:293
UE_API CFlowType & CreateFlowType(ETypePolarity)
Definition SemanticProgram.cpp:573
void SetIrProject(const TSPtr< CAstProject > &project)
Definition SemanticProgram.h:535
CTypeAlias * _voidAlias
Definition SemanticProgram.h:314
UE_API CTupleType & GetOrCreateTupleType(CTupleType::ElementArray &&Elements)
Definition SemanticProgram.cpp:470
UE_API void AddStandardAccessLevelAttributes(CAttributable *NewAccessLevel) const
Definition SemanticProgram.cpp:641
CClass * _finalClass
Definition SemanticProgram.h:337
CFunction * _FloatMultiplyAssignOp
Definition SemanticProgram.h:470
CTypeAlias * _anyAlias
Definition SemanticProgram.h:315
CFlowType & CreatePositiveFlowType()
Definition SemanticProgram.h:601
CClass * _intrinsicClass
Definition SemanticProgram.h:340
CClass * _attributeScopeEffect
Definition SemanticProgram.h:399
UE_API CInstantiatedInterface & CreateInstantiatedInterface(const CInterface &, ETypePolarity, TArray< STypeVariableSubstitution >)
Definition SemanticProgram.cpp:598
CFunction * _ComparableEqualOp
Definition SemanticProgram.h:441
const CUnknownType * GetDefaultUnknownType() const
Definition SemanticProgram.h:623
CClass * _attributeClass
Definition SemanticProgram.h:335
TSPtr< CCompatConstraintRoot > _GeneralCompatConstraintRoot
Definition SemanticProgram.h:282
CFunction * _FloatMultiplyIntOp
Definition SemanticProgram.h:475
ULANG_FORCEINLINE ~CSemanticProgram()
Definition SemanticProgram.h:542
CClass * _setterClass
Definition SemanticProgram.h:377
CFunction * _LogicQueryOp
Definition SemanticProgram.h:502
UE_API CArrayType & GetOrCreateArrayType(const CTypeBase *ElementType)
Definition SemanticProgram.cpp:331
CClass * _attributeScopeClass
Definition SemanticProgram.h:383
CPathType _pathType
Definition SemanticProgram.h:303
CClass * _abstractClass
Definition SemanticProgram.h:336
CClass * _scopedClass
Definition SemanticProgram.h:365
UE_API TOptional< TArray< const CClass * > > ConvertEffectSetToEffectClasses(const SEffectSet &EffectSet, const SEffectSet &DefaultEffectSet) const
Definition SemanticProgram.cpp:1968
CClass * _persistableClass
Definition SemanticProgram.h:372
CClass * _localizes
Definition SemanticProgram.h:367
CFunction * _FloatDivideAssignOp
Definition SemanticProgram.h:471
UE_API CSnippet & GetOrCreateSnippet(const CSymbol &Path, CScope *ParentScope)
Definition SemanticProgram.cpp:302
CFunction * _ArrayAddOp
Definition SemanticProgram.h:482
CClass * _deprecatedClass
Definition SemanticProgram.h:369
UE_API const CClassDefinition * GetLeaderboardClassDefinition() const
Definition SemanticProgram.cpp:293
CClass * _protectedClass
Definition SemanticProgram.h:363
CDataDefinition * _NaNDefinition
Definition SemanticProgram.h:509
CFunction * _RationalCeil
Definition SemanticProgram.h:460
TCachedIntrinsicDefinition< CClassDefinition > _editable_non_concrete
Definition SemanticProgram.h:427
CFunction * _FloatAddAssignOp
Definition SemanticProgram.h:468
UE_API COptionType & GetOrCreateOptionType(const CTypeBase *ValueType)
Definition SemanticProgram.cpp:409
CFunction * _FloatMultiplyOp
Definition SemanticProgram.h:466
CFunction * _FloatGreaterOp
Definition SemanticProgram.h:477
CIntrinsicSymbols _IntrinsicSymbols
Definition SemanticProgram.h:519
CClass * _persistentClass
Definition SemanticProgram.h:371
CFunction * _RationalFloor
Definition SemanticProgram.h:461
TSPtr< CCompatConstraintRoot > _PersistenceCompatConstraintRoot
Definition SemanticProgram.h:283
int32_t NextFunctionIndex()
Definition SemanticProgram.h:644
UE_API CPointerType & GetOrCreatePointerType(const CTypeBase *NegativeValueType, const CTypeBase *PositiveValueType)
Definition SemanticProgram.cpp:381
CClass * _attributeScopeEnumMacro
Definition SemanticProgram.h:396
CTypeAlias * _intAlias
Definition SemanticProgram.h:318
CFunction * _FloatAbs
Definition SemanticProgram.h:472
ULANG_FORCEINLINE const TSPtr< CSymbolTable > & GetSymbols() const
Definition SemanticProgram.h:554
TSPtr< CAstPackage > _BuiltInPackage
Definition SemanticProgram.h:287
CClass * _transactsClass
Definition SemanticProgram.h:352
UE_API TOptional< SEffectSet > ConvertEffectClassesToEffectSet(const TArray< const CClass * > &EffectClasses, const SEffectSet &DefaultEffectSet, SConvertEffectClassesToEffectSetError *OutError=nullptr, uint32_t UploadedAtFNVersion=VerseFN::UploadedAtFNVersion::Latest) const
Definition SemanticProgram.cpp:1903
CClass * _attributeScopeInterface
Definition SemanticProgram.h:390
CClass * _finalSuperBaseClass
Definition SemanticProgram.h:345
UE_API const CIntType & GetOrCreateConstrainedIntType(FIntOrNegativeInfinity Min, FIntOrPositiveInfinity Max)
Definition SemanticProgram.cpp:545
CClass * _finalSuperClass
Definition SemanticProgram.h:344
CFunction * _IntMultiplyFloatOp
Definition SemanticProgram.h:474
T * FindDefinitionByVersePath(CUTF8StringView VersePath) const
Definition SemanticProgram.h:627
TArray< CUTF8String > _EpicInternalModulePrefixes
Definition SemanticProgram.h:521
CClass * _decidesClass
Definition SemanticProgram.h:348
CTypeAlias * _rationalAlias
Definition SemanticProgram.h:319
CTypeAlias * _comparableAlias
Definition SemanticProgram.h:316
CClass * _vmNoEffectToken
Definition SemanticProgram.h:375
CFunction * _MapLength
Definition SemanticProgram.h:492
CClass * _attributeScopeIdentifier
Definition SemanticProgram.h:391
CClass * _attributeScopeFunction
Definition SemanticProgram.h:386
CPersistableType _persistableType
Definition SemanticProgram.h:298
UE_API const CFunctionType & GetOrCreateFunctionType(const CTypeBase &ParamsType, const CTypeBase &ReturnType, SEffectSet Effects=EffectSets::FunctionDefault, TArray< const CTypeVariable * > TypeVariables={}, bool ImplicitlySpecialized=false)
Definition SemanticProgram.cpp:519
CFunction * _FloatSubtractAssignOp
Definition SemanticProgram.h:469
CClass * _internalClass
Definition SemanticProgram.h:364
UE_API SExplicitTypeParam CreateExplicitTypeParam(CFunction *, CSymbol DataName, CSymbol TypeName, CSymbol NegativeTypeName, const CTypeType *Type)
Definition SemanticProgram.cpp:604
CFunction * _IntDivideOp
Definition SemanticProgram.h:448
CClass * _readsClass
Definition SemanticProgram.h:353
TCachedIntrinsicDefinition< CFunction > _import_as
Definition SemanticProgram.h:430
CFunction * _WeakMapRefCallOp0
Definition SemanticProgram.h:496
CClass * _rtfmAlwaysOpen
Definition SemanticProgram.h:374
CClass * _attributeScopeTypeDefinition
Definition SemanticProgram.h:400
CFunction * _ArrayCallOp
Definition SemanticProgram.h:485
CFunction * _IntSubtractAssignOp
Definition SemanticProgram.h:450
CClass * _attributeScopeInterfaceMacro
Definition SemanticProgram.h:395
CFunction * _IntLessOp
Definition SemanticProgram.h:456
UE_API const CFunction * GetTaskFunction() const
Definition SemanticProgram.cpp:250
UE_API const SSymbolDefinitionArray * GetDefinitionsBySymbol(CSymbol Symbol) const
Definition SemanticProgram.cpp:2038
CFunction * _FloatNegateOp
Definition SemanticProgram.h:463
TCachedIntrinsicDefinition< CClassDefinition > _message_class
Definition SemanticProgram.h:434
const TArray< const CClass * > & GetAllEffectClasses() const
Definition SemanticProgram.h:651
CDataDefinition * _InfDefinition
Definition SemanticProgram.h:508
UE_API CNamedType & GetOrCreateNamedType(CSymbol Name, const CTypeBase *ValueType, bool HasValue)
Definition SemanticProgram.cpp:503
CClass * _concreteClass
Definition SemanticProgram.h:338
CRangeType _rangeType
Definition SemanticProgram.h:304
CFunction * _FitsInPlayerMap
Definition SemanticProgram.h:506
UE_API const CTypeBase * InstantiateTaskType(const CTypeBase *TypeArgument)
Definition SemanticProgram.cpp:271
CClass * _publicClass
Definition SemanticProgram.h:361
CFunction * _ArrayAddAssignOp
Definition SemanticProgram.h:483
CClass * _suspendsClass
Definition SemanticProgram.h:347
CClass * _constructorClass
Definition SemanticProgram.h:357
UE_API CReferenceType & GetOrCreateReferenceType(const CTypeBase *NegativeValueType, const CTypeBase *PositiveValueType)
Definition SemanticProgram.cpp:395
CClass * _nativeClass
Definition SemanticProgram.h:341
CTypeAlias * _floatAlias
Definition SemanticProgram.h:320
CFunction * _ArrayLength
Definition SemanticProgram.h:484
CFunction * _IntMultiplyAssignOp
Definition SemanticProgram.h:451
CClass * _getterClass
Definition SemanticProgram.h:376
CTypeAlias * _trueAlias
Definition SemanticProgram.h:313
UE_API CTypeType & GetOrCreateTypeType(const CTypeBase *NegativeType, const CTypeBase *PositiveType)
Definition SemanticProgram.cpp:422
CFunction * _FloatAddOp
Definition SemanticProgram.h:464
UE_API CInstantiatedClass & CreateInstantiatedClass(const CClass &, ETypePolarity, TArray< STypeVariableSubstitution >)
Definition SemanticProgram.cpp:592
CClass * _overrideClass
Definition SemanticProgram.h:360
CFunction * _OptionQueryOp
Definition SemanticProgram.h:504
TCachedIntrinsicDefinition< CClassDefinition > _editable
Definition SemanticProgram.h:426
CClass * _attributeScopeAttributeClass
Definition SemanticProgram.h:389
CFunction * _IntAddOp
Definition SemanticProgram.h:445
UE_API const CFloatType & GetOrCreateConstrainedFloatType(double Min, double Max)
Definition SemanticProgram.cpp:558
CFunction * _IntLessEqualOp
Definition SemanticProgram.h:457
CFunction * _UnsafeCast
Definition SemanticProgram.h:513
CClass * _attributeScopeName
Definition SemanticProgram.h:398
CClass * _castableClass
Definition SemanticProgram.h:343
CFunction * _IntMultiplyOp
Definition SemanticProgram.h:447
CChar8Type _char8Type
Definition SemanticProgram.h:301
CClass * _attributeScopeClassMacro
Definition SemanticProgram.h:393
CTypeAlias * _typeAlias
Definition SemanticProgram.h:324
CTypeAlias * _falseAlias
Definition SemanticProgram.h:312
CClass * _attributeScopeStructMacro
Definition SemanticProgram.h:394
CClass * _epicInternalClass
Definition SemanticProgram.h:366
CFunction * _FloatSubtractOp
Definition SemanticProgram.h:465
UE_API CGeneratorType & GetOrCreateGeneratorType(const CTypeBase *ElementType)
Definition SemanticProgram.cpp:344
TCachedIntrinsicDefinition< CClassDefinition > _agent_class
Definition SemanticProgram.h:436
CClass * _computesClass
Definition SemanticProgram.h:350
CClass * _attributeScopeAttribute
Definition SemanticProgram.h:380
CClass * _attributeScopeVar
Definition SemanticProgram.h:397
CClass * _predictsClass
Definition SemanticProgram.h:378
CChar32Type _char32Type
Definition SemanticProgram.h:302
CFunction * _ArrayRefCallOp0
Definition SemanticProgram.h:486
const CIntType * _intType
Definition SemanticProgram.h:309
CClass * _convergesClass
Definition SemanticProgram.h:351
CClass * _attributeScopeScopedDefinition
Definition SemanticProgram.h:401
CClass * _closedClass
Definition SemanticProgram.h:359
const CFloatType * _floatType
Definition SemanticProgram.h:310
SemanticRevision GetNextRevision() const
Get next revision to use when creating new functions etc.
Definition SemanticProgram.h:634
TSPtr< CAstProject > _AstProject
Definition SemanticProgram.h:523
CFunction * _FloatLessEqualOp
Definition SemanticProgram.h:480
CTrueType _trueType
Definition SemanticProgram.h:294
CFunction * _FloatLessOp
Definition SemanticProgram.h:479
UE_API const SEffectDescriptor & FindEffectDescriptorChecked(const CClass *effectKey, uint32_t UploadedAtFNVersion=VerseFN::UploadedAtFNVersion::Latest) const
Definition SemanticProgram.cpp:1894
CFunction * _MakeRationalFromInt
Definition SemanticProgram.h:459
CRationalType _rationalType
Definition SemanticProgram.h:300
UE_API CMapType & GetOrCreateWeakMapType(const CTypeBase &KeyType, const CTypeBase &ValueType)
Definition SemanticProgram.cpp:364
UE_API const CClass * GetTaskClass() const
Definition SemanticProgram.cpp:259
CFunction * _IntGreaterOp
Definition SemanticProgram.h:454
CClass * _attributeScopeSpecifier
Definition SemanticProgram.h:381
CModule * _VerseModule
Definition SemanticProgram.h:290
CClass * _availableClass
Definition SemanticProgram.h:404
UE_API void PopulateCoreAPI()
Add common classes and bindings.
Definition SemanticProgram.cpp:663
CVoidType _voidType
Definition SemanticProgram.h:295
CLogicType _logicType
Definition SemanticProgram.h:299
CFunction * _Getter
Definition SemanticProgram.h:511
CFunction * _IntSubtractOp
Definition SemanticProgram.h:446
CClass * _variesClassDeprecated
Definition SemanticProgram.h:349
CCastableType & GetOrCreateCastableType(const CTypeBase &SuperType)
Definition SemanticProgram.cpp:442
Definition SharedPointer.h:28
Definition SemanticProgram.h:179
virtual CSymbol GetScopeName() const override
Definition SemanticProgram.h:184
CSnippet(const CSymbol &Path, CScope *ParentScope, CSemanticProgram &Program)
Definition SemanticProgram.h:181
Database keeping track of symbols and their text equivalent.
Definition Symbol.h:27
Symbol representing a text string with an associated id.
Definition Symbol.h:98
Definition SemanticTypes.h:1008
Definition TypeAlias.h:55
Base class for all types.
Definition SemanticTypes.h:138
Definition SemanticTypes.h:381
Definition TypeVariable.h:21
Definition UTF8StringView.h:15
Definition UnknownType.h:20
Definition Array.h:51
Definition Definition.h:113
Definition SharedPointer.h:77
ULANG_FORCEINLINE void Reset()
Definition SharedPointer.h:113
Definition Set.h:13
ULANG_FORCEINLINE bool IsFilled() const
Definition UniquePointerArray.h:137
Definition UniquePointer.h:15
Definition UniquePointerSet.h:18
Definition VVMEngineEnvironment.h:23
TIntOrInfinity< EInfinitySign::Negative > FIntOrNegativeInfinity
Definition IntOrInfinity.h:77
constexpr uint32_t HashCombineFast(uint32_t A, uint32_t B)
Definition HashTraits.h:40
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
uint32_t SemanticRevision
For storing revisions of functions, classes etc.
Definition Revision.h:11
ULANG_FORCEINLINE uint32_t GetTypeHash(const TArray< T > Array)
Definition Array.h:2132
EMemberOrigin
Specifies whether to find only member definitions originating in the current type,...
Definition MemberOrigin.h:10
TIntOrInfinity< EInfinitySign::Positive > FIntOrPositiveInfinity
Definition IntOrInfinity.h:78
EOp
Definition VstNode.h:1173
op
Definition VstNode.h:1321
Definition VstNode.h:1131
Definition VstNode.h:924
TNodeType * AsNullable()
Definition VstNode.h:211
Definition VstNode.h:885
Definition SemanticProgram.h:608
CTypeVariable * NegativeTypeVariable
Definition SemanticProgram.h:611
CDataDefinition * DataDefinition
Definition SemanticProgram.h:609
CTypeVariable * TypeVariable
Definition SemanticProgram.h:610
TCachedIntrinsicDefinition(CSemanticProgram &Program, CUTF8StringView Path)
Definition SemanticProgram.h:410
DefinitionType * Get() const
Definition SemanticProgram.h:411
Definition SemanticProgram.h:41
bool operator==(const SCachedEffectSetToEffectClassesKey &Other) const
Definition SemanticProgram.h:45
SEffectSet TargetEffects
Definition SemanticProgram.h:42
SEffectSet Default
Definition SemanticProgram.h:43
Definition SemanticProgram.h:52
TArray< SMutuallyExclusiveEffectClassPair > InvalidPairs
Definition SemanticProgram.h:59
SEffectSet ResultSet
Definition SemanticProgram.h:60
Definition SemanticProgram.h:35
const CClass * Class
Definition SemanticProgram.h:37
SEffectSet Effects
Definition SemanticProgram.h:36
Definition SemanticProgram.h:27
bool _AllowInDecomposition
Definition SemanticProgram.h:31
SEffectSet _EffectSet
Definition SemanticProgram.h:28
SEffectSet _RescindFromDefault
Definition SemanticProgram.h:29
uLang::TArray< const CClass * > _MutualExclusions
Definition SemanticProgram.h:30
Definition Effects.h:46
Information about a given qualifier.
Definition Definition.h:35
static SQualifier Unknown()
Definition Definition.h:81
Definition Optional.h:23
ULANG_FORCEINLINE bool IsSet() const
Definition Optional.h:161