UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GarbageCollectionSchema.h File Reference
#include "Containers/Array.h"
#include "Containers/Map.h"
#include "Misc/Optional.h"
#include "UObject/GarbageCollection.h"
#include "UObject/NameTypes.h"
#include "UObject/ObjectPtr.h"
#include "UObject/VerseTypesFwd.h"

Go to the source code of this file.

Classes

class  UE::GC::FPropertyStack
 
class  UE::GC::FPropertyStackScope
 
struct  UE::GC::FSchemaHeader
 
class  UE::GC::FSchemaView
 
class  UE::GC::FMemberId
 
struct  UE::GC::FMemberInfo
 
struct  UE::GC::FMemberPacked
 
struct  UE::GC::FStridedLayout
 
union  UE::GC::FMemberWord
 
struct  UE::GC::FMemberDeclaration
 
class  UE::GC::FSchemaBuilder
 
struct  UE::GC::TMemberDeclaration< T >
 
class  UE::GC::TSchemaBuilder< T >
 

Namespaces

namespace  UE
 
namespace  UE::GC
 
namespace  UE::GC::Private
 

Macros

#define UE_GC_DEBUGNAMES   (!UE_BUILD_SHIPPING)
 
#define _UE_EXPAND(x)   x
 
#define _UE_GC_MEMBER2(Type, Member)   UE::GC::Private::MakeMember(#Member, offsetof(Type, Member), &Type::Member)
 
#define _UE_GC_MEMBER3(Type, Member, InnerSchema)   UE::GC::Private::MakeNestedMember(#Member, offsetof(Type, Member), &Type::Member, InnerSchema)
 
#define _UE_GC_MEMBER(_1, _2, _3, CHOSEN_OVERLOAD, ...)   CHOSEN_OVERLOAD
 
#define UE_GC_MEMBER(...)   _UE_EXPAND(_UE_EXPAND(_UE_GC_MEMBER(__VA_ARGS__, _UE_GC_MEMBER3, _UE_GC_MEMBER2)) (__VA_ARGS__))
 

Typedefs

using UE::GC::ObjectAROFn = void(*)(UObject *, FReferenceCollector &)
 
using UE::GC::StructAROFn = void(*)(void *, FReferenceCollector &)
 

Enumerations

enum class  UE::GC::EMemberType : uint8 {
  UE::GC::Stop , UE::GC::Jump , UE::GC::Reference , UE::GC::ReferenceArray ,
  UE::GC::StructArray , UE::GC::StridedArray , UE::GC::StructSet , UE::GC::FieldPath ,
  UE::GC::FieldPathArray , UE::GC::FreezableReferenceArray , UE::GC::FreezableStructArray , UE::GC::Optional ,
  UE::GC::DynamicallyTypedValue , UE::GC::ARO , UE::GC::SlowARO , UE::GC::MemberARO ,
  UE::GC::Count
}
 
enum class  UE::GC::EOrigin : uint8 { UE::GC::Other , UE::GC::Blueprint }
 
enum class  UE::GC::EMemberlessId {
  UE::GC::Collector = 1 , UE::GC::Class , UE::GC::Outer , UE::GC::ExternalPackage ,
  UE::GC::ClassOuter , UE::GC::InitialReference , UE::GC::Max = InitialReference
}
 

Functions

FName UE::GC::ToName (EMemberType Type)
 
FMemberInfo UE::GC::GetMemberDebugInfo (FSchemaView Schema, FMemberId Id)
 
uint32 UE::GC::CountSchemas (uint32 &OutNumWords)
 
FMemberWord UE::GC::ToWord (FSchemaView In)
 
FMemberWord UE::GC::ToWord (StructAROFn In)
 
FName UE::GC::ToName (const char *Name)
 
FName UE::GC::ToName (FPropertyStack &Stack)
 
template<typename NameType >
FMemberDeclaration UE::GC::DeclareMember (NameType &&Name, uint32 Offset, EMemberType Type)
 
template<typename NameType , typename ExtraWordType >
FMemberDeclaration UE::GC::DeclareMember (NameType &&Name, uint32 Offset, EMemberType Type, ExtraWordType Extra)
 
template<class T , class R >
TMemberDeclaration< T > UE::GC::Private::MakeMember (const char *Name, uint32 Offset, R T::*)
 
template<class T , class R >
TMemberDeclaration< T > UE::GC::Private::MakeMember (const char *Name, uint32 Offset, TArray< R > T::*)
 
template<class T , class O >
TMemberDeclaration< T > UE::GC::Private::MakeMember (const char *Name, uint32 Offset, TObjectPtr< O > T::*)
 
template<class T , class O >
TMemberDeclaration< T > UE::GC::Private::MakeMember (const char *Name, uint32 Offset, TArray< TObjectPtr< O > > T::*)
 
template<class T , class S >
TMemberDeclaration< T > UE::GC::Private::MakeNestedMember (const char *Name, uint32 Offset, TArray< S > T::*, TSchemaBuilder< S > &InnerSchema)
 
void UE::GC::DeclareIntrinsicSchema (UClass *Class, FSchemaView Schema)
 
template<class T >
void UE::GC::DeclareIntrinsicMembers (UClass *Class, std::initializer_list< TMemberDeclaration< T > > Members)
 
FSchemaView UE::GC::GetIntrinsicSchema (UClass *Class)
 

Macro Definition Documentation

◆ _UE_EXPAND

#define _UE_EXPAND (   x)    x

◆ _UE_GC_MEMBER

#define _UE_GC_MEMBER (   _1,
  _2,
  _3,
  CHOSEN_OVERLOAD,
  ... 
)    CHOSEN_OVERLOAD

◆ _UE_GC_MEMBER2

#define _UE_GC_MEMBER2 (   Type,
  Member 
)    UE::GC::Private::MakeMember(#Member, offsetof(Type, Member), &Type::Member)

◆ _UE_GC_MEMBER3

#define _UE_GC_MEMBER3 (   Type,
  Member,
  InnerSchema 
)    UE::GC::Private::MakeNestedMember(#Member, offsetof(Type, Member), &Type::Member, InnerSchema)

◆ UE_GC_DEBUGNAMES

#define UE_GC_DEBUGNAMES   (!UE_BUILD_SHIPPING)

◆ UE_GC_MEMBER