Ark Server API (ASA) - Wiki
Loading...
Searching...
No Matches
MemoryLayout.h File Reference
+ Include dependency graph for MemoryLayout.h:
+ This graph shows which files directly or indirectly include this file:

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)
 
FORCEINLINE Type EFieldLayoutFlags::MakeFlags (uint32 Flags=None)
 
FORCEINLINE Type EFieldLayoutFlags::MakeFlagsEditorOnly (uint32 Flags=None)
 
FORCEINLINE Type EFieldLayoutFlags::MakeFlagsRayTracing (uint32 Flags=None)
 
template<typename T , typename Base >
uint32 GetBaseOffset ()
 
template<typename T >
const TGetDefault ()
 
template<typename T >
TEnableIf< THasCustomDefaultObject< T >::Value, constT * >::Type InternalGetDefaultObject ()
 
template<typename T >
TEnableIf<!THasCustomDefaultObject< T >::Value, constT * >::Type InternalGetDefaultObject ()
 
void Freeze::DefaultWriteMemoryImageField (FMemoryImageWriter &Writer, const void *Object, const void *FieldObject, const FTypeLayoutDesc &TypeDesc, const FTypeLayoutDesc &DerivedTypeDesc)
 
void Freeze::DefaultWriteMemoryImage (FMemoryImageWriter &Writer, const void *Object, const FTypeLayoutDesc &TypeDesc, const FTypeLayoutDesc &DerivedTypeDesc)
 
uint32 Freeze::DefaultUnfrozenCopy (const FMemoryUnfreezeContent &Context, const void *Object, const FTypeLayoutDesc &TypeDesc, void *OutDst)
 
uint32 Freeze::DefaultAppendHash (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
uint32 Freeze::DefaultGetTargetAlignment (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
void Freeze::DefaultToString (const void *Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
uint32 Freeze::AppendHashForNameAndSize (const TCHAR *Name, uint32 Size, FSHA1 &Hasher)
 
void Freeze::IntrinsicWriteMemoryImage (FMemoryImageWriter &Writer, const void *Object, uint32 Size)
 
void Freeze::IntrinsicWriteMemoryImage (FMemoryImageWriter &Writer, void *, const FTypeLayoutDesc &)
 
template<typename T >
FORCEINLINE void Freeze::DestroyObject (T *Object, const FPointerTableBase *PtrTable, bool bIsFrozen)
 
template<typename T >
FORCEINLINE void Freeze::IntrinsicWriteMemoryImage (FMemoryImageWriter &Writer, const T &Object, const FTypeLayoutDesc &TypeDesc)
 
template<typename T >
FORCEINLINE uint32 Freeze::IntrinsicUnfrozenCopy (const FMemoryUnfreezeContent &Context, const T &Object, void *OutDst)
 
template<typename T >
FORCEINLINE uint32 Freeze::IntrinsicAppendHash (const T *DummyObject, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
template<typename T >
FORCEINLINE 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)
 
uint32 Freeze::IntrinsicAppendHash (void *const *DummyObject, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
uint32 Freeze::IntrinsicGetTargetAlignment (void *const *DummyObject, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
void Freeze::IntrinsicToString (char Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (short Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (int Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (int8 Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (long Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (long long Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (unsigned char Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (unsigned short Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (unsigned int Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (unsigned long Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (unsigned long long Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (float Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (double Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (wchar_t Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (char16_t Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::IntrinsicToString (void *Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
 
void Freeze::ExtractBitFieldValue (const void *Value, uint32 SrcBitOffset, uint32 DestBitOffset, uint32 NumBits, uint64 &InOutValue)
 
bool Freeze::IncludeField (const FFieldLayoutDesc *FieldDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
uint32 Freeze::GetTargetAlignment (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
uint32 Freeze::AppendHash (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
uint32 Freeze::AppendHashPair (const FTypeLayoutDesc &KeyTypeDesc, const FTypeLayoutDesc &ValueTypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
 
uint32 Freeze::HashLayout (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHAHash &OutHash)
 
uint32 Freeze::HashLayouts (const TArray< const FTypeLayoutDesc * > &TypeLayouts, const FPlatformTypeLayoutParameters &LayoutParams, FSHAHash &OutHash)
 
FSHAHash Freeze::HashLayout (const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
 
template<typename T , typename BaseType >
static void InternalInitializeBaseHelper (FTypeLayoutDesc &TypeDesc)
 
template<typename T >
static FORCEINLINE void InternalInitializeBasesHelper (FTypeLayoutDesc &TypeDesc)
 
template<typename T , typename BaseType , typename ... RemainingBaseTypes>
static void InternalInitializeBasesHelper (FTypeLayoutDesc &TypeDesc)
 
uint8 Freeze::FindFieldNameLength (const TCHAR *Name)
 
template<typename T >
const FTypeLayoutDescGetTypeLayoutDesc (const FPointerTableBase *, const T &Object)
 
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

◆ 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!"); \

Definition at line 761 of file MemoryLayout.h.

◆ 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 void CallDestroy(void* Object, const FTypeLayoutDesc&, const FPointerTableBase* PtrTable, bool bIsFrozen); \
RequiredAPI static const FTypeLayoutDesc& Do(); }; \
static const FTypeLayoutDesc & Do(const T &Object)
static constexpr bool Value
static const FTypeLayoutDesc & Do()

Definition at line 701 of file MemoryLayout.h.

◆ DECLARE_EXPORTED_TYPE_LAYOUT

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

Definition at line 554 of file MemoryLayout.h.

◆ 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)

Definition at line 558 of file MemoryLayout.h.

◆ DECLARE_INLINE_TYPE_LAYOUT

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

Definition at line 553 of file MemoryLayout.h.

◆ 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)

Definition at line 557 of file MemoryLayout.h.

◆ DECLARE_INTRINSIC_TYPE_LAYOUT

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

Definition at line 755 of file MemoryLayout.h.

◆ DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT

#define DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT ( TemplatePrefix,
T )

Definition at line 656 of file MemoryLayout.h.

◆ DECLARE_TYPE_LAYOUT

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

Definition at line 552 of file MemoryLayout.h.

◆ 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)

Definition at line 556 of file MemoryLayout.h.

◆ IMPLEMENT_ABSTRACT_TYPE_LAYOUT

#define IMPLEMENT_ABSTRACT_TYPE_LAYOUT ( T)
Value:
#define INTERNAL_IMPLEMENT_TYPE_LAYOUT_COMMON(TemplatePrefix, T)

Definition at line 601 of file MemoryLayout.h.

◆ IMPLEMENT_EXPORTED_INTRINSIC_TYPE_LAYOUT

#define IMPLEMENT_EXPORTED_INTRINSIC_TYPE_LAYOUT ( T)

Definition at line 716 of file MemoryLayout.h.

◆ IMPLEMENT_TEMPLATE_TYPE_LAYOUT

#define IMPLEMENT_TEMPLATE_TYPE_LAYOUT ( TemplatePrefix,
T )
Value:

Definition at line 595 of file MemoryLayout.h.

◆ IMPLEMENT_TYPE_LAYOUT

#define IMPLEMENT_TYPE_LAYOUT ( T)    IMPLEMENT_TEMPLATE_TYPE_LAYOUT(, T)

Definition at line 599 of file MemoryLayout.h.

◆ 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.Interface = ETypeLayoutInterface::InInterface; \
TypeDesc.SizeFromFields = ~0u; \
TypeDesc.GetDefaultObjectFunc = &TGetDefaultObjectHelper<PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T), ETypeLayoutInterface::InInterface>::Do; \
FTypeLayoutDesc::Initialize(TypeDesc); \
} \
return TypeDesc; } \
#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL(Type)
#define INTERNAL_LAYOUT_INTERFACE_PREFIX(Type)
#define TEXT(x)
Definition Platform.h:1108
#define PREPROCESSOR_NOTHING
uint32 DefaultGetTargetAlignment(const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
uint32 DefaultUnfrozenCopy(const FMemoryUnfreezeContent &Context, const void *Object, const FTypeLayoutDesc &TypeDesc, void *OutDst)
uint32 DefaultAppendHash(const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
void DefaultToString(const void *Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
const TCHAR * Name
FToStringFunc * ToStringFunc
FAppendHashFunc * AppendHashFunc
FGetDefaultFunc * GetDefaultObjectFunc
ETypeLayoutInterface::Type Interface
FWriteFrozenMemoryImageFunc * WriteFrozenMemoryImageFunc
FDestroyFunc * DestroyFunc
FUnfrozenCopyFunc * UnfrozenCopyFunc
FGetTargetAlignmentFunc * GetTargetAlignmentFunc

Definition at line 509 of file MemoryLayout.h.

◆ INTERNAL_DECLARE_LAYOUT_BASE

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

Definition at line 545 of file MemoryLayout.h.

◆ 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); }

Definition at line 549 of file MemoryLayout.h.

◆ INTERNAL_DECLARE_TYPE_LAYOUT

#define INTERNAL_DECLARE_TYPE_LAYOUT ( T,
InInterface,
RequiredAPI )

◆ 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 FORCEINLINE
Definition Platform.h:644

Definition at line 503 of file MemoryLayout.h.

◆ INTERNAL_IMPLEMENT_TYPE_LAYOUT_COMMON

#define INTERNAL_IMPLEMENT_TYPE_LAYOUT_COMMON ( TemplatePrefix,
T )
Value:
Freeze::DestroyObject(static_cast<PREPROCESSOR_REMOVE_OPTIONAL_PARENS(T)*>(Object), PtrTable, bIsFrozen); \
} \
if (!TypeDesc.IsInitialized) { \
TypeDesc.IsInitialized = true; \
TypeDesc.Name = TEXT(#T); \
TypeDesc.Interface = InterfaceType; \
TypeDesc.SizeFromFields = ~0u; \
FTypeLayoutDesc::Initialize(TypeDesc); \
} \
return TypeDesc; }

Definition at line 560 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_FIELD

#define INTERNAL_LAYOUT_FIELD ( T,
InName,
InOffset,
InFlags,
InNumArray,
InBitFieldSize,
Counter )

◆ INTERNAL_LAYOUT_FIELD_WITH_WRITER

#define INTERNAL_LAYOUT_FIELD_WITH_WRITER ( T,
InName,
InFunc,
Counter )

◆ INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL

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

Definition at line 501 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_Abstract

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

Definition at line 500 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_NonVirtual

#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_NonVirtual   { return StaticGetTypeLayout(); }

Definition at line 498 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_Virtual

#define INTERNAL_LAYOUT_INTERFACE_INLINE_IMPL_Virtual   { return StaticGetTypeLayout(); }

Definition at line 499 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_PREFIX

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

Definition at line 491 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_PREFIX_Abstract

#define INTERNAL_LAYOUT_INTERFACE_PREFIX_Abstract ( ...)    virtual

Definition at line 490 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_PREFIX_NonVirtual

#define INTERNAL_LAYOUT_INTERFACE_PREFIX_NonVirtual ( ...)    __VA_ARGS__

Definition at line 488 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_PREFIX_Virtual

#define INTERNAL_LAYOUT_INTERFACE_PREFIX_Virtual ( ...)    __VA_ARGS__ virtual

Definition at line 489 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_SUFFIX

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

Definition at line 496 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_SUFFIX_Abstract

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

Definition at line 495 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_SUFFIX_NonVirtual

#define INTERNAL_LAYOUT_INTERFACE_SUFFIX_NonVirtual   ;

Definition at line 493 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_INTERFACE_SUFFIX_Virtual

#define INTERNAL_LAYOUT_INTERFACE_SUFFIX_Virtual   ;

Definition at line 494 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_TOSTRING

#define INTERNAL_LAYOUT_TOSTRING ( Func,
Counter )
Value:

Definition at line 454 of file MemoryLayout.h.

◆ INTERNAL_LAYOUT_WRITE_MEMORY_IMAGE

#define INTERNAL_LAYOUT_WRITE_MEMORY_IMAGE ( Func,
Counter )

◆ 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__)

Definition at line 470 of file MemoryLayout.h.

◆ LAYOUT_ARRAY_EDITORONLY

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

Definition at line 484 of file MemoryLayout.h.

◆ 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__)

Definition at line 472 of file MemoryLayout.h.

◆ LAYOUT_BITFIELD_EDITORONLY

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

Definition at line 485 of file MemoryLayout.h.

◆ LAYOUT_FIELD

◆ LAYOUT_FIELD_EDITORONLY

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

Definition at line 483 of file MemoryLayout.h.

◆ LAYOUT_FIELD_INITIALIZED

Definition at line 468 of file MemoryLayout.h.

◆ LAYOUT_FIELD_WITH_WRITER

Definition at line 473 of file MemoryLayout.h.

◆ 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__)

Definition at line 471 of file MemoryLayout.h.

◆ LAYOUT_MUTABLE_FIELD

Definition at line 467 of file MemoryLayout.h.

◆ LAYOUT_MUTABLE_FIELD_INITIALIZED

Definition at line 469 of file MemoryLayout.h.

◆ 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__)

Definition at line 474 of file MemoryLayout.h.

◆ LAYOUT_TOSTRING

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

Definition at line 476 of file MemoryLayout.h.

◆ LAYOUT_WRITE_MEMORY_IMAGE

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

Definition at line 475 of file MemoryLayout.h.

◆ REGISTER_INLINE_TYPE_LAYOUT

◆ 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.

Definition at line 40 of file MemoryLayout.h.

◆ UE_DECLARE_INTERNAL_LINK_SPECIALIZATION

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

Definition at line 41 of file MemoryLayout.h.

◆ UE_STATIC_ONLY

#define UE_STATIC_ONLY ( T)

Definition at line 29 of file MemoryLayout.h.

Function Documentation

◆ ALIAS_TEMPLATE_TYPE_LAYOUT() [1/2]

ALIAS_TEMPLATE_TYPE_LAYOUT ( template< typename T > ,
const T ,
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

Definition at line 649 of file MemoryLayout.h.

◆ GetBaseOffset()

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

Definition at line 154 of file MemoryLayout.h.

◆ GetDefault()

template<typename T >
const T * GetDefault ( )

◆ GetTypeLayoutDesc()

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

Definition at line 644 of file MemoryLayout.h.

◆ InternalDeleteObjectFromLayout()

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

◆ InternalGetDefaultObject() [1/2]

template<typename T >
TEnableIf< THasCustomDefaultObject< T >::Value, constT * >::Type InternalGetDefaultObject ( )

Definition at line 182 of file MemoryLayout.h.

◆ InternalGetDefaultObject() [2/2]

template<typename T >
TEnableIf<!THasCustomDefaultObject< T >::Value, constT * >::Type InternalGetDefaultObject ( )

Definition at line 188 of file MemoryLayout.h.

◆ InternalInitializeBaseHelper()

template<typename T , typename BaseType >
static void InternalInitializeBaseHelper ( FTypeLayoutDesc & TypeDesc)
static

Definition at line 340 of file MemoryLayout.h.

◆ InternalInitializeBasesHelper() [1/2]

template<typename T >
static FORCEINLINE void InternalInitializeBasesHelper ( FTypeLayoutDesc & TypeDesc)
static

Definition at line 357 of file MemoryLayout.h.

◆ InternalInitializeBasesHelper() [2/2]

template<typename T , typename BaseType , typename ... RemainingBaseTypes>
static void InternalInitializeBasesHelper ( FTypeLayoutDesc & TypeDesc)
static

Definition at line 360 of file MemoryLayout.h.

◆ StaticGetTypeLayoutDesc()

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

Definition at line 641 of file MemoryLayout.h.