UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MemoryImageWriter.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
7
8struct FScriptName;
9class FMemoryImage;
12
14{
15public:
19
25
26 inline bool Is32BitTarget() const { return GetTargetLayoutParams().Is32Bit(); }
27 inline bool Is64BitTarget() const { return !Is32BitTarget(); }
28
30
31 CORE_API void WriteObject(const void* Object, const FTypeLayoutDesc& TypeDesc);
32 CORE_API void WriteObjectArray(const void* Object, const FTypeLayoutDesc& TypeDesc, uint32_t NumArray);
33 CORE_API void WriteRootObject(const void* Object, const FTypeLayoutDesc& TypeDesc);
34
38 CORE_API uint32 WriteBytes(const void* Data, uint32 Size);
46
47 template<typename T>
48 void WriteObject(const T& Object)
49 {
51 WriteObject(&Object, TypeDesc);
52 }
53
54 template<typename T>
55 void WriteRootObject(const T& Object)
56 {
58 WriteRootObject(&Object, TypeDesc);
59 }
60
61 template<typename T>
63 {
64 return WriteAlignment(alignof(T));
65 }
66
67 template<typename T>
68 uint32 WriteBytes(const T& Data)
69 {
70 return WriteBytes(&Data, sizeof(T));
71 }
72
73//private:
75};
76
78{
79public:
86
93
95
97
98 inline uint32 UnfreezeObject(const void* Object, const FTypeLayoutDesc& TypeDesc, void* OutDst) const
99 {
100 return TypeDesc.UnfrozenCopyFunc(*this, Object, TypeDesc, OutDst);
101 }
102
103 template<typename T>
104 inline uint32 UnfreezeObject(const T& Object, void* OutDst) const
105 {
107 return UnfreezeObject(&Object, TypeDesc, OutDst);
108 }
109
111
112 // Layout of the frozen data
114 bool bIsFrozenForCurrentPlatform; // FrozenLayoutParameters.IsCurrentPlatform
115};
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
const FTypeLayoutDesc & GetTypeLayoutDesc(const FPointerTableBase *, const T &Object)
Definition MemoryLayout.h:649
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MemoryImage.h:216
Definition MemoryImageWriter.h:14
void WriteObject(const T &Object)
Definition MemoryImageWriter.h:48
CORE_API ~FMemoryImageWriter()
Definition MemoryImage.cpp:2084
CORE_API uint32 GetOffset() const
Definition MemoryImage.cpp:2128
CORE_API void WriteObject(const void *Object, const FTypeLayoutDesc &TypeDesc)
Definition MemoryImage.cpp:2099
CORE_API const FPlatformTypeLayoutParameters & GetHostLayoutParams() const
Definition MemoryImage.cpp:2089
CORE_API uint32 WriteBytes(const void *Data, uint32 Size)
Definition MemoryImage.cpp:2143
CORE_API int32 AddTypeDependency(const FTypeLayoutDesc &TypeDesc)
Definition MemoryImage.cpp:2094
CORE_API FMemoryImage & GetImage() const
Definition MemoryImage.cpp:2088
uint32 WriteBytes(const T &Data)
Definition MemoryImageWriter.h:68
CORE_API uint32 WriteNullPointer()
Definition MemoryImage.cpp:2148
CORE_API void WriteRootObject(const void *Object, const FTypeLayoutDesc &TypeDesc)
Definition MemoryImage.cpp:2104
CORE_API uint32 WriteRawPointerSizedBytes(uint64 PointerValue)
Definition MemoryImage.cpp:2163
CORE_API const FPlatformTypeLayoutParameters & GetTargetLayoutParams() const
Definition MemoryImage.cpp:2090
CORE_API void WriteObjectArray(const void *Object, const FTypeLayoutDesc &TypeDesc, uint32_t NumArray)
Definition MemoryImage.cpp:2113
CORE_API uint32 WriteFMemoryImageName(int32 NumBytes, const FName &Name)
Definition MemoryImage.cpp:2173
CORE_API uint32 WriteVTable(const FTypeLayoutDesc &TypeDesc, const FTypeLayoutDesc &DerivedTypeDesc)
Definition MemoryImage.cpp:2168
void WriteRootObject(const T &Object)
Definition MemoryImageWriter.h:55
bool Is64BitTarget() const
Definition MemoryImageWriter.h:27
CORE_API FPointerTableBase & GetPointerTable() const
Definition MemoryImage.cpp:2091
uint32 WriteAlignment()
Definition MemoryImageWriter.h:62
FMemoryImageSection * Section
Definition MemoryImageWriter.h:74
CORE_API uint32 WriteFScriptName(const FScriptName &Name)
Definition MemoryImage.cpp:2178
CORE_API const FPointerTableBase * TryGetPrevPointerTable() const
Definition MemoryImage.cpp:2092
bool Is32BitTarget() const
Definition MemoryImageWriter.h:26
CORE_API FMemoryImageWriter WritePointer(const FTypeLayoutDesc &StaticTypeDesc, const FTypeLayoutDesc &DerivedTypeDesc, uint32 *OutOffsetToBase=nullptr)
Definition MemoryImage.cpp:2153
CORE_API void WritePaddingToSize(uint32 Offset)
Definition MemoryImage.cpp:2138
Definition MemoryImage.h:285
Definition MemoryImageWriter.h:78
bool bIsFrozenForCurrentPlatform
Definition MemoryImageWriter.h:114
const FPointerTableBase * PrevPointerTable
Definition MemoryImageWriter.h:110
CORE_API const FTypeLayoutDesc * GetDerivedTypeDesc(const FTypeLayoutDesc &StaticTypeDesc, int32 TypeIndex) const
Definition MemoryImage.cpp:2183
FPlatformTypeLayoutParameters FrozenLayoutParameters
Definition MemoryImageWriter.h:113
uint32 UnfreezeObject(const T &Object, void *OutDst) const
Definition MemoryImageWriter.h:104
const FPointerTableBase * TryGetPrevPointerTable() const
Definition MemoryImageWriter.h:94
uint32 UnfreezeObject(const void *Object, const FTypeLayoutDesc &TypeDesc, void *OutDst) const
Definition MemoryImageWriter.h:98
FMemoryUnfreezeContent(const FPointerTableBase *InPointerTable)
Definition MemoryImageWriter.h:80
FMemoryUnfreezeContent(const FPointerTableBase *InPointerTable, const FPlatformTypeLayoutParameters &InLayoutParams)
Definition MemoryImageWriter.h:87
Definition NameTypes.h:617
Definition MemoryImage.h:49
Definition MemoryLayout.h:799
CORE_API void InitializeForCurrent()
Definition MemoryImage.cpp:81
bool Is32Bit() const
Definition MemoryLayout.h:814
Definition NameTypes.h:491
Definition MemoryLayout.h:108
FUnfrozenCopyFunc * UnfrozenCopyFunc
Definition MemoryLayout.h:131