7#include "Containers/Array.h"
8#include "Containers/Map.h"
9#include "Containers/Set.h"
17#include "Misc/Optional.h"
52namespace UE{
class FPackageTrailer; }
57template <
typename FuncType>
class TFunction;
152 VERIFY_Redirected = 2
186 return GetPackagePath().GetDebugName();
197 return InstancingContext;
202 return PackageTrailer.Get();
215 bool bIsDestroyingLoader;
247 bool IsContextInstanced()
const;
250 bool IsSoftObjectRemappingEnabled()
const;
273 return Loader !=
nullptr;
276 void DestroyLoader();
288 return bIsDestroyingLoader;
304 static constexpr int32 ExportHashCount = 256;
309 return GetTypeHash(
Object.GetComparisonIndex()) & (ExportHashCount - 1);
389 #if UE_WITH_OBJECT_HANDLE_LATE_RESOLVE
416 void SerializeBulkMeta(UE::BulkData::Private::FBulkMetaData& Meta,
FBulkDataCookedIndex& CookedIndex,
int64& DuplicateSerialOffset,
int32 ElementSize);
421 int32 SoftObjectPathListIndex;
423 int32 GatherableTextDataMapIndex;
425 int32 ImportMapIndex;
427 int32 ExportMapIndex;
435 int32 DependsMapIndex;
437 int32 ExportHashIndex;
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;
490 int32 IsTimeLimitExceededCallCount;
494 double TickStartTime;
501 struct FPackagePrecacheInfo
510 int64 PackageDataSize;
515 FPackagePrecacheInfo()
516 : SynchronizationObject(
NULL)
524 ~FPackagePrecacheInfo()
526 delete SynchronizationObject;
532 static FName NAME_LoadErrors;
535 static bool bActiveRedirectsMapInitialized;
552 FArchiveUObject::PushDebugDataString(DebugData);
554 Loader->PushDebugDataString(DebugData);
559 FArchiveUObject::PopDebugDataString();
561 Loader->PopDebugDataString();
571 static void CreateActiveRedirectsMap(
const FString&
GEngineIniName);
617 return bHasFinishedInitialization;
632 virtual void FlushCache()
override;
650 virtual FString GetArchiveName()
const override;
652#if WITH_EDITORONLY_DATA
684 EVerifyResult VerifyImport(
int32 ImportIndex);
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.")
838 bool FinishExternalReadDependencies(
double TimeLimit);
870 void FindDirectChildExportsFromExportTable(int32 ExportIndex, TArray<int32>& OutChildExports);
883 bool IsPackageReferenceAllowed(
UPackage* InPackage);
955 bool IsImportNative(
const int32 ImportIndex)
const;
970 void DetachExport(
int32 i );
1013 UE_DEPRECATED(5.5,
"LOAD_RegenerateBulkDataGuids is now obsolete so this method no longer has any purpose.")
1040 checkf(!
bDetachedLoader,
TEXT(
"Attempting to call ::Precache on a FLinkerLoad that has previously called ::DetachLoader"));
1055 inline virtual int64 Tell()
override
1061 return Loader->
Tell();
1064 inline virtual int64 TotalSize()
override
1067 checkf(!
bDetachedLoader,
TEXT(
"Attempting to call ::TotalSize on a FLinkerLoad that has previously called ::DetachLoader"));
1078 checkf(!
bDetachedLoader,
TEXT(
"Attempting to call ::Serialize on a FLinkerLoad that has previously called ::DetachLoader"));
1095 using FArchiveUObject::operator<<;
1159#if WITH_EDITORONLY_DATA
1162 return Loader->IsEditorOnlyPropertyOnTheStack();
1241 ELinkerStatus CreateLoader(
1250 ELinkerStatus SerializePackageFileSummary();
1255 ELinkerStatus SerializePackageFileSummaryInternal();
1260 ELinkerStatus UpdateFromPackageFileSummary();
1265 ELinkerStatus SerializePackageTrailer();
1270 ELinkerStatus SerializeNameMap();
1275 ELinkerStatus SerializeSoftObjectPathList();
1280 ELinkerStatus SerializeImportMap();
1285 ELinkerStatus FixupImportMap();
1290 ELinkerStatus PopulateInstancingContext();
1292 ELinkerStatus RelocateReferences();
1294 ELinkerStatus ApplyInstancingContext();
1299 ELinkerStatus SerializeExportMap();
1301#if WITH_TEXT_ARCHIVE_SUPPORT
1312 ELinkerStatus SerializeMetaData();
1318 ELinkerStatus SerializeDependsMap();
1323 ELinkerStatus SerializePreloadDependencies();
1328 ELinkerStatus SerializeDataResourceMap();
1333#if WITH_EDITORONLY_DATA
1338 void ResetStatusInfo();
1351 virtual void ForceBlueprintFinalization()
override;
1362 bool IsBlueprintFinalizationPending()
const;
1397 bool DeferPotentialCircularImport(
const int32 ImportIndex);
1460 bool HasUnresolvedDependencies()
const;
1468 void ResolveAllImports();
1523 bool IsExportBeingResolved(
int32 ExportIndex);
1525 void ResetDeferredLoadingState();
1527 bool HasPerformedFullExportResolvePass();
1534#if USE_CIRCULAR_DEPENDENCY_LOAD_DEFERRING
1568 ELinkerStatus CreateExportHash();
1575 ELinkerStatus FindExistingExports();
1588#if WITH_TEXT_ARCHIVE_SUPPORT
1596 UE_DEPRECATED(5.5,
"GetSerializeContext is not supported. Use FUObjectThreadContext::Get().GetSerializeContext().")
#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
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")
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
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 AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition PackageTrailer.h:407
Definition RecursiveMutex.h:19
Definition EditorBulkData.h:132
Definition LinkerPlaceholderExportObject.h:20
Type
Definition Linker.h:386
@ Load
Definition Linker.h:388
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