5#include "Containers/Array.h"
6#include "Containers/Map.h"
7#include "Misc/Optional.h"
13#if (WITH_VERSE_VM && DO_GUARD_SLOW) || defined(__INTELLISENSE__)
17#ifndef UE_GC_DEBUGNAMES
18#define UE_GC_DEBUGNAMES (!UE_BUILD_SHIPPING)
42#if WITH_VERSE_VM || defined(__INTELLISENSE__)
116 static constexpr uint64 OriginBit = 1;
126 static_assert(
sizeof(
Handle) >=
sizeof(Data));
171 static constexpr uint32 MemberlessIdBits = 3;
172 static constexpr uint32 IndexBits = 32 - MemberlessIdBits;
175 uint32 MemberlessId : MemberlessIdBits;
188#if !UE_BUILD_SHIPPING
250template<
typename NameType>
254 return { DebugName,
Offset, Type };
257template<
typename NameType,
typename ExtraWordType>
282 const uint32 StructStride;
292 template<
typename... Ts>
309template<
class T,
class R>
312 static_assert(std::is_convertible_v<R, UObject*>);
316template<
class T,
class R>
319 static_assert(std::is_convertible_v<R, UObject*>);
323template<
class T,
class O>
329template<
class T,
class O>
335template<
class T,
class S>
341#if WITH_VERSE_VM || defined(__INTELLISENSE__)
346static_assert(
sizeof(::Verse::VValue) ==
sizeof(::Verse::VCell*),
"");
347static_assert(
sizeof(::Verse::VValue) ==
sizeof(::Verse::VRestValue),
"");
348static_assert(
sizeof(::Verse::VValue) ==
sizeof(::Verse::TWriteBarrier<::Verse::VValue>),
"");
349static_assert(
sizeof(::Verse::VValue) ==
sizeof(::Verse::TWriteBarrier<::Verse::VCell>),
"");
364template<
class T,
typename U>
370template<
class T,
typename U>
380#define _UE_EXPAND(x) x
381#define _UE_GC_MEMBER2(Type, Member) UE::GC::Private::MakeMember(#Member, offsetof(Type, Member), &Type::Member)
382#define _UE_GC_MEMBER3(Type, Member, InnerSchema) UE::GC::Private::MakeNestedMember(#Member, offsetof(Type, Member), &Type::Member, InnerSchema)
383#define _UE_GC_MEMBER(_1,_2,_3,CHOSEN_OVERLOAD,...) CHOSEN_OVERLOAD
385#define UE_GC_MEMBER(...) _UE_EXPAND(_UE_EXPAND(_UE_GC_MEMBER(__VA_ARGS__, _UE_GC_MEMBER3, _UE_GC_MEMBER2)) (__VA_ARGS__))
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
ENoInit
Definition CoreMiscDefines.h:158
@ NoInit
Definition CoreMiscDefines.h:158
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_GC_DEBUGNAMES
Definition GarbageCollectionSchema.h:18
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition NameTypes.h:617
Definition UnrealType.h:174
Definition UObjectGlobals.h:2492
UE_NODEBUG UE_FORCEINLINE_HINT void Push(ElementType &&Item)
Definition Array.h:1224
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
ElementType Pop(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:1196
Definition GarbageCollectionSchema.h:157
UE_FORCEINLINE_HINT FMemberId(uint32 Idx)
Definition GarbageCollectionSchema.h:160
UE_FORCEINLINE_HINT FMemberId(EMemberlessId Memberless)
Definition GarbageCollectionSchema.h:159
friend bool operator==(FMemberId A, FMemberId B)
Definition GarbageCollectionSchema.h:167
bool IsMemberless() const
Definition GarbageCollectionSchema.h:162
int32 AsPrintableIndex() const
Definition GarbageCollectionSchema.h:164
EMemberlessId AsMemberless() const
Definition GarbageCollectionSchema.h:165
uint32 GetIndex() const
Definition GarbageCollectionSchema.h:163
friend bool operator!=(FMemberId A, FMemberId B)
Definition GarbageCollectionSchema.h:168
Definition GarbageCollectionSchema.h:86
FPropertyStackScope(FPropertyStack &InStack, FProperty *Property)
Definition GarbageCollectionSchema.h:90
UE_NONCOPYABLE(FPropertyStackScope)
~FPropertyStackScope()
Definition GarbageCollectionSchema.h:97
Definition GarbageCollectionSchema.h:62
~FPropertyStack()
Definition GarbageCollectionSchema.h:66
UE_NONCOPYABLE(FPropertyStack)
COREUOBJECT_API FString GetPropertyPath() const
Definition GarbageCollectionSchema.cpp:545
static COREUOBJECT_API bool ConvertPathToProperties(UClass *ObjectClass, FName InPropertyPath, TArray< FProperty * > &OutProperties)
Definition GarbageCollectionSchema.cpp:570
Definition GarbageCollectionSchema.h:265
COREUOBJECT_API ~FSchemaBuilder()
Definition GarbageCollectionSchema.cpp:297
COREUOBJECT_API void Add(FMemberDeclaration Member)
Definition GarbageCollectionSchema.cpp:309
int32 NumMembers() const
Definition GarbageCollectionSchema.h:278
Definition GarbageCollectionSchema.h:115
FSchemaView()
Definition GarbageCollectionSchema.h:120
const FMemberWord * GetWords() const
Definition GarbageCollectionSchema.h:130
uint32 GetStructStride() const
Definition GarbageCollectionSchema.h:136
FSchemaHeader * TryGetHeader()
Definition GarbageCollectionSchema.cpp:99
FSchemaHeader & GetHeader()
Definition GarbageCollectionSchema.cpp:93
void SetOrigin(EOrigin Origin)
Definition GarbageCollectionSchema.h:133
bool IsEmpty() const
Definition GarbageCollectionSchema.h:132
EOrigin GetOrigin() const
Definition GarbageCollectionSchema.h:131
FSchemaView(const FMemberWord *Data, EOrigin Origin=EOrigin::Other)
Definition GarbageCollectionSchema.h:123
FSchemaView(ENoInit)
Definition GarbageCollectionSchema.h:121
FSchemaView(FSchemaView View, EOrigin Origin)
Definition GarbageCollectionSchema.h:122
Definition GarbageCollectionSchema.h:299
TSchemaBuilder(std::initializer_list< TMemberDeclaration< T > > InMembers={})
Definition GarbageCollectionSchema.h:301
void Add(TMemberDeclaration< T > Member)
Definition GarbageCollectionSchema.h:302
Definition OverriddenPropertySet.cpp:45
TMemberDeclaration< T > MakeMember(const char *Name, uint32 Offset, R T::*)
Definition GarbageCollectionSchema.h:310
TMemberDeclaration< T > MakeNestedMember(const char *Name, uint32 Offset, TArray< S > T::*, TSchemaBuilder< S > &InnerSchema)
Definition GarbageCollectionSchema.h:336
Definition GCObjectReferencer.cpp:27
FMemberWord ToWord(FSchemaView In)
Definition GarbageCollectionSchema.h:222
uint32 CountSchemas(uint32 &OutNumWords)
Definition GarbageCollectionSchema.cpp:966
void DeclareIntrinsicMembers(UClass *Class, std::initializer_list< TMemberDeclaration< T > > Members)
Definition GarbageCollectionSchema.h:392
void DeclareIntrinsicSchema(UClass *Class, FSchemaView Schema)
Definition GarbageCollectionSchema.cpp:530
FSchemaView GetIntrinsicSchema(UClass *Class)
Definition GarbageCollectionSchema.cpp:537
void(*)(UObject *, FReferenceCollector &) ObjectAROFn
Definition GarbageCollectionSchema.h:204
EMemberlessId
Definition GarbageCollectionSchema.h:145
EOrigin
Definition GarbageCollectionSchema.h:53
void(*)(void *, FReferenceCollector &) StructAROFn
Definition GarbageCollectionSchema.h:205
EMemberType
Definition GarbageCollectionSchema.h:25
@ FreezableReferenceArray
FMemberDeclaration DeclareMember(NameType &&Name, uint32 Offset, EMemberType Type)
Definition GarbageCollectionSchema.h:251
FMemberInfo GetMemberDebugInfo(FSchemaView Schema, FMemberId Id)
Definition GarbageCollectionSchema.cpp:234
FName ToName(EMemberType Type)
Definition GarbageCollectionSchema.cpp:39
U16 Index
Definition radfft.cpp:71
Definition ObjectPtr.h:488
Definition Optional.h:131
Definition GarbageCollectionSchema.h:239
FName DebugName
Definition GarbageCollectionSchema.h:240
FMemberWord ExtraWord
Definition GarbageCollectionSchema.h:243
EMemberType Type
Definition GarbageCollectionSchema.h:242
uint32 Offset
Definition GarbageCollectionSchema.h:241
Definition GarbageCollectionSchema.h:181
int32 Offset
Definition GarbageCollectionSchema.h:182
FName Name
Definition GarbageCollectionSchema.h:183
Definition GarbageCollectionSchema.h:195
uint16 Type
Definition GarbageCollectionSchema.h:200
uint16 WordOffset
Definition GarbageCollectionSchema.h:201
static constexpr uint32 OffsetBits
Definition GarbageCollectionSchema.h:197
static constexpr uint32 TypeBits
Definition GarbageCollectionSchema.h:196
static constexpr uint32 OffsetRange
Definition GarbageCollectionSchema.h:198
Definition GarbageCollectionSchema.h:208
uint16 WordOffset
Definition GarbageCollectionSchema.h:209
uint16 WordStride
Definition GarbageCollectionSchema.h:210
Definition GarbageCollectionSchema.h:291
TMemberDeclaration(Ts &&... Args)
Definition GarbageCollectionSchema.h:293
Definition GarbageCollectionSchema.h:214
FSchemaView InnerSchema
Definition GarbageCollectionSchema.h:216
ObjectAROFn ObjectARO
Definition GarbageCollectionSchema.h:217
StructAROFn StructARO
Definition GarbageCollectionSchema.h:218
FStridedLayout StridedLayout
Definition GarbageCollectionSchema.h:219
FMemberPacked Members[4]
Definition GarbageCollectionSchema.h:215