UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ObjectReader.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7#include "CoreGlobals.h"
8#include "CoreMinimal.h"
9#include "HAL/Platform.h"
10#include "HAL/UnrealMemory.h"
14#include "UObject/Object.h"
16
17class FArchive;
18class FName;
19struct FLazyObjectPtr;
20struct FObjectPtr;
21struct FSoftObjectPath;
22struct FSoftObjectPtr;
23struct FWeakObjectPtr;
24
29{
30public:
31 FObjectReader(UObject* Obj, const TArray<uint8>& InBytes, bool bIgnoreClassRef = false, bool bIgnoreArchetypeRef = false)
32 : Bytes(InBytes)
33 {
34 this->SetIsLoading(true);
35 this->SetIsPersistent(false);
38
39#if USE_STABLE_LOCALIZATION_KEYS
41 {
42 SetLocalizationNamespace(TextNamespaceUtil::EnsurePackageNamespace(Obj));
43 }
44#endif // USE_STABLE_LOCALIZATION_KEYS
45
46 Obj->Serialize(*this);
47 }
48
49 //~ Begin FArchive Interface
50
52 {
53 return (int64)Bytes.Num();
54 }
55
56 void Serialize(void* Data, int64 Num)
57 {
58 if (Num && !IsError())
59 {
60 // Only serialize if we have the requested amount of data
61 if (Offset + Num <= TotalSize())
62 {
64 Offset += Num;
65 }
66 else
67 {
68 SetError();
69 }
70 }
71 }
72
73 COREUOBJECT_API virtual FArchive& operator<<(FName& N) override;
74 COREUOBJECT_API virtual FArchive& operator<<(UObject*& Res) override;
80 COREUOBJECT_API virtual FString GetArchiveName() const override;
81 //~ End FArchive Interface
82
83
85 : Bytes(InBytes)
86 {
87 this->SetIsLoading(true);
88 this->SetIsPersistent(false);
89 ArIgnoreClassRef = false;
91 }
92
93protected:
94
96};
#define GIsEditor
Definition CoreGlobals.h:233
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ Num
Definition MetalRHIPrivate.h:234
@ PPF_DuplicateVerbatim
Definition PropertyPortFlags.h:125
@ PPF_DuplicateForPIE
Definition PropertyPortFlags.h:102
Definition Archive.h:1208
uint8 ArIgnoreArchetypeRef
Definition Archive.h:894
virtual CORE_API void SetIsPersistent(bool bInIsPersistent)
Definition Archive.cpp:1553
virtual CORE_API void SetIsLoading(bool bInIsLoading)
Definition Archive.cpp:1513
CORE_API void SetError()
Definition Archive.cpp:314
uint32 ArPortFlags
Definition Archive.h:951
UE_FORCEINLINE_HINT bool IsError() const
Definition Archive.h:362
uint8 ArIgnoreClassRef
Definition Archive.h:909
Definition MemoryArchive.h:15
int64 Offset
Definition MemoryArchive.h:68
friend FArchive & operator<<(FArchive &Ar, ANSICHAR &Value)
Definition Archive.h:1387
Definition NameTypes.h:617
Definition ObjectReader.h:29
FObjectReader(const TArray< uint8 > &InBytes)
Definition ObjectReader.h:84
virtual COREUOBJECT_API FString GetArchiveName() const override
Definition ObjectReader.cpp:63
FObjectReader(UObject *Obj, const TArray< uint8 > &InBytes, bool bIgnoreClassRef=false, bool bIgnoreArchetypeRef=false)
Definition ObjectReader.h:31
int64 TotalSize()
Definition ObjectReader.h:51
void Serialize(void *Data, int64 Num)
Definition ObjectReader.h:56
const TArray< uint8 > & Bytes
Definition ObjectReader.h:95
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition Object.h:95
virtual COREUOBJECT_API void Serialize(FArchive &Ar)
Definition LazyObjectPtr.h:151
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
Definition ObjectPtr.h:55
Definition SoftObjectPath.h:56
Definition SoftObjectPtr.h:45
Definition WeakObjectPtr.h:49