UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MemoryLayout.h File Reference

Go to the source code of this file.

Classes

struct  FMemoryToStringContext
 
struct  FFieldLayoutDesc
 
struct  FTypeLayoutDesc
 
struct  FRegisterTypeLayoutDesc
 
struct  CProvidesDefaultUObject
 
struct  THasCustomDefaultObject< T >
 
struct  TGetDefaultObjectHelper< T, InterfaceType >
 
struct  TGetDefaultObjectHelper< T, ETypeLayoutInterface::Virtual >
 
struct  TValidateInterfaceHelper< T, ETypeLayoutInterface::NonVirtual >
 
struct  TValidateInterfaceHelper< T, ETypeLayoutInterface::Virtual >
 
struct  TValidateInterfaceHelper< T, ETypeLayoutInterface::Abstract >
 
struct  TUsePropertyFreezing< T >
 
struct  TGetFreezeImageHelper< T, bUsePropertyFreezing >
 
struct  TGetFreezeImageFieldHelper< T, bProvidesStaticStruct >
 
struct  TGetBaseTypeHelper< T >
 
struct  TInitializeBaseHelper< T, BaseType >
 
struct  TInitializeBaseHelper< T, void >
 
struct  CTypeLayout
 
struct  THasTypeLayout< T >
 
struct  TStaticGetTypeLayoutHelper< T >
 
struct  TGetTypeLayoutHelper< T >
 
struct  FPlatformTypeLayoutParameters
 

Namespaces

namespace  ETypeLayoutInterface
 
namespace  EFieldLayoutFlags
 
namespace  Freeze
 

Macros

#define UE_STATIC_ONLY(T)
 
#define UE_DECLARE_INTERNAL_LINK_BASE(T)   template<int Counter> struct T
 
#define UE_DECLARE_INTERNAL_LINK_SPECIALIZATION(T, Counter)   template<> struct T<Counter>
 
#define INTERNAL_LAYOUT_FIELD(T, InName, InOffset, InFlags, InNumArray, InBitFieldSize, Counter)
 
#define INTERNAL_LAYOUT_FIELD_WITH_WRITER(T, InName, InFunc, Counter)
 
#define INTERNAL_LAYOUT_WRITE_MEMORY_IMAGE(Func, Counter)
 
#define INTERNAL_LAYOUT_TOSTRING(Func, Counter)
 
#define LAYOUT_FIELD(T, Name, ...)   PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name; INTERNAL_LAYOUT_FIELD(T, Name, STRUCT_OFFSET(DerivedType, Name), EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, 0u, __COUNTER__)
 
#define LAYOUT_MUTABLE_FIELD(T, Name, ...)   mutable PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name; INTERNAL_LAYOUT_FIELD(T, Name, STRUCT_OFFSET(DerivedType, Name), EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, 0u, __COUNTER__)
 
#define LAYOUT_FIELD_INITIALIZED(T, Name, Value, ...)   PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name = Value; INTERNAL_LAYOUT_FIELD(T, Name, STRUCT_OFFSET(DerivedType, Name), EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, 0u, __COUNTER__)
 
#define LAYOUT_MUTABLE_FIELD_INITIALIZED(T, Name, Value, ...)   mutable PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name = Value; INTERNAL_LAYOUT_FIELD(T, Name, STRUCT_OFFSET(DerivedType, Name), EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, 0u, __COUNTER__)
 
#define LAYOUT_ARRAY(T, Name, NumArray, ...)   PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name[NumArray]; INTERNAL_LAYOUT_FIELD(T, Name, STRUCT_OFFSET(DerivedType, Name), EFieldLayoutFlags::MakeFlags(__VA_ARGS__), NumArray, 0u, __COUNTER__)
 
#define LAYOUT_MUTABLE_BITFIELD(T, Name, BitFieldSize, ...)   mutable PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name : BitFieldSize; INTERNAL_LAYOUT_FIELD(T, Name, ~0u, EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, BitFieldSize, __COUNTER__)
 
#define LAYOUT_BITFIELD(T, Name, BitFieldSize, ...)   PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name : BitFieldSize; INTERNAL_LAYOUT_FIELD(T, Name, ~0u, EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, BitFieldSize, __COUNTER__)
 
#define LAYOUT_FIELD_WITH_WRITER(T, Name, Func)   PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name; INTERNAL_LAYOUT_FIELD_WITH_WRITER(T, Name, Func, __COUNTER__)
 
#define LAYOUT_MUTABLE_FIELD_WITH_WRITER(T, Name, Func)   mutable PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name; INTERNAL_LAYOUT_FIELD_WITH_WRITER(T, Name, Func, __COUNTER__)
 
#define LAYOUT_WRITE_MEMORY_IMAGE(Func)   INTERNAL_LAYOUT_WRITE_MEMORY_IMAGE(Func, __COUNTER__)
 
#define LAYOUT_TOSTRING(Func)   INTERNAL_LAYOUT_TOSTRING(Func, __COUNTER__)
 
#define LAYOUT_FIELD_EDITORONLY(T, Name, ...)
 
#define LAYOUT_ARRAY_EDITORONLY(T, Name, NumArray, ...)
 
#define LAYOUT_BITFIELD_EDITORONLY(T, Name, BitFieldSize, ...)
 
#define INTERNAL_LAYOUT_INTERFACE_PREFIX_NonVirtual(...)   __VA_ARGS__
 
#define INTERNAL_LAYOUT_INTERFACE_PREFIX_Virtual(...)   __VA_ARGS__ virtual
 
#define INTERNAL_LAYOUT_INTERFACE_PREFIX_Abstract(...)   virtual
 
#define INTERNAL_LAYOUT_INTERFACE_PREFIX(Type)   PREPROCESSOR_JOIN(INTERNAL_LAYOUT_INTERFACE_PREFIX_, Type)
 
#define INTERNAL_LAYOUT_INTERFACE_SUFFIX_NonVirtual   ;
 
#define INTERNAL_LAYOUT_INTERFACE_SUFFIX_Virtual   ;
 
#define INTERNAL_LAYOUT_INTERFACE_SUFFIX_Abstract   { return FTypeLayoutDesc::GetInvalidTypeLayout(); }
 
#define INTERNAL_LAYOUT_INTERFACE_SUFFIX(Type)   PREPROCESSOR_JOIN(INTERNAL_LAYOUT_INTERFACE_SUFFIX_, Type)
 
#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_NonVirtual   { return StaticGetTypeLayout(); }
 
#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_Virtual   { return StaticGetTypeLayout(); }
 
#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_Abstract   { return FTypeLayoutDesc::GetInvalidTypeLayout(); }
 
#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL(Type)   PREPROCESSOR_JOIN(INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_, Type)
 
#define INTERNAL_DECLARE_TYPE_LAYOUT_COMMON(T, InInterface)
 
#define INTERNAL_DECLARE_INLINE_TYPE_LAYOUT(T, InInterface)
 
#define INTERNAL_DECLARE_TYPE_LAYOUT(T, InInterface, RequiredAPI)
 
#define INTERNAL_DECLARE_LAYOUT_BASE(T)
 
#define INTERNAL_DECLARE_LAYOUT_EXPLICIT_BASES(T, ...)    template<typename InternalType> static void InternalInitializeBases(FTypeLayoutDesc& TypeDesc) { InternalInitializeBasesHelper<InternalType, __VA_ARGS__>(TypeDesc); }
 
#define DECLARE_TYPE_LAYOUT(T, Interface)   INTERNAL_DECLARE_LAYOUT_BASE(T); INTERNAL_DECLARE_TYPE_LAYOUT(T, Interface, PREPROCESSOR_NOTHING)
 
#define DECLARE_INLINE_TYPE_LAYOUT(T, Interface)   INTERNAL_DECLARE_LAYOUT_BASE(T); INTERNAL_DECLARE_INLINE_TYPE_LAYOUT(T, Interface)
 
#define DECLARE_EXPORTED_TYPE_LAYOUT(T, RequiredAPI, Interface)   INTERNAL_DECLARE_LAYOUT_BASE(T); INTERNAL_DECLARE_TYPE_LAYOUT(T, Interface, RequiredAPI)
 
#define DECLARE_TYPE_LAYOUT_EXPLICIT_BASES(T, Interface, ...)   INTERNAL_DECLARE_LAYOUT_EXPLICIT_BASES(T, __VA_ARGS__); INTERNAL_DECLARE_TYPE_LAYOUT(T, Interface, PREPROCESSOR_NOTHING)
 
#define DECLARE_INLINE_TYPE_LAYOUT_EXPLICIT_BASES(T, Interface, ...)   INTERNAL_DECLARE_LAYOUT_EXPLICIT_BASES(T, __VA_ARGS__); INTERNAL_DECLARE_INLINE_TYPE_LAYOUT(T, Interface)
 
#define DECLARE_EXPORTED_TYPE_LAYOUT_EXPLICIT_BASES(T, RequiredAPI, Interface, ...)   INTERNAL_DECLARE_LAYOUT_EXPLICIT_BASES(T, __VA_ARGS__); INTERNAL_DECLARE_TYPE_LAYOUT(T, Interface, RequiredAPI)
 
#define INTERNAL_IMPLEMENT_TYPE_LAYOUT_COMMON(TemplatePrefix, T)
 
#define INTERNAL_REGISTER_TYPE_LAYOUT(T)   static const FDelayedAutoRegisterHelper ANONYMOUS_VARIABLE(DelayedAutoRegisterHelper)(EDelayedRegisterRunPhase::ShaderTypesReady, []{ FTypeLayoutDesc::Register(T::StaticGetTypeLayout()); });
 
#define IMPLEMENT_UNREGISTERED_TEMPLATE_TYPE_LAYOUT(TemplatePrefix, T)
 
#define IMPLEMENT_TEMPLATE_TYPE_LAYOUT(TemplatePrefix, T)
 
#define IMPLEMENT_TYPE_LAYOUT(T)   IMPLEMENT_TEMPLATE_TYPE_LAYOUT(, T)
 
#define IMPLEMENT_ABSTRACT_TYPE_LAYOUT(T)
 
#define REGISTER_INLINE_TYPE_LAYOUT(T)
 
#define DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT(TemplatePrefix, T)
 
#define DECLARE_EXPORTED_TEMPLATE_INTRINSIC_TYPE_LAYOUT(TemplatePrefix, T, RequiredAPI)
 
#define IMPLEMENT_EXPORTED_INTRINSIC_TYPE_LAYOUT(T)
 
#define DECLARE_INTRINSIC_TYPE_LAYOUT(T)   DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT(template<>, T)
 
#define ALIAS_TEMPLATE_TYPE_LAYOUT(TemplatePrefix, T, Alias)
 
#define ALIAS_TYPE_LAYOUT(Type, Alias)
 

Enumerations

enum  ETypeLayoutInterface::Type : uint8 { ETypeLayoutInterface::NonVirtual , ETypeLayoutInterface::Virtual , ETypeLayoutInterface::Abstract }
 
enum  EFieldLayoutFlags::Type : uint8 {
  EFieldLayoutFlags::None = 0u , EFieldLayoutFlags::WithEditorOnly = (1u << 0) , EFieldLayoutFlags::WithRayTracing = (1u << 1) , EFieldLayoutFlags::Transient = (1u << 2) ,
  EFieldLayoutFlags::UseInstanceWithNoProperty = (1u << 3)
}
 

Functions

template<typename T >
const FTypeLayoutDescStaticGetTypeLayoutDesc ()
 
bool ETypeLayoutInterface::HasVTable (Type InType)
 
UE_FORCEINLINE_HINT Type EFieldLayoutFlags::MakeFlags (uint32 Flags=None)
 
UE_FORCEINLINE_HINT Type EFieldLayoutFlags::MakeFlagsEditorOnly (uint32 Flags=None)
 
UE_FORCEINLINE_HINT Type EFieldLayoutFlags::MakeFlagsRayTracing (uint32 Flags=None)
 
template<typename T , typename Base >
uint32 GetBaseOffset ()
 
template<typename T >
const T * GetDefault ()
 
template<typename T >
const T * InternalGetDefaultObject ()
 
CORE_API void Freeze::DefaultWriteMemoryImageField (FMemoryImageWriter &Writer, const void *Object, const void *FieldObject, const FTypeLayoutDesc &TypeDesc, const FTypeLayoutDesc &DerivedTypeDesc)
 
CORE_API void Freeze::DefaultWriteMemoryImage (FMemoryImageWriter &Writer, const void *Object, const FTypeLayoutDesc &TypeDesc, const FTypeLayoutDesc &DerivedTypeDesc)
 
CORE_API uint32 Freeze::DefaultUnfrozenCopy (const FMemoryUnfreezeContent &Context, const void *Object, const FTypeLayoutDesc &TypeDesc, void *OutDst)
 
CORE_API uint32 Freeze::DefaultAppendHash (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
CORE_API uint32 Freeze::DefaultGetTargetAlignment (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
CORE_API void Freeze::DefaultToString (const void *Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API uint32 Freeze::AppendHashForNameAndSize (const TCHAR *Name, uint32 Size, FSHA1 &Hasher)
 
CORE_API void Freeze::IntrinsicWriteMemoryImage (FMemoryImageWriter &Writer, const void *Object, uint32 Size)
 
CORE_API void Freeze::IntrinsicWriteMemoryImage (FMemoryImageWriter &Writer, void *, const FTypeLayoutDesc &)
 
template<typename T >
void Freeze::DestroyObject (T *Object, const FPointerTableBase *PtrTable, bool bIsFrozen)
 
template<typename T >
UE_FORCEINLINE_HINT void Freeze::IntrinsicWriteMemoryImage (FMemoryImageWriter &Writer, const T &Object, const FTypeLayoutDesc &TypeDesc)
 
template<typename T >
uint32 Freeze::IntrinsicUnfrozenCopy (const FMemoryUnfreezeContent &Context, const T &Object, void *OutDst)
 
template<typename T >
UE_FORCEINLINE_HINT uint32 Freeze::IntrinsicAppendHash (const T *DummyObject, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
template<typename T >
UE_FORCEINLINE_HINT uint32 Freeze::IntrinsicGetTargetAlignment (const T *DummyObject, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
template<typename T >
void Freeze::IntrinsicToString (const T &Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API uint32 Freeze::IntrinsicAppendHash (void *const *DummyObject, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
CORE_API uint32 Freeze::IntrinsicGetTargetAlignment (void *const *DummyObject, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
CORE_API void Freeze::IntrinsicToString (char Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (short Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (int Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (int8 Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (long Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (long long Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (unsigned char Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (unsigned short Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (unsigned int Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (unsigned long Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (unsigned long long Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (float Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (double Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (wchar_t Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (char16_t Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::IntrinsicToString (void *Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
CORE_API void Freeze::ExtractBitFieldValue (const void *Value, uint32 SrcBitOffset, uint32 DestBitOffset, uint32 NumBits, uint64 &InOutValue)
 
CORE_API bool Freeze::IncludeField (const FFieldLayoutDesc *FieldDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
CORE_API uint32 Freeze::GetTargetAlignment (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
CORE_API uint32 Freeze::AppendHash (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
CORE_API uint32 Freeze::AppendHashPair (const FTypeLayoutDesc &KeyTypeDesc, const FTypeLayoutDesc &ValueTypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
CORE_API uint32 Freeze::HashLayout (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHAHash &OutHash)
 
CORE_API uint32 Freeze::HashLayouts (const TArray< const FTypeLayoutDesc * > &TypeLayouts, const FPlatformTypeLayoutParameters &LayoutParams, FSHAHash &OutHash)
 
CORE_API FSHAHash Freeze::HashLayout (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
CORE_API uint8 Freeze::FindFieldNameLength (const TCHAR *Name)
 
template<typename T >
const FTypeLayoutDescGetTypeLayoutDesc (const FPointerTableBase *, const T &Object)
 
CORE_API void InternalDeleteObjectFromLayout (void *Object, const FTypeLayoutDesc &TypeDesc, const FPointerTableBase *PtrTable, bool bIsFrozen)
 
template<typename T >
void DeleteObjectFromLayout (T *Object, const FPointerTableBase *PtrTable=nullptr, bool bIsFrozen=false)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (char)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (short)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (int)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (int8)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (long)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (long long)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (unsigned char)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (unsigned short)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (unsigned int)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (unsigned long)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (unsigned long long)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (bool)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (float)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (double)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (wchar_t)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (char16_t)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (void *)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (ETypeLayoutInterface::Type)
 
 DECLARE_INTRINSIC_TYPE_LAYOUT (FThreadSafeCounter)
 
 DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT (template< typename T >, TEnumAsByte< T >)
 
 ALIAS_TEMPLATE_TYPE_LAYOUT (template< typename T >, const T, T)
 
 ALIAS_TEMPLATE_TYPE_LAYOUT (template< typename T >, T *, void *)
 

Macro Definition Documentation

◆ ALIAS_TEMPLATE_TYPE_LAYOUT

#define ALIAS_TEMPLATE_TYPE_LAYOUT (   TemplatePrefix,
  T,
  Alias 
)
Value:
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UE_STATIC_ONLY(T)
Definition MemoryLayout.h:33
#define PREPROCESSOR_REMOVE_OPTIONAL_PARENS(...)
Definition PreprocessorHelpers.h:112
Definition MemoryLayout.h:640
Definition MemoryLayout.h:633

◆ ALIAS_TYPE_LAYOUT

#define ALIAS_TYPE_LAYOUT (   Type,
  Alias 
)
Value:
static_assert(sizeof(PREPROCESSOR_REMOVE_OPTIONAL_PARENS(Type)) == sizeof(PREPROCESSOR_REMOVE_OPTIONAL_PARENS(Alias)), "Using a type alias but the sizes don't match!"); \

◆ DECLARE_EXPORTED_TEMPLATE_INTRINSIC_TYPE_LAYOUT

#define DECLARE_EXPORTED_TEMPLATE_INTRINSIC_TYPE_LAYOUT (   TemplatePrefix,
  T,
  RequiredAPI 
)
Value:
static void CallWriteMemoryImage(FMemoryImageWriter& Writer, const void* Object, const FTypeLayoutDesc& TypeDesc, const FTypeLayoutDesc& DerivedTypeDesc); \
static uint32 CallUnfrozenCopy(const FMemoryUnfreezeContent& Context, const void* Object, const FTypeLayoutDesc& TypeDesc, void* OutDst); \
static uint32 CallAppendHash(const FTypeLayoutDesc& TypeDesc, const FPlatformTypeLayoutParameters& LayoutParams, FSHA1& Hasher); \
static uint32 CallGetTargetAlignment(const FTypeLayoutDesc& TypeDesc, const FPlatformTypeLayoutParameters& LayoutParams); \
static void CallToString(const void* Object, const FTypeLayoutDesc& TypeDesc, const FPlatformTypeLayoutParameters& LayoutParams, FMemoryToStringContext& OutContext); \
static void CallDestroy(void* Object, const FTypeLayoutDesc&, const FPointerTableBase* PtrTable, bool bIsFrozen); \
RequiredAPI static const FTypeLayoutDesc& Do(); }; \
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MemoryImageWriter.h:14
Definition MemoryImageWriter.h:78
Definition MemoryImage.h:49
Definition SecureHash.h:314
Definition MemoryLayout.h:51
Definition MemoryLayout.h:799
Definition MemoryLayout.h:108
static const FTypeLayoutDesc & Do(const T &Object)
Definition MemoryLayout.h:642
Definition MemoryLayout.h:626
static constexpr bool Value
Definition MemoryLayout.h:628
static const FTypeLayoutDesc & Do()
Definition MemoryLayout.h:635

◆ DECLARE_EXPORTED_TYPE_LAYOUT

#define DECLARE_EXPORTED_TYPE_LAYOUT (   T,
  RequiredAPI,
  Interface 
)    INTERNAL_DECLARE_LAYOUT_BASE(T); INTERNAL_DECLARE_TYPE_LAYOUT(T, Interface, RequiredAPI)

◆ DECLARE_EXPORTED_TYPE_LAYOUT_EXPLICIT_BASES

#define DECLARE_EXPORTED_TYPE_LAYOUT_EXPLICIT_BASES (   T,
  RequiredAPI,
  Interface,
  ... 
)    INTERNAL_DECLARE_LAYOUT_EXPLICIT_BASES(T, __VA_ARGS__); INTERNAL_DECLARE_TYPE_LAYOUT(T, Interface, RequiredAPI)

◆ DECLARE_INLINE_TYPE_LAYOUT

#define DECLARE_INLINE_TYPE_LAYOUT (   T,
  Interface 
)    INTERNAL_DECLARE_LAYOUT_BASE(T); INTERNAL_DECLARE_INLINE_TYPE_LAYOUT(T, Interface)

◆ DECLARE_INLINE_TYPE_LAYOUT_EXPLICIT_BASES

#define DECLARE_INLINE_TYPE_LAYOUT_EXPLICIT_BASES (   T,
  Interface,
  ... 
)    INTERNAL_DECLARE_LAYOUT_EXPLICIT_BASES(T, __VA_ARGS__); INTERNAL_DECLARE_INLINE_TYPE_LAYOUT(T, Interface)

◆ DECLARE_INTRINSIC_TYPE_LAYOUT

#define DECLARE_INTRINSIC_TYPE_LAYOUT (   T)    DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT(template<>, T)

◆ DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT

#define DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT (   TemplatePrefix,
 
)

◆ DECLARE_TYPE_LAYOUT

#define DECLARE_TYPE_LAYOUT (   T,
  Interface 
)    INTERNAL_DECLARE_LAYOUT_BASE(T); INTERNAL_DECLARE_TYPE_LAYOUT(T, Interface, PREPROCESSOR_NOTHING)

◆ DECLARE_TYPE_LAYOUT_EXPLICIT_BASES

#define DECLARE_TYPE_LAYOUT_EXPLICIT_BASES (   T,
  Interface,
  ... 
)    INTERNAL_DECLARE_LAYOUT_EXPLICIT_BASES(T, __VA_ARGS__); INTERNAL_DECLARE_TYPE_LAYOUT(T, Interface, PREPROCESSOR_NOTHING)

◆ IMPLEMENT_ABSTRACT_TYPE_LAYOUT

#define IMPLEMENT_ABSTRACT_TYPE_LAYOUT (   T)
Value:
#define INTERNAL_IMPLEMENT_TYPE_LAYOUT_COMMON(TemplatePrefix, T)
Definition MemoryLayout.h:565

◆ IMPLEMENT_EXPORTED_INTRINSIC_TYPE_LAYOUT

#define IMPLEMENT_EXPORTED_INTRINSIC_TYPE_LAYOUT (   T)

◆ IMPLEMENT_TEMPLATE_TYPE_LAYOUT

#define IMPLEMENT_TEMPLATE_TYPE_LAYOUT (   TemplatePrefix,
 
)
Value:
#define IMPLEMENT_UNREGISTERED_TEMPLATE_TYPE_LAYOUT(TemplatePrefix, T)
Definition MemoryLayout.h:596

◆ IMPLEMENT_TYPE_LAYOUT

#define IMPLEMENT_TYPE_LAYOUT (   T)    IMPLEMENT_TEMPLATE_TYPE_LAYOUT(, T)

◆ IMPLEMENT_UNREGISTERED_TEMPLATE_TYPE_LAYOUT

◆ INTERNAL_DECLARE_INLINE_TYPE_LAYOUT

#define INTERNAL_DECLARE_INLINE_TYPE_LAYOUT (   T,
  InInterface 
)
Value:
private: static void InternalDestroy(void* Object, const FTypeLayoutDesc&, const FPointerTableBase* PtrTable, bool bIsFrozen) { \
Freeze::DestroyObject(static_cast<PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T)*>(Object), PtrTable, bIsFrozen); \
} \
static_assert(TValidateInterfaceHelper<PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T), ETypeLayoutInterface::InInterface>::Value, #InInterface " is invalid interface for " #T); \
if (!TypeDesc.IsInitialized) { \
TypeDesc.IsInitialized = true; \
TypeDesc.Name = TEXT(#T); \
TypeDesc.Size = sizeof(PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T)); \
TypeDesc.Interface = ETypeLayoutInterface::InInterface; \
TypeDesc.SizeFromFields = ~0u; \
TypeDesc.GetDefaultObjectFunc = &TGetDefaultObjectHelper<PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T), ETypeLayoutInterface::InInterface>::Do; \
InternalLinkType<1>::Initialize(TypeDesc); \
FTypeLayoutDesc::Initialize(TypeDesc); \
} \
return TypeDesc; } \
#define TEXT(x)
Definition Platform.h:1272
#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL(Type)
Definition MemoryLayout.h:506
#define INTERNAL_LAYOUT_INTERFACE_PREFIX(Type)
Definition MemoryLayout.h:496
#define PREPROCESSOR_NOTHING
Definition PreprocessorHelpers.h:110
uint8_t uint8
Definition binka_ue_file_header.h:8
CORE_API uint32 DefaultGetTargetAlignment(const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
Definition MemoryImage.cpp:687
CORE_API uint32 DefaultUnfrozenCopy(const FMemoryUnfreezeContent &Context, const void *Object, const FTypeLayoutDesc &TypeDesc, void *OutDst)
Definition MemoryImage.cpp:909
CORE_API uint32 DefaultAppendHash(const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
Definition MemoryImage.cpp:575
CORE_API void DefaultToString(const void *Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
Definition MemoryImage.cpp:741
const TCHAR * Name
Definition MemoryLayout.h:127
uint32 Alignment
Definition MemoryLayout.h:140
FToStringFunc * ToStringFunc
Definition MemoryLayout.h:134
FAppendHashFunc * AppendHashFunc
Definition MemoryLayout.h:132
uint8 IsInitialized
Definition MemoryLayout.h:145
uint32 Size
Definition MemoryLayout.h:138
FGetDefaultFunc * GetDefaultObjectFunc
Definition MemoryLayout.h:135
ETypeLayoutInterface::Type Interface
Definition MemoryLayout.h:141
FWriteFrozenMemoryImageFunc * WriteFrozenMemoryImageFunc
Definition MemoryLayout.h:130
FDestroyFunc * DestroyFunc
Definition MemoryLayout.h:129
FUnfrozenCopyFunc * UnfrozenCopyFunc
Definition MemoryLayout.h:131
FGetTargetAlignmentFunc * GetTargetAlignmentFunc
Definition MemoryLayout.h:133
uint32 SizeFromFields
Definition MemoryLayout.h:139
Definition MemoryLayout.h:201
Definition MemoryLayout.h:334
Definition MemoryLayout.h:215

◆ INTERNAL_DECLARE_LAYOUT_BASE

#define INTERNAL_DECLARE_LAYOUT_BASE (   T)
Value:
template<typename InternalType> static void InternalInitializeBases(FTypeLayoutDesc& TypeDesc) { TInitializeBaseHelper<InternalType, InternalBaseType>::Initialize(TypeDesc); }
Definition MemoryLayout.h:373
static void Initialize(FTypeLayoutDesc &TypeDesc)
Definition MemoryLayout.h:385

◆ INTERNAL_DECLARE_LAYOUT_EXPLICIT_BASES

#define INTERNAL_DECLARE_LAYOUT_EXPLICIT_BASES (   T,
  ... 
)     template<typename InternalType> static void InternalInitializeBases(FTypeLayoutDesc& TypeDesc) { InternalInitializeBasesHelper<InternalType, __VA_ARGS__>(TypeDesc); }

◆ INTERNAL_DECLARE_TYPE_LAYOUT

#define INTERNAL_DECLARE_TYPE_LAYOUT (   T,
  InInterface,
  RequiredAPI 
)
Value:
private: static void InternalDestroy(void* Object, const FTypeLayoutDesc&, const FPointerTableBase* PtrTable, bool bIsFrozen); \
#define INTERNAL_LAYOUT_INTERFACE_SUFFIX(Type)
Definition MemoryLayout.h:501

◆ INTERNAL_DECLARE_TYPE_LAYOUT_COMMON

#define INTERNAL_DECLARE_TYPE_LAYOUT_COMMON (   T,
  InInterface 
)
Value:
static constexpr int CounterBase = __COUNTER__; \
public: using DerivedType = PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T); \
static constexpr ETypeLayoutInterface::Type InterfaceType = ETypeLayoutInterface::InInterface; \
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
Type
Definition MemoryLayout.h:67

◆ INTERNAL_IMPLEMENT_TYPE_LAYOUT_COMMON

#define INTERNAL_IMPLEMENT_TYPE_LAYOUT_COMMON (   TemplatePrefix,
 
)
Value:
Freeze::DestroyObject(static_cast<PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T)*>(Object), PtrTable, bIsFrozen); \
} \
if (!TypeDesc.IsInitialized) { \
TypeDesc.IsInitialized = true; \
TypeDesc.Name = TEXT(#T); \
TypeDesc.Size = sizeof(PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T)); \
TypeDesc.Interface = InterfaceType; \
TypeDesc.SizeFromFields = ~0u; \
InternalLinkType<1>::Initialize(TypeDesc); \
FTypeLayoutDesc::Initialize(TypeDesc); \
} \
return TypeDesc; }
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
const bool
Definition NetworkReplayStreaming.h:178

◆ INTERNAL_LAYOUT_FIELD

#define INTERNAL_LAYOUT_FIELD (   T,
  InName,
  InOffset,
  InFlags,
  InNumArray,
  InBitFieldSize,
  Counter 
)
Value:
static void Initialize(FTypeLayoutDesc& TypeDesc) { \
InternalLinkType<Counter - CounterBase + 1>::Initialize(TypeDesc); \
FieldDesc.Name = TEXT(#InName); \
FieldDesc.UFieldNameLength = Freeze::FindFieldNameLength(FieldDesc.Name); \
FieldDesc.Offset = InOffset; \
FieldDesc.NumArray = InNumArray; \
FieldDesc.Flags = InFlags; \
FieldDesc.BitFieldSize = InBitFieldSize; \
FieldDesc.Next = TypeDesc.Fields; \
TypeDesc.Fields = &FieldDesc; \
} \
}; \
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
CORE_API uint8 FindFieldNameLength(const TCHAR *Name)
Definition MemoryImage.cpp:2198
Definition MemoryLayout.h:93
const TCHAR * Name
Definition MemoryLayout.h:96
const FFieldLayoutDesc * Fields
Definition MemoryLayout.h:128
Definition MemoryLayout.h:340

◆ INTERNAL_LAYOUT_FIELD_WITH_WRITER

#define INTERNAL_LAYOUT_FIELD_WITH_WRITER (   T,
  InName,
  InFunc,
  Counter 
)
Value:
static void CallWriteFrozenField(FMemoryImageWriter& Writer, const void* Object, const void* FieldObject, const FTypeLayoutDesc& TypeDesc, const FTypeLayoutDesc& DerivedTypeDesc) { \
} \
static void Initialize(FTypeLayoutDesc& TypeDesc) { \
InternalLinkType<Counter - CounterBase + 1>::Initialize(TypeDesc); \
FieldDesc.Name = TEXT(#InName); \
FieldDesc.UFieldNameLength = Freeze::FindFieldNameLength(FieldDesc.Name); \
FieldDesc.WriteFrozenMemoryImageFunc = &CallWriteFrozenField; \
FieldDesc.Offset = STRUCT_OFFSET(DerivedType, InName); \
FieldDesc.NumArray = 1u; \
FieldDesc.Next = TypeDesc.Fields; \
TypeDesc.Fields = &FieldDesc; \
} \
}; \
#define STRUCT_OFFSET(struc, member)
Definition UnrealTemplate.h:218
@ None
Definition MemoryLayout.h:80

◆ INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL

#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL (   Type)    PREPROCESSOR_JOIN(INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_, Type)

◆ INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_Abstract

#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_Abstract   { return FTypeLayoutDesc::GetInvalidTypeLayout(); }

◆ INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_NonVirtual

#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_NonVirtual   { return StaticGetTypeLayout(); }

◆ INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_Virtual

#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_Virtual   { return StaticGetTypeLayout(); }

◆ INTERNAL_LAYOUT_INTERFACE_PREFIX

#define INTERNAL_LAYOUT_INTERFACE_PREFIX (   Type)    PREPROCESSOR_JOIN(INTERNAL_LAYOUT_INTERFACE_PREFIX_, Type)

◆ INTERNAL_LAYOUT_INTERFACE_PREFIX_Abstract

#define INTERNAL_LAYOUT_INTERFACE_PREFIX_Abstract (   ...)    virtual

◆ INTERNAL_LAYOUT_INTERFACE_PREFIX_NonVirtual

#define INTERNAL_LAYOUT_INTERFACE_PREFIX_NonVirtual (   ...)    __VA_ARGS__

◆ INTERNAL_LAYOUT_INTERFACE_PREFIX_Virtual

#define INTERNAL_LAYOUT_INTERFACE_PREFIX_Virtual (   ...)    __VA_ARGS__ virtual

◆ INTERNAL_LAYOUT_INTERFACE_SUFFIX

#define INTERNAL_LAYOUT_INTERFACE_SUFFIX (   Type)    PREPROCESSOR_JOIN(INTERNAL_LAYOUT_INTERFACE_SUFFIX_, Type)

◆ INTERNAL_LAYOUT_INTERFACE_SUFFIX_Abstract

#define INTERNAL_LAYOUT_INTERFACE_SUFFIX_Abstract   { return FTypeLayoutDesc::GetInvalidTypeLayout(); }

◆ INTERNAL_LAYOUT_INTERFACE_SUFFIX_NonVirtual

#define INTERNAL_LAYOUT_INTERFACE_SUFFIX_NonVirtual   ;

◆ INTERNAL_LAYOUT_INTERFACE_SUFFIX_Virtual

#define INTERNAL_LAYOUT_INTERFACE_SUFFIX_Virtual   ;

◆ INTERNAL_LAYOUT_TOSTRING

#define INTERNAL_LAYOUT_TOSTRING (   Func,
  Counter 
)
Value:
static void CallToString(const void* Object, const FTypeLayoutDesc& TypeDesc, const FPlatformTypeLayoutParameters& LayoutParams, FMemoryToStringContext& OutContext) { \
} \
static void Initialize(FTypeLayoutDesc& TypeDesc) { \
InternalLinkType<Counter - CounterBase + 1>::Initialize(TypeDesc); \
TypeDesc.ToStringFunc = &CallToString; \
} \
};
#define UE_DECLARE_INTERNAL_LINK_SPECIALIZATION(T, Counter)
Definition MemoryLayout.h:45

◆ INTERNAL_LAYOUT_WRITE_MEMORY_IMAGE

#define INTERNAL_LAYOUT_WRITE_MEMORY_IMAGE (   Func,
  Counter 
)
Value:
static void CallWriteMemoryImage(FMemoryImageWriter& Writer, const void* Object, const FTypeLayoutDesc& TypeDesc, const FTypeLayoutDesc& DerivedTypeDesc) { \
static_cast<const DerivedType*>(Object)->Func(Writer, TypeDesc); \
} \
static void Initialize(FTypeLayoutDesc& TypeDesc) { \
InternalLinkType<Counter - CounterBase + 1>::Initialize(TypeDesc); \
} \
};

◆ INTERNAL_REGISTER_TYPE_LAYOUT

◆ LAYOUT_ARRAY

#define LAYOUT_ARRAY (   T,
  Name,
  NumArray,
  ... 
)    PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name[NumArray]; INTERNAL_LAYOUT_FIELD(T, Name, STRUCT_OFFSET(DerivedType, Name), EFieldLayoutFlags::MakeFlags(__VA_ARGS__), NumArray, 0u, __COUNTER__)

◆ LAYOUT_ARRAY_EDITORONLY

#define LAYOUT_ARRAY_EDITORONLY (   T,
  Name,
  NumArray,
  ... 
)

◆ LAYOUT_BITFIELD

#define LAYOUT_BITFIELD (   T,
  Name,
  BitFieldSize,
  ... 
)    PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name : BitFieldSize; INTERNAL_LAYOUT_FIELD(T, Name, ~0u, EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, BitFieldSize, __COUNTER__)

◆ LAYOUT_BITFIELD_EDITORONLY

#define LAYOUT_BITFIELD_EDITORONLY (   T,
  Name,
  BitFieldSize,
  ... 
)

◆ LAYOUT_FIELD

◆ LAYOUT_FIELD_EDITORONLY

#define LAYOUT_FIELD_EDITORONLY (   T,
  Name,
  ... 
)

◆ LAYOUT_FIELD_INITIALIZED

#define LAYOUT_FIELD_INITIALIZED (   T,
  Name,
  Value,
  ... 
)    PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name = Value; INTERNAL_LAYOUT_FIELD(T, Name, STRUCT_OFFSET(DerivedType, Name), EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, 0u, __COUNTER__)

◆ LAYOUT_FIELD_WITH_WRITER

#define LAYOUT_FIELD_WITH_WRITER (   T,
  Name,
  Func 
)    PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name; INTERNAL_LAYOUT_FIELD_WITH_WRITER(T, Name, Func, __COUNTER__)

◆ LAYOUT_MUTABLE_BITFIELD

#define LAYOUT_MUTABLE_BITFIELD (   T,
  Name,
  BitFieldSize,
  ... 
)    mutable PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name : BitFieldSize; INTERNAL_LAYOUT_FIELD(T, Name, ~0u, EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, BitFieldSize, __COUNTER__)

◆ LAYOUT_MUTABLE_FIELD

◆ LAYOUT_MUTABLE_FIELD_INITIALIZED

#define LAYOUT_MUTABLE_FIELD_INITIALIZED (   T,
  Name,
  Value,
  ... 
)    mutable PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name = Value; INTERNAL_LAYOUT_FIELD(T, Name, STRUCT_OFFSET(DerivedType, Name), EFieldLayoutFlags::MakeFlags(__VA_ARGS__), 1u, 0u, __COUNTER__)

◆ LAYOUT_MUTABLE_FIELD_WITH_WRITER

#define LAYOUT_MUTABLE_FIELD_WITH_WRITER (   T,
  Name,
  Func 
)    mutable PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T) Name; INTERNAL_LAYOUT_FIELD_WITH_WRITER(T, Name, Func, __COUNTER__)

◆ LAYOUT_TOSTRING

#define LAYOUT_TOSTRING (   Func)    INTERNAL_LAYOUT_TOSTRING(Func, __COUNTER__)

◆ LAYOUT_WRITE_MEMORY_IMAGE

#define LAYOUT_WRITE_MEMORY_IMAGE (   Func)    INTERNAL_LAYOUT_WRITE_MEMORY_IMAGE(Func, __COUNTER__)

◆ REGISTER_INLINE_TYPE_LAYOUT

#define REGISTER_INLINE_TYPE_LAYOUT (   T)

◆ UE_DECLARE_INTERNAL_LINK_BASE

#define UE_DECLARE_INTERNAL_LINK_BASE (   T)    template<int Counter> struct T

Certain compilers don't accept full explicit template specializations inside class declarations. Partial specializations are accepted however. So for these platforms, we force partial specialization via an extra dummy parameter that's otherwise ignored. This actually breaks MSVC, as MSVC doesn't allow complex statements as template values during partial specialization, so need use full specialization there.

◆ UE_DECLARE_INTERNAL_LINK_SPECIALIZATION

#define UE_DECLARE_INTERNAL_LINK_SPECIALIZATION (   T,
  Counter 
)    template<> struct T<Counter>

◆ UE_STATIC_ONLY

#define UE_STATIC_ONLY (   T)

Function Documentation

◆ ALIAS_TEMPLATE_TYPE_LAYOUT() [1/2]

ALIAS_TEMPLATE_TYPE_LAYOUT ( template< typename T >  ,
const T  ,
 
)

◆ ALIAS_TEMPLATE_TYPE_LAYOUT() [2/2]

ALIAS_TEMPLATE_TYPE_LAYOUT ( template< typename T >  ,
T *  ,
void  
)

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [1/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( bool  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [2/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( char  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [3/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( char16_t  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [4/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( double  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [5/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( ETypeLayoutInterface::Type  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [6/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( float  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [7/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( FThreadSafeCounter  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [8/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( int  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [9/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( int8  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [10/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( long long  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [11/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( long  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [12/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( short  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [13/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( unsigned char  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [14/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( unsigned int  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [15/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( unsigned long long  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [16/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( unsigned long  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [17/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( unsigned short  )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [18/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( void )

◆ DECLARE_INTRINSIC_TYPE_LAYOUT() [19/19]

DECLARE_INTRINSIC_TYPE_LAYOUT ( wchar_t  )

◆ DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT()

DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT ( template< typename T >  ,
TEnumAsByte< T >   
)

◆ DeleteObjectFromLayout()

template<typename T >
void DeleteObjectFromLayout ( T *  Object,
const FPointerTableBase PtrTable = nullptr,
bool  bIsFrozen = false 
)
inline

◆ GetBaseOffset()

template<typename T , typename Base >
uint32 GetBaseOffset ( )
inline

◆ GetDefault()

template<typename T >
const T * GetDefault ( )
inline

Get default object of a class.

See also
UClass::GetDefaultObject()

◆ GetTypeLayoutDesc()

template<typename T >
const FTypeLayoutDesc & GetTypeLayoutDesc ( const FPointerTableBase ,
const T &  Object 
)
inline

◆ InternalDeleteObjectFromLayout()

CORE_API void InternalDeleteObjectFromLayout ( void Object,
const FTypeLayoutDesc TypeDesc,
const FPointerTableBase PtrTable,
bool  bIsFrozen 
)
extern

◆ InternalGetDefaultObject()

template<typename T >
const T * InternalGetDefaultObject ( )

◆ StaticGetTypeLayoutDesc()

template<typename T >
const FTypeLayoutDesc & StaticGetTypeLayoutDesc ( )
inline