UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LinkerLoad.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Async/Mutex.h"
7#include "Containers/Array.h"
8#include "Containers/Map.h"
9#include "Containers/Set.h"
11#include "CoreGlobals.h"
12#include "CoreMinimal.h"
14#include "HAL/PlatformMath.h"
17#include "Misc/Optional.h"
18#include "Misc/PackagePath.h"
25#include "Templates/UniquePtr.h"
27#include "UObject/Linker.h"
29#include "UObject/NameTypes.h"
37#include "UObject/UnrealNames.h"
38
39class FBulkData;
40class FLinkerLoad;
42class FPackageIndex;
44class IPakFile;
45class UClass;
47class UObject;
48class UPackage;
49class UStruct;
50namespace UE::Serialization{ class FEditorBulkData; }
51namespace UE::BulkData::Private{ class FBulkMetaData; }
52namespace UE{ class FPackageTrailer; }
53struct FObjectPtr;
55struct FScopedSlowTask;
57template <typename FuncType> class TFunction;
58
60
61/*----------------------------------------------------------------------------
62 FLinkerLoad.
63----------------------------------------------------------------------------*/
64
69{
72
75
79 bool operator==(const FDependencyRef& Other) const
80 {
81 return Linker == Other.Linker && ExportIndex == Other.ExportIndex;
82 }
83
90 friend uint32 GetTypeHash( const FDependencyRef& Ref );
91};
92
113
117class FAsyncArchive;
118
121 final
122#endif
123 : public FLinker, public FArchiveUObject
124{
125 // Friends.
126 friend class UObject;
127 friend class UPackageMap;
128 friend struct FAsyncPackage;
129 friend struct FAsyncPackage2;
132protected:
135 {
137 LINKER_Failed = 0,
139 LINKER_Loaded = 1,
141 LINKER_TimedOut = 2
142 };
143
146 {
148 VERIFY_Failed = 0,
150 VERIFY_Success = 1,
152 VERIFY_Redirected = 2
153 };
154
155 // Variables.
156public:
157
162
163 virtual ~FLinkerLoad();
164
169
173
174 // Used to protect LinkerLoad from multithreaded access
176
180 {
181 return bIsAsyncLoader ? (FAsyncArchive*)Loader : nullptr;
182 }
183
184 virtual FString GetDebugName() const override
185 {
186 return GetPackagePath().GetDebugName();
187 }
188
191 {
192 return PackagePath;
193 }
194
196 {
197 return InstancingContext;
198 }
199
201 {
202 return PackageTrailer.Get();
203 }
204
205#if WITH_EDITOR
206 bool IsPackageRelocated() const
207 {
208 return bIsPackageRelocated;
209 }
210#endif
211
212private:
213
215 bool bIsDestroyingLoader;
216#if WITH_EDITOR
218 bool bDetachedLoader;
219#endif // WITH_EDITOR
220
224 FStructuredArchive* StructuredArchive;
225 FArchiveFormatterType* StructuredArchiveFormatter;
226 TOptional<FStructuredArchive::FRecord> StructuredArchiveRootRecord;
229 FPackagePath PackagePath;
230
232 void SetPackagePath(const FPackagePath& PackagePath);
233
235 FArchive* Loader;
236
238 FLinkerInstancingContext InstancingContext;
239
241 TUniquePtr<UE::FPackageTrailer> PackageTrailer;
242
244 TSet<int32> ImportsToVerifyOnCreate;
245
246 // Helper function to access the InstancingContext IsInstanced,
247 bool IsContextInstanced() const;
248
249 // Helper function to query if we should do any SoftObjectPath fixup
250 bool IsSoftObjectRemappingEnabled() const;
251
253 void FixupSoftObjectPathForInstancedPackage(FSoftObjectPath& InOutSoftObjectPath);
254
255protected:
256
258 FArchive* GetLoader() const { return Loader; }
259
260public:
261
267 {
268 return Loader;
269 }
270
271 bool HasLoader() const
272 {
273 return Loader != nullptr;
274 }
275
276 void DestroyLoader();
277
284 COREUOBJECT_API void DetachLoader();
285
287 {
288 return bIsDestroyingLoader;
289 }
290
293
294#if WITH_EDITOR
297
301#endif // WITH_EDITOR
302
304 static constexpr int32 ExportHashCount = 256;
306
308 {
309 return GetTypeHash(Object.GetComparisonIndex()) & (ExportHashCount - 1);
310 }
311
316
321
328 COREUOBJECT_API static TArray<FName> FindPreviousNamesForClass(const FString& CurrentClassPath, bool bIsInstance);
329
337 COREUOBJECT_API static TArray<FString> FindPreviousPathNamesForClass(const FString& CurrentClassPath, bool bIsInstance, bool bIncludeShortNames = false);
338
344 COREUOBJECT_API static FName FindNewNameForClass(FName OldClassName, bool bIsInstance);
345
351 COREUOBJECT_API static FString FindNewPathNameForClass(const FString& OldClassNameOrPathName, bool bIsInstance);
352
358 COREUOBJECT_API static FName FindNewNameForEnum(FName OldEnumName);
359
365 COREUOBJECT_API static FName FindNewNameForStruct(FName OldStructName);
366
372 COREUOBJECT_API static bool IsKnownMissingPackage(FName PackageName);
373
377 COREUOBJECT_API static void AddKnownMissingPackage(FName PackageName);
378
383 COREUOBJECT_API static bool RemoveKnownMissingPackage(FName PackageName);
384
389 #if UE_WITH_OBJECT_HANDLE_LATE_RESOLVE
390 COREUOBJECT_API static bool IsImportLazyLoadEnabled();
391 #else
392 inline static bool IsImportLazyLoadEnabled() { return false; }
393 #endif // UE_WITH_OBJECT_HANDLE_LATE_RESOLVE
394
398 COREUOBJECT_API static void OnNewFileAdded(const FString& Filename);
399
400 COREUOBJECT_API static void OnPakFileMounted(const IPakFile& PakFile);
401
405 COREUOBJECT_API bool HasAnyObjectsPendingLoad() const;
406
410 COREUOBJECT_API static void AddGameNameRedirect(const FName OldName, const FName NewName);
411
412 virtual bool SerializeBulkData(FBulkData& BulkData, const FBulkDataSerializationParams& Params) override;
413
414private:
415
416 void SerializeBulkMeta(UE::BulkData::Private::FBulkMetaData& Meta, FBulkDataCookedIndex& CookedIndex, int64& DuplicateSerialOffset, int32 ElementSize);
417
418 // Variables used during async linker creation.
419
421 int32 SoftObjectPathListIndex;
423 int32 GatherableTextDataMapIndex;
425 int32 ImportMapIndex;
427 int32 ExportMapIndex;
428#if WITH_METADATA
433#endif
435 int32 DependsMapIndex;
437 int32 ExportHashIndex;
438
439
441 bool bHasSerializedPackageFileSummary:1;
443 bool bHasSerializedPackageTrailer : 1;
445 bool bHasConstructedExportsReaders:1;
447 bool bHasSerializedPreloadDependencies:1;
449 bool bHasFixedUpImportMap:1;
451 bool bHasPopulatedInstancingContext:1;
453 bool bHasRelocatedReferences:1;
455 bool bHasAppliedInstancingContext : 1;
457 bool bFixupExportMapDone:1;
459 bool bHasFoundExistingExports:1;
461 bool bHasFinishedInitialization:1;
463 bool bIsGatheringDependencies:1;
465 bool bTimeLimitExceeded:1;
467 bool bUseTimeLimit:1;
469 bool bUseFullTimeLimit:1;
471 bool bLoaderNeedsEngineVersionChecks : 1;
473 bool bHasSerializedImportTypeHierarchies : 1;
474
475#if WITH_EDITOR
478
480 bool bIsPackageRelocated : 1;
481
484
487#endif // WITH_EDITOR
488
490 int32 IsTimeLimitExceededCallCount;
492 float TimeLimit;
494 double TickStartTime;
496 int32 OwnerThread;
497
501 struct FPackagePrecacheInfo
502 {
504 FThreadSafeCounter* SynchronizationObject;
505
507 void* PackageData;
508
510 int64 PackageDataSize;
511
515 FPackagePrecacheInfo()
516 : SynchronizationObject(NULL)
517 , PackageData(NULL)
518 , PackageDataSize(0)
519 {
520 }
524 ~FPackagePrecacheInfo()
525 {
526 delete SynchronizationObject;
527 }
528 };
529
530private:
531
532 static FName NAME_LoadErrors;
533
535 static bool bActiveRedirectsMapInitialized;
536
537#if WITH_EDITOR
540
543 {
544 return !IsAsyncLoading() && (LoadFlags & (LOAD_Quiet | LOAD_Async)) == 0;
545 }
546
549
550 virtual void PushDebugDataString(const FName& DebugData) override
551 {
552 FArchiveUObject::PushDebugDataString(DebugData);
553 if ( Loader )
554 Loader->PushDebugDataString(DebugData);
555 }
556
557 virtual void PopDebugDataString() override
558 {
559 FArchiveUObject::PopDebugDataString();
560 if ( Loader )
561 Loader->PopDebugDataString();
562 }
563
564#endif
565
566public:
567
571 static void CreateActiveRedirectsMap(const FString& GEngineIniName);
572
576 bool IsValidPackageIndex(FPackageIndex InIndex);
577
581 COREUOBJECT_API bool FindImportPackage(FName PackageName, FPackageIndex& PackageIdx);
582
587
594
598 COREUOBJECT_API bool FindImportClassAndPackage(FName ClassName, FPackageIndex& ClassIdx, FPackageIndex& PackageIdx);
599
603 COREUOBJECT_API bool CreateImportClassAndPackage(FName ClassName, FName PackageName, FPackageIndex& ClassIdx, FPackageIndex& PackageIdx);
604
608 COREUOBJECT_API ELinkerStatus FixupExportMap();
609
616 {
617 return bHasFinishedInitialization;
618 }
619
622 {
623 return OwnerThread;
624 }
625
629 virtual FLinker* GetLinker() override { return this; }
630
632 virtual void FlushCache() override;
633
645 COREUOBJECT_API static FLinkerLoad* CreateLinker(FUObjectSerializeContext* LoadContext, UPackage* Parent, const FPackagePath& PackagePath, uint32 LoadFlags, FArchive* InLoader = nullptr, const FLinkerInstancingContext* InstancingContext = nullptr);
646
647 void Verify();
648
649 COREUOBJECT_API FName GetExportClassPackage( int32 i );
650 virtual FString GetArchiveName() const override;
651
652#if WITH_EDITORONLY_DATA
662
672#endif
673
684 EVerifyResult VerifyImport(int32 ImportIndex);
685
692 COREUOBJECT_API void LoadAllObjects(bool bForcePreload);
693
701 FName ResolveResourceName( FPackageIndex ResourceIndex );
702
710 UObject* ResolveResource(FPackageIndex ResourceIndex);
711
712 UE_DEPRECATED(5.6, "This function was used only for the now-deleted Conform functionality and will be removed. Contact Epic if you need this function.")
713 int32 FindExportIndex( FName ClassName, FName ClassPackage, FName ObjectName, FPackageIndex ExportOuterIndex );
714
731 COREUOBJECT_API void Preload( UObject* Object ) override;
732
743 UObject* FindExistingExport(int32 ExportIndex);
744
749 UObject* FindExistingImport(int32 ImportIndex);
750
757 void BuildPathName( FString& OutPathName, FPackageIndex ExportIndex ) const;
758
766 COREUOBJECT_API bool WillTextureBeLoaded( UClass* Class, int32 ExportIndex );
767
771 virtual void MarkScriptSerializationStart( const UObject* Obj ) override;
772
776 virtual void MarkScriptSerializationEnd( const UObject* Obj ) override;
777
778 virtual UObject* GetArchetypeFromLoader(const UObject* Obj) override;
779
783 COREUOBJECT_API static FLinkerLoad* FindExistingLinkerForPackage(const UPackage* Package);
784
794 COREUOBJECT_API static void PRIVATE_PatchNewObjectIntoExport(UObject* OldObject, UObject* NewObject,
796 COREUOBJECT_API void PRIVATE_PatchNewObjectIntoExport(int32 OldExportIndex, UObject* NewObject,
798
809 COREUOBJECT_API static void PRIVATE_ForceLoadAllDependencies(UPackage* Package);
810
815 COREUOBJECT_API static void InvalidateExport(UObject* OldObject, bool bHideGarbageObjects = true);
816
817#if WITH_EDITOR
819 COREUOBJECT_API static void SetPreloadingEnabled(bool bEnabled);
821 private:
822 static bool bPreloadingEnabled;
823 public:
824#endif
825
831 virtual bool AttachExternalReadDependency(FExternalReadCallback& ReadCallback) override;
832
838 bool FinishExternalReadDependencies(double TimeLimit);
839
840private:
841#if WITH_EDITOR
847 bool DoesSavedClassMatchActualClass(int32 ExportIndex) const;
848
853 const UObject* GetCurrentObjectAtIndex(FPackageIndex ObjectIndex) const;
854
859
863 void ReplaceExportIndexes(const FPackageIndex& OldIndex, const FPackageIndex& NewIndex);
864
865#endif // WITH_EDITOR
870 void FindDirectChildExportsFromExportTable(int32 ExportIndex, TArray<int32>& OutChildExports);
875 void InvalidateExportIndex(int32 ExportIndex, bool bHideGarbageObjects);
876
883 bool IsPackageReferenceAllowed(UPackage* InPackage);
884
885 UObject* CreateExport( int32 Index );
886
896 UObject* CreateExportAndPreload(int32 ExportIndex, bool bForcePreload = false);
897
904 UClass* GetExportLoadClass(int32 ExportIndex);
905
906#if WITH_EDITOR
920
930#endif
931
932#if WITH_METADATA
943#endif // WITH_METADATA
944
945 UObject* CreateImport( int32 Index );
946
955 bool IsImportNative(const int32 ImportIndex) const;
956
966 FLinkerLoad* FindExistingLinkerForImport(int32 ImportIndex) const;
967
968 UObject* IndexToObject( FPackageIndex Index );
969
970 void DetachExport( int32 i );
971
972#if WITH_EDITOR
979 virtual void AttachBulkData(UObject* Owner, FBulkData* BulkData) override;
980 virtual void AttachBulkData(UE::Serialization::FEditorBulkData* BulkData) override;
987 virtual void DetachBulkData(FBulkData* BulkData, bool bEnsureBulkDataIsLoaded) override;
988 virtual void DetachBulkData(UE::Serialization::FEditorBulkData* BulkData, bool bEnsureBulkDataIsLoaded) override;
994#endif
995 void DetachAllBulkData(bool bEnsureBulkDataIsLoaded);
996public:
997
1001 COREUOBJECT_API void LoadAndDetachAllBulkData();
1002
1006 COREUOBJECT_API void Detach();
1007
1011 COREUOBJECT_API void DetachExports();
1012
1013 UE_DEPRECATED(5.5, "LOAD_RegenerateBulkDataGuids is now obsolete so this method no longer has any purpose.")
1014 bool ShouldRegenerateGuids() const
1015 {
1016 return false;
1017 }
1018
1019private:
1020
1021 // FArchive interface.
1037 inline virtual bool Precache(int64 PrecacheOffset, int64 PrecacheSize) override
1038 {
1039#if WITH_EDITOR
1040 checkf(!bDetachedLoader, TEXT("Attempting to call ::Precache on a FLinkerLoad that has previously called ::DetachLoader"));
1041#endif // WITH_EDITOR
1042
1043 return Loader->Precache(PrecacheOffset, PrecacheSize);
1044 }
1045
1046 inline virtual void Seek(int64 InPos) override
1047 {
1048#if WITH_EDITOR
1049 checkf(!bDetachedLoader, TEXT("Attempting to call ::Seek on a FLinkerLoad that has previously called ::DetachLoader"));
1050#endif // WITH_EDITOR
1051
1052 Loader->Seek(InPos);
1053 }
1054
1055 inline virtual int64 Tell() override
1056 {
1057#if WITH_EDITOR
1058 checkf(!bDetachedLoader, TEXT("Attempting to call ::Tell on a FLinkerLoad that has previously called ::DetachLoader"));
1059#endif // WITH_EDITOR
1060
1061 return Loader->Tell();
1062 }
1063
1064 inline virtual int64 TotalSize() override
1065 {
1066#if WITH_EDITOR
1067 checkf(!bDetachedLoader, TEXT("Attempting to call ::TotalSize on a FLinkerLoad that has previously called ::DetachLoader"));
1068#endif // WITH_EDITOR
1069
1070 return Loader->TotalSize();
1071 }
1072
1073 // this fixes the warning : 'ULinkerLoad::Serialize' hides overloaded virtual function
1074 using FLinker::Serialize;
1075 inline virtual void Serialize(void* V, int64 Length) override
1076 {
1077#if WITH_EDITOR
1078 checkf(!bDetachedLoader, TEXT("Attempting to call ::Serialize on a FLinkerLoad that has previously called ::DetachLoader"));
1079#endif // WITH_EDITOR
1080
1082#if WITH_EDITOR
1083 // This handles the case where we're only serializing to a property bag and we don't immediately know where the script
1084 // property data starts/ends in the object's data stream. Allows for loading from packages saved with an older version.
1086 {
1087 Loader->Seek(Tell() + Length);
1088 }
1089 else
1090#endif
1091 {
1092 Loader->Serialize(V, Length);
1093 }
1094 }
1095 using FArchiveUObject::operator<<; // For visibility of the overloads we don't override
1096 virtual FArchive& operator<<(UObject*& Object) override;
1097 inline virtual FArchive& operator<<(FLazyObjectPtr& LazyObjectPtr) override
1098 {
1099 FArchive& Ar = *this;
1101 Ar << ID;
1102 LazyObjectPtr = ID;
1103 return Ar;
1104 }
1105
1106 virtual FArchive& operator<<(FObjectPtr& ObjectPtr) override;
1107 virtual FArchive& operator<<(FSoftObjectPath& Value) override;
1108
1109 void BadSoftObjectPathError(int32 SoftObjIndex);
1110 void BadNameIndexError(int32 NameIndex);
1111
1112 inline virtual FArchive& operator<<(FName& Name) override
1113 {
1114 FArchive& Ar = *this;
1116 Ar << NameIndex;
1117 int32 Number = 0;
1118 Ar << Number;
1119
1120 if (NameMap.IsValidIndex(NameIndex))
1121 {
1122 // if the name wasn't loaded (because it wasn't valid in this context)
1124
1125 // simply create the name from the NameMap's name and the serialized instance number
1127 }
1128 else
1129 {
1130 Name = FName();
1131 BadNameIndexError(NameIndex);
1132 SetCriticalError();
1133 }
1134
1135 return *this;
1136 }
1137
1138 virtual void SetSerializedProperty(FProperty* InProperty) override
1139 {
1142 }
1143 virtual void SetSerializedPropertyChain(const FArchiveSerializedPropertyChain* InSerializedPropertyChain,
1144 class FProperty* InSerializedPropertyOverride = nullptr) override
1145 {
1148 }
1149 virtual void PushSerializedProperty(class FProperty* InProperty, const bool bIsEditorOnlyProperty) override
1150 {
1153 }
1154 virtual void PopSerializedProperty(class FProperty* InProperty, const bool bIsEditorOnlyProperty) override
1155 {
1158 }
1159#if WITH_EDITORONLY_DATA
1160 virtual bool IsEditorOnlyPropertyOnTheStack() const override
1161 {
1162 return Loader->IsEditorOnlyPropertyOnTheStack();
1163 }
1164#endif
1165
1166 virtual void SetDebugSerializationFlags(uint32 InCustomFlags) override
1167 {
1170 }
1171
1172
1173 // FLinkerLoad functions
1184 bool VerifyImportInner(const int32 ImportIndex, FString& WarningSuffix);
1185
1186 //
1187 // FLinkerLoad creation helpers BEGIN
1188 //
1189
1201 COREUOBJECT_API static FLinkerLoad* CreateLinkerAsync(FUObjectSerializeContext* LoadContext, UPackage* Parent, const FPackagePath& PackagePath, uint32 LoadFlags, const FLinkerInstancingContext* InstancingContext
1203 );
1204
1205protected: // Daniel L: Made this protected so I can override the constructor and create a custom loader to load the header of the linker in the DiffFilesCommandlet
1217
1227private:
1236 COREUOBJECT_API bool IsTimeLimitExceeded( const TCHAR* CurrentTask, int32 Granularity = 1 );
1237protected: // Daniel L: Made this protected so I can override the constructor and create a custom loader to load the header of the linker in the DiffFilesCommandlet
1241 ELinkerStatus CreateLoader(
1243 );
1244private:
1246
1250 ELinkerStatus SerializePackageFileSummary();
1251
1255 ELinkerStatus SerializePackageFileSummaryInternal();
1256
1260 ELinkerStatus UpdateFromPackageFileSummary();
1261
1265 ELinkerStatus SerializePackageTrailer();
1266
1270 ELinkerStatus SerializeNameMap();
1271
1275 ELinkerStatus SerializeSoftObjectPathList();
1276
1280 ELinkerStatus SerializeImportMap();
1281
1285 ELinkerStatus FixupImportMap();
1286
1290 ELinkerStatus PopulateInstancingContext();
1291
1292 ELinkerStatus RelocateReferences();
1293
1294 ELinkerStatus ApplyInstancingContext();
1295
1299 ELinkerStatus SerializeExportMap();
1300
1301#if WITH_TEXT_ARCHIVE_SUPPORT
1305 ELinkerStatus ConstructExportsReaders();
1306#endif
1307
1308#if WITH_METADATA
1312 ELinkerStatus SerializeMetaData();
1313#endif
1314
1318 ELinkerStatus SerializeDependsMap();
1319
1323 ELinkerStatus SerializePreloadDependencies();
1324
1328 ELinkerStatus SerializeDataResourceMap();
1329
1333#if WITH_EDITORONLY_DATA
1335#endif
1336
1338 void ResetStatusInfo();
1339public:
1343 COREUOBJECT_API ELinkerStatus SerializeGatherableTextDataMap(bool bForceEnableForCommandlet = false);
1344
1348 COREUOBJECT_API ELinkerStatus SerializeThumbnails( bool bForceEnableForCommandlet=false );
1349
1351 virtual void ForceBlueprintFinalization() override;
1352
1362 bool IsBlueprintFinalizationPending() const;
1363
1378 UObject* RequestPlaceholderValue(const FProperty* Property, const UClass* ObjectType, const TCHAR* ObjectPath);
1379
1380private:
1388 bool RegenerateBlueprintClass(UClass* LoadClass, UObject* ExportObject);
1389
1397 bool DeferPotentialCircularImport(const int32 ImportIndex);
1398
1399#if WITH_EDITOR
1406 bool IsSuppressableBlueprintImportError(int32 ImportIndex) const;
1407#endif // WITH_EDITOR
1408
1419 bool DeferExportCreation(const int32 ExportIndex, UObject* Outer);
1420
1429 int32 FindCDOExportIndex(UClass* LoadClass);
1430
1437 void ResolveDeferredDependencies(UStruct* LoadStruct);
1438
1450 int32 ResolveDependencyPlaceholder(class FLinkerPlaceholderBase* Placeholder, UClass* ReferencingClass = nullptr, const FName ObjectPath = NAME_None);
1451
1460 bool HasUnresolvedDependencies() const;
1461
1468 void ResolveAllImports();
1469
1476 void FinalizeBlueprint(UClass* LoadClass);
1477
1488 void ResolveDeferredExports(UClass* LoadClass);
1489
1491 void ResolvePlaceholder(ULinkerPlaceholderExportObject* Placeholder);
1492
1494 void ResolvedDeferredSubobjects(ULinkerPlaceholderExportObject* OwningPlaceholder);
1495
1511 bool ForceRegenerateClass(UClass* ImportClass);
1512
1523 bool IsExportBeingResolved(int32 ExportIndex);
1524
1525 void ResetDeferredLoadingState();
1526
1527 bool HasPerformedFullExportResolvePass();
1528
1530 UObject* FindImport(UClass* ImportClass, UObject* ImportOuter, const TCHAR* Name);
1532 static UObject* FindImportFast(UClass* ImportClass, UObject* ImportOuter, FName Name, bool bFindObjectbyName = false);
1533
1534#if USE_CIRCULAR_DEPENDENCY_LOAD_DEFERRING
1542
1548
1556
1562#endif // USE_CIRCULAR_DEPENDENCY_LOAD_DEFERRING
1563
1564
1568 ELinkerStatus CreateExportHash();
1569
1575 ELinkerStatus FindExistingExports();
1576
1581
1582 //
1583 // FLinkerLoad creation helpers END
1584 //
1585
1586private:
1587
1588#if WITH_TEXT_ARCHIVE_SUPPORT
1589 // Function to get a slot for a given export
1591#endif
1592
1593public:
1594
1595 //~ FArchive interface
1596 UE_DEPRECATED(5.5, "GetSerializeContext is not supported. Use FUObjectThreadContext::Get().GetSerializeContext().")
1598};
1599
#define NULL
Definition oodle2base.h:134
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define WITH_EDITOR
Definition Build.h:67
bool(* IsAsyncLoading)()
Definition CoreGlobals.cpp:364
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
#define UNLIKELY(x)
Definition Platform.h:857
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
return true
Definition ExternalRpcRegistry.cpp:601
COREUOBJECT_API bool IsEnforcePackageCompatibleVersionCheck()
Definition LinkerLoad.cpp:206
#define LLM_DECLARE_TAG(...)
Definition LowLevelMemTracker.h:1116
const bool
Definition NetworkReplayStreaming.h:178
@ LOAD_Async
Loads the package using async loading path/ reader.
Definition ObjectMacros.h:70
@ LOAD_Quiet
No log warnings.
Definition ObjectMacros.h:83
std::conditional_t< WITH_TEXT_ARCHIVE_SUPPORT, FStructuredArchiveFormatter, FBinaryArchiveFormatter > FArchiveFormatterType
Definition StructuredArchiveFwd.h:26
bool ShouldReportProgress()
Definition UObjectGlobals.cpp:268
bool ShouldCreateThrottledSlowTask()
Definition UObjectGlobals.cpp:273
UClass * LoadClass(UObject *Outer, FStringView Name, FStringView Filename={}, uint32 LoadFlags=LOAD_None, UPackageMap *Sandbox=nullptr)
Definition UObjectGlobals.h:2145
if(Failed) console_printf("Failed.\n")
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ArchiveUObject.h:17
Definition Archive.h:1208
virtual void SetDebugSerializationFlags(uint32 InCustomFlags)
Definition Archive.h:566
virtual void Serialize(void *V, int64 Length)
Definition Archive.h:1689
virtual CORE_API void PushSerializedProperty(class FProperty *InProperty, const bool bIsEditorOnlyProperty)
Definition Archive.cpp:384
virtual CORE_API void PopSerializedProperty(class FProperty *InProperty, const bool bIsEditorOnlyProperty)
Definition Archive.cpp:400
virtual CORE_API void SetSerializedPropertyChain(const FArchiveSerializedPropertyChain *InSerializedPropertyChain, class FProperty *InSerializedPropertyOverride=nullptr)
Definition Archive.cpp:354
virtual int64 Tell()
Definition Archive.h:149
virtual int64 TotalSize()
Definition Archive.h:155
virtual bool Precache(int64 PrecacheOffset, int64 PrecacheSize)
Definition Archive.h:1814
virtual void Seek(int64 InPos)
Definition Archive.h:1753
virtual void SetSerializedProperty(FProperty *InProperty)
Definition Archive.h:738
Definition AsyncLoadingPrivate.h:13
Definition AsyncLoading2.cpp:4150
Definition BulkDataCookedIndex.h:34
Definition BulkData.h:470
Definition LinkerInstancingContext.h:99
Definition LinkerLoad.h:124
uint32 LoadFlags
Definition LinkerLoad.h:166
const UE::FPackageTrailer * GetPackageTrailer() const
Definition LinkerLoad.h:200
virtual FString GetDebugName() const override
Definition LinkerLoad.h:184
UE::FRecursiveMutex Mutex
Definition LinkerLoad.h:175
bool bHaveImportsBeenVerified
Definition LinkerLoad.h:168
void * AsyncRoot
Definition LinkerLoad.h:292
UE_FORCEINLINE_HINT int32 GetOwnerThreadId() const
Definition LinkerLoad.h:621
ELinkerStatus
Definition LinkerLoad.h:135
static UE_FORCEINLINE_HINT int32 GetHashBucket(FName Object)
Definition LinkerLoad.h:307
TUniquePtr< int32[]> ExportHash
Definition LinkerLoad.h:305
UE_FORCEINLINE_HINT const FLinkerInstancingContext & GetInstancingContext() const
Definition LinkerLoad.h:195
FArchive * GetLoader() const
Definition LinkerLoad.h:258
bool bLockoutLegacyOperations
Definition LinkerLoad.h:172
bool bIsAsyncLoader
Definition LinkerLoad.h:178
UObject * TemplateForGetArchetypeFromLoader
Definition LinkerLoad.h:170
UE_FORCEINLINE_HINT bool IsDestroyingLoader() const
Definition LinkerLoad.h:286
bool bForceSimpleIndexToObject
Definition LinkerLoad.h:171
const FPackagePath & GetPackagePath() const
Definition LinkerLoad.h:190
static bool IsImportLazyLoadEnabled()
Definition LinkerLoad.h:392
UE_DEPRECATED(5.5, "GetSerializeContext is not supported. Use FUObjectThreadContext::Get().GetSerializeContext().") COREUOBJECT_API virtual FUObjectSerializeContext *GetSerializeContext() override
EVerifyResult
Definition LinkerLoad.h:146
TArray< FExternalReadCallback > ExternalReadDependencies
Definition LinkerLoad.h:320
bool HasLoader() const
Definition LinkerLoad.h:271
static UE_FORCEINLINE_HINT ELinkerType::Type StaticType()
Definition LinkerLoad.h:158
FArchive * GetLoader_Unsafe() const
Definition LinkerLoad.h:266
virtual FLinker * GetLinker() override
Definition LinkerLoad.h:629
TArray< FPackageIndex > PreloadDependencies
Definition LinkerLoad.h:315
UE_FORCEINLINE_HINT bool HasFinishedInitialization() const
Definition LinkerLoad.h:615
UE_FORCEINLINE_HINT FAsyncArchive * GetAsyncLoader()
Definition LinkerLoad.h:179
Definition LinkerPlaceholderBase.h:99
Definition Linker.h:398
void Serialize(FArchive &Ar)
Definition Linker.cpp:191
Definition NameTypes.h:617
static FName CreateFromDisplayId(FNameEntryId DisplayId, int32 Number)
Definition NameTypes.h:997
Definition ObjectResource.h:44
Definition PackagePath.h:89
Definition UnrealType.h:174
Definition StructuredArchiveChildReader.h:30
Definition StructuredArchiveSlots.h:52
Definition StructuredArchive.h:57
Definition ThreadSafeCounter.h:14
Definition GenericPlatformFile.h:1020
Definition PakFile.Build.cs:6
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition Class.h:3793
Definition Mutex.h:18
Definition PackageTrailer.h:407
Definition RecursiveMutex.h:19
Definition EditorBulkData.h:132
Definition LinkerPlaceholderExportObject.h:20
Definition Object.h:95
Definition CoreNet.h:191
Definition Package.h:216
Definition Class.h:480
Type
Definition Linker.h:386
@ Load
Definition Linker.h:388
Definition Linker.cpp:38
Definition BulkData.cpp:140
Definition StructuredLog.cpp:42
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
static uint32 GetCurrentThreadId(void)
Definition AndroidPlatformTLS.h:20
Definition ArchiveSerializedPropertyChain.h:9
virtual void SetDebugSerializationFlags(uint32 InCustomFlags)
Definition Archive.h:566
virtual CORE_API void SetSerializedPropertyChain(const FArchiveSerializedPropertyChain *InSerializedPropertyChain, class FProperty *InSerializedPropertyOverride=nullptr)
Definition Archive.cpp:354
virtual void SetSerializedProperty(FProperty *InProperty)
Definition Archive.h:738
Definition AsyncLoading2.cpp:3560
Definition AsyncLoading.h:345
Definition BulkData.h:453
Definition LinkerLoad.h:69
friend uint32 GetTypeHash(const FDependencyRef &Ref)
Definition Linker.cpp:51
FLinkerLoad * Linker
Definition LinkerLoad.h:71
int32 ExportIndex
Definition LinkerLoad.h:74
bool operator==(const FDependencyRef &Other) const
Definition LinkerLoad.h:79
Definition LazyObjectPtr.h:151
Definition NameTypes.h:69
Definition ObjectPtr.h:55
Definition PackageResourceManager.h:52
Definition BlueprintSupport.cpp:605
Definition LinkerLoad.h:95
int32 PreviousIndex
Definition LinkerLoad.h:111
FLinkerLoad * PreviousLinker
Definition LinkerLoad.h:109
~FScopedCreateImportCounter()
Definition LinkerLoad.cpp:443
FUObjectSerializeContext * LoadContext
Definition LinkerLoad.h:107
Definition ScopedSlowTask.h:32
Definition SoftObjectPath.h:56
Definition UObjectThreadContext.h:140
Definition LazyObjectPtr.h:34
Definition Optional.h:131
Definition Tuple.h:652