UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PackagePath.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
10#include "HAL/Platform.h"
12#include "Templates/UniquePtr.h"
13#include "UObject/NameTypes.h"
14
15#ifndef UE_SUPPORT_FULL_PACKAGEPATH
16 #define UE_SUPPORT_FULL_PACKAGEPATH WITH_EDITOR
17#endif
18
19class FArchive;
20
26enum class EPackageSegment : uint8;
27
39{
40 // Header Segments
47 Asset,
49 Map,
53 TextMap,
58 Custom,
61
62 // Other Segments
63
64 Exports,
69 Count,
70};
71inline constexpr int EPackageExtensionCount = static_cast<int>(EPackageExtension::PayloadSidecar) + 1;
72COREUOBJECT_API const TCHAR* LexToString(EPackageExtension PackageExtension);
73
74
89{
90public:
91 // Public API
92
94 constexpr FPackagePath() = default;
95
96 // Copy/Move constructors/assignment
97
102
104 COREUOBJECT_API void Empty();
105
116
134
150
161
175
193
209
210 // Comparsion operators. An FPackagePath is == another FPackagePath if they are known describe the same path;
211 // the comparison is case insensitive, and if one PackagePath is a not-yet-mounted
212 // PackageName and the other is a not-yet-mounted LocalPath, they are attempted to be mounted and will be equal
213 // if they correspond to the same relative path under the same mount point
214
215 COREUOBJECT_API bool operator==(const FPackagePath& Other) const;
216 COREUOBJECT_API bool operator!=(const FPackagePath& Other) const;
217
222 friend COREUOBJECT_API FArchive& operator<<(FArchive& Ar, FPackagePath& PackagePath);
223
229 COREUOBJECT_API bool IsEmpty() const;
230
236 COREUOBJECT_API bool IsMountedPath() const;
237
245
253
260 COREUOBJECT_API FString GetPackageName() const;
261
269
277
287 COREUOBJECT_API FString GetLocalFullPath() const;
288
299
307
315
328
330 COREUOBJECT_API FString GetDebugName() const;
331
334
337
344
347
353
369
375
381
387
388public:
389 // Internal API used by low-level PackageResourceManager users
390
402
411
424
427
430
437
440
443
446
447private:
448 // Accessors for the StringData stored in this PackagePath; the various strings are packed together
449 // into a single allocation
450 FStringView GetPackageNameRoot() const;
451 FStringView GetFilePathRoot() const;
452 FStringView GetPathData() const;
453 // GetCustomExtension is also an accessor, but unlike the others is publically readable
454 void SetStringData(FStringView PathData, FStringView PackageNameRoot, FStringView FilePathRoot,
456 int32 GetStringDataLen() const;
457
462 bool TryConvertToMounted() const;
463
464 enum class EPackageIdType : uint8
465 {
467 Empty,
472 MountedPath,
477 PackageOnlyPath,
482 LocalOnlyPath,
483 };
484
485#if UE_SUPPORT_FULL_PACKAGEPATH
491 mutable TUniquePtr<TCHAR[]> StringData = nullptr;
492 mutable uint16 PathDataLen = 0;
493 mutable uint16 PackageNameRootLen = 0;
494 mutable uint16 FilePathRootLen = 0;
495 mutable uint16 ExtensionLen = 0;
496 mutable EPackageIdType IdType = EPackageIdType::Empty;
497 mutable EPackageExtension HeaderExtension = EPackageExtension::Unspecified;
498#else
499 FName PackageName;
500 mutable EPackageExtension HeaderExtension = EPackageExtension::Unspecified;
501#endif //UE_SUPPORT_FULL_PACKAGEPATH
502};
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EPackageExtension
Definition PackagePath.h:39
constexpr int EPackageExtensionCount
Definition PackagePath.h:71
COREUOBJECT_API const TCHAR * LexToString(EPackageExtension PackageExtension)
Definition PackagePath.cpp:95
EPackageSegment
Definition PackageSegment.h:13
TStringView< TCHAR > FStringView
Definition StringFwd.h:45
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
Definition Archive.h:1208
Definition NameTypes.h:617
Definition PackagePath.h:89
COREUOBJECT_API bool IsMountedPath() const
Definition PackagePath.cpp:1141
COREUOBJECT_API FString GetPackageNameOrFallback() const
Definition PackagePath.cpp:1198
static COREUOBJECT_API FPackagePath FromPackageNameChecked(FStringView InPackageName)
Definition PackagePath.cpp:215
static COREUOBJECT_API const TCHAR * GetExternalActorsFolderName()
Definition PackagePath.cpp:195
static COREUOBJECT_API EPackageExtension ParseExtension(FStringView Filename, int32 *OutExtensionStart=nullptr)
Definition PackagePath.cpp:129
static COREUOBJECT_API FPackagePath FromPackageNameUnchecked(FName InPackageName)
Definition PackagePath.cpp:1065
COREUOBJECT_API FString GetLocalBaseFilenameWithPath() const
Definition PackagePath.cpp:1175
static COREUOBJECT_API bool TryMatchCase(const FPackagePath &SourcePackagePath, FStringView FilePathToMatch, FPackagePath &OutPackagePath)
Definition PackagePath.cpp:1120
COREUOBJECT_API void AppendLocalFullPath(FStringBuilderBase &Builder) const
COREUOBJECT_API EPackageExtension GetExtension(EPackageSegment PackageSegment, FStringView &OutCustomExtension) const
Definition PackagePath.cpp:271
static COREUOBJECT_API bool TryFromMountedName(FStringView InPackageNameOrHeaderFilePath, FPackagePath &OutPackagePath)
Definition PackagePath.cpp:1030
COREUOBJECT_API void AppendLocalBaseFilenameWithPath(FStringBuilderBase &Builder) const
static COREUOBJECT_API FPackagePath FromLocalPath(FStringView InFilename)
Definition PackagePath.cpp:243
COREUOBJECT_API void AppendPackageName(FStringBuilderBase &Builder) const
Definition PackagePath.cpp:1146
COREUOBJECT_API void SetHeaderExtension(EPackageExtension Extension, FStringView CustomExtension=FStringView()) const
Definition PackagePath.cpp:1203
COREUOBJECT_API FString GetDebugName() const
Definition PackagePath.cpp:345
COREUOBJECT_API bool HasPackageName() const
static COREUOBJECT_API const TCHAR * GetOptionalSegmentExtensionModifier()
Definition PackagePath.cpp:190
COREUOBJECT_API void Empty()
Definition PackagePath.cpp:210
constexpr FPackagePath()=default
static COREUOBJECT_API bool TryFromPackageName(FStringView InPackageName, FPackagePath &OutPackagePath)
Definition PackagePath.cpp:1043
friend COREUOBJECT_API FArchive & operator<<(FArchive &Ar, FPackagePath &PackagePath)
Definition PackagePath.cpp:1130
FPackagePath(FPackagePath &&Other)=default
COREUOBJECT_API FName GetPackageFName() const
Definition PackagePath.cpp:1151
COREUOBJECT_API FStringView GetExtensionString(EPackageSegment PackageSegment) const
Definition PackagePath.cpp:284
COREUOBJECT_API void AppendLocalFullPath(FStringBuilderBase &Builder, EPackageSegment PackageSegment) const
COREUOBJECT_API FStringView GetCustomExtension() const
Definition PackagePath.cpp:1212
FPackagePath & operator=(FPackagePath &&Other)=default
COREUOBJECT_API FString GetLocalFullPath() const
Definition PackagePath.cpp:261
COREUOBJECT_API bool operator==(const FPackagePath &Other) const
Definition PackagePath.cpp:1125
COREUOBJECT_API bool IsEmpty() const
Definition PackagePath.cpp:1136
COREUOBJECT_API TConstArrayView< EPackageExtension > GetPossibleExtensions(EPackageSegment PackageSegment) const
Definition PackagePath.cpp:325
COREUOBJECT_API FString GetDebugNameWithExtension() const
Definition PackagePath.cpp:360
COREUOBJECT_API FString GetPackageName() const
Definition PackagePath.cpp:254
static COREUOBJECT_API const TCHAR * GetExternalObjectsFolderName()
Definition PackagePath.cpp:200
COREUOBJECT_API EPackageExtension GetHeaderExtension() const
Definition PackagePath.cpp:266
COREUOBJECT_API FText GetDebugNameText() const
Definition PackagePath.cpp:350
static COREUOBJECT_API FPackagePath FromMountedComponents(FStringView PackageNameRoot, FStringView FilePathRoot, FStringView RelPath, EPackageExtension InExtension, FStringView InCustomExtension=FStringView())
Definition PackagePath.cpp:1093
COREUOBJECT_API bool HasLocalPath() const
COREUOBJECT_API FPackagePath & operator=(const FPackagePath &Other)
Definition PackagePath.cpp:1023
COREUOBJECT_API bool operator!=(const FPackagePath &Other) const
Definition PackagePath.cpp:249
Definition Text.h:385
Definition UniquePtr.h:107