UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Archive.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreFwd.h"
6#include "CoreTypes.h"
9#include "Math/MathFwd.h"
11#include "Misc/Build.h"
14#include "Misc/VarArgs.h"
17#include "Templates/EnableIf.h"
20#include "Templates/IsSigned.h"
25
27class FBulkData;
29class FLinker;
30class FName;
31class FProperty;
32class FString;
33class FText;
34class ITargetPlatform;
35class UObject;
36namespace Verse { struct VCell; }
37namespace UE::Serialization{ class FEditorBulkData; }
40struct FCompressedChunk;
41template <typename TEnum> class TEnumAsByte;
42template <typename FuncType> class TFunction;
43template <typename T> struct TObjectPtr;
44
45typedef TFunction<bool (double RemainingTime)> FExternalReadCallback;
46class FField;
49
50enum class EFileRegionType : uint8;
52
53// Temporary while we shake out the EDL at boot
54#define USE_EVENT_DRIVEN_ASYNC_LOAD_AT_BOOT_TIME (1)
55
56#if USE_EVENT_DRIVEN_ASYNC_LOAD_AT_BOOT_TIME
57 #define EVENT_DRIVEN_ASYNC_LOAD_ACTIVE_AT_RUNTIME (1)
58#else
59 #define EVENT_DRIVEN_ASYNC_LOAD_ACTIVE_AT_RUNTIME (!GIsInitialLoad)
60#endif
61
62#define DEVIRTUALIZE_FLinkerLoad_Serialize (!WITH_EDITORONLY_DATA)
63
64// Helper macro to make serializing a bitpacked boolean in an archive easier.
65// NOTE: The condition is there to avoid overwriting a value that is the same, especially important to make saving an immutable operation and avoid dirtying cachelines for nothing.
66// This will also make TSAN happy when multiple threads are hitting the same bitfield during concurrent saves.
67#define FArchive_Serialize_BitfieldBool(ARCHIVE, BITFIELD_BOOL) { bool TEMP_BITFIELD_BOOL = BITFIELD_BOOL; ARCHIVE << TEMP_BITFIELD_BOOL; if (BITFIELD_BOOL != TEMP_BITFIELD_BOOL) { BITFIELD_BOOL = TEMP_BITFIELD_BOOL; } }
68
70{
71private:
72 // Only FArchive is allowed to instantiate this, by inheritance
73 friend class FArchive;
74
76
79
86
87 CORE_API virtual ~FArchiveState() = 0;
88
89protected:
92
93public:
98 {
99 return *this;
100 }
101
106
110 CORE_API void SetError();
111
115 CORE_API void ClearError();
116
121
125 virtual void CountBytes(SIZE_T InNum, SIZE_T InMax) { }
126
133 CORE_API virtual FString GetArchiveName() const;
134
141 {
142 return nullptr;
143 }
144
149 virtual int64 Tell()
150 {
151 return INDEX_NONE;
152 }
153
155 virtual int64 TotalSize()
156 {
157 return INDEX_NONE;
158 }
159
161 virtual bool AtEnd()
162 {
163 int64 Pos = Tell();
164
165 return ((Pos != INDEX_NONE) && (Pos >= TotalSize()));
166 }
167
169 inline bool IsByteSwapping()
170 {
171 #if PLATFORM_LITTLE_ENDIAN
173 #else
174 bool SwapBytes = this->IsPersistent();
175 #endif
176 return SwapBytes;
177 }
178
181 {
182 ArContainsCode = true;
183 }
184
187 {
188 ArContainsMap = true;
189 }
190
193
199 {
200 return nullptr;
201 }
202
205 {
206 return ArUEVer;
207 }
208
214
220
222 CORE_API virtual uint32 EngineNetVer() const;
223
225 CORE_API virtual uint32 GameNetVer() const;
226
233 CORE_API int32 CustomVer(const struct FGuid& Key) const;
234
237 {
238 return ArIsLoading;
239 }
240
246
249 {
250 return ArIsSaving;
251 }
252
254 inline bool IsTransacting() const
255 {
256 if (FPlatformProperties::HasEditorOnlyData())
257 {
258 return ArIsTransacting;
259 }
260 else
261 {
262 return false;
263 }
264 }
265
274
280
289
292 {
293 return ArForceUnicode;
294 }
295
301 {
302 return ArIsPersistent;
303 }
304
311 {
312 ArShouldSkipCompilingAssets = Enabled;
313 }
314
319 {
320 return ArShouldSkipCompilingAssets;
321 }
322
329
332 {
333 return ArShouldSkipUpdateCustomVersion;
334 }
335
341
344 {
345 return nullptr;
346 }
347
349#if UE_WITH_REMOTE_OBJECT_HANDLE
351 {
353 }
354#else
356 {
357 return false;
358 }
359#endif // UE_WITH_REMOTE_OBJECT_HANDLE
360
363 {
364 return ArIsError;
365 }
366
368 {
369 return ArIsError;
370 }
371
374 {
375 return ArIsCriticalError;
376 }
377
380 {
381 return ArContainsCode;
382 }
383
386 {
387 return ArContainsMap;
388 }
389
397
400 {
401 return ArForceByteSwapping;
402 }
403
406 {
407 return (ArSerializingDefaults > 0) ? true : false;
408 }
409
415
418 {
419 return !ArNoDelta;
420 }
421
427
430 {
431 return ArIgnoreOuterRef;
432 }
433
439
442 {
443 return ArIgnoreClassRef;
444 }
445
451
460
466
469 {
470 return ArIsCountingMemory;
471 }
472
475 {
476 return ArPortFlags;
477 }
478
481 {
482 return ((ArPortFlags & Flags) != 0);
483 }
484
487 {
488 return ((ArPortFlags & Flags) == Flags);
489 }
490
493 {
494#if WITH_EDITOR
496#else
497 return 0;
498#endif
499 }
500
503 {
505 }
506
512
520
527
529 CORE_API virtual void ResetCustomVersions();
530
538 CORE_API void SetCustomVersion(const struct FGuid& Key, int32 Version, FName FriendlyName);
539
547 {
549 }
550
560
567 {
568#if WITH_EDITOR
570#endif
571 }
572
579 {
581 }
582
592
601 {
603 }
604
616
623 bool IsSaveGame() const
624 {
625 return ArIsSaveGame;
626 }
627
632 {
633 return ArIsNetArchive;
634 }
635
645
653 {
654 checkf(!(InSavePackageData == nullptr && SavePackageData), TEXT("Can't turn off cooking once you turn it on!"));
655
657 {
658 check(!IsLoading() && !IsTransacting() && IsSaving());
660 }
661
662 }
663
668
669 UE_DEPRECATED(5.5, "Use SetSavePackageData.")
671 {
672 // Backwards compatibility for this function is not supported because of the low amount of public usage and the
673 // cost of supporting the backwards compatability (extra memory on FArchiveSavePackageData). Change your code
674 // to use SetSavePackageData, or contact Epic for assistance in adding the backwards compatibility.
675 check(false);
676 }
677
678 UE_DEPRECATED(5.5, "Use GetCookContext or CookingTarget or GetSavePackageData.")
680 {
681 // Backwards compatibility for this function is not supported because of the low amount of public usage and the
682 // cost of supporting the backwards compatability (extra memory on FArchiveSavePackageData). Change your code
683 // to use GetCookContext or CookingTarget or GetSavePackageData, or contact Epic for assistance.
684 check(false);
685 return nullptr;
686 }
687
692
703
712
719 virtual bool UseToResolveEnumerators() const
720 {
721 return false;
722 }
723
727 virtual bool ShouldSkipProperty(const FProperty* InProperty) const
728 {
729 return false;
730 }
731
742
752
758
767
772
773#if WITH_EDITORONLY_DATA
775 CORE_API virtual bool IsEditorOnlyPropertyOnTheStack() const;
776#endif
777
779 UE_DEPRECATED(5.5, "SetSerializeContext is not supported. Remove calls to it.")
781
783 UE_DEPRECATED(5.5, "GetSerializeContext is not supported. Use FUObjectThreadContext::Get().GetSerializeContext().")
784 virtual FUObjectSerializeContext* GetSerializeContext() { return nullptr; }
785
786#if USE_STABLE_LOCALIZATION_KEYS
791 CORE_API virtual void SetLocalizationNamespace(const FString& InLocalizationNamespace);
792
797 CORE_API virtual FString GetLocalizationNamespace() const;
798#endif // USE_STABLE_LOCALIZATION_KEYS
799
801 CORE_API virtual void Reset();
802
803public:
804 /* These are used for fastpath inline serializers */
821#if DEVIRTUALIZE_FLinkerLoad_Serialize
822 //@todoio FArchive is really a horrible class and the way it is proxied by FLinkerLoad is double terrible. It makes the fast path really hacky and slower than it would need to be.
825#endif
826
827// These will be private in FArchive
828protected:
831
834
837
840
843
846
849
852
855
858
859private:
861 uint8 ArIsError : 1;
862
864 uint8 ArIsCriticalError : 1;
865
867 uint8 ArShouldSkipCompilingAssets : 1;
868
872 uint8 ArShouldSkipUpdateCustomVersion : 1;
873
874#if UE_WITH_REMOTE_OBJECT_HANDLE
877#endif
878
879public:
882
885
887 UE_DEPRECATED(5.6, "Public access to ArRequiresLocalizationGather has been deprecated - please use Ar.RequiresLocalizationGather() and Ar.ThisRequiresLocalizationGather() for getting and setting respectively.")
889
892
895
898
901
904
907
910
913
916
919
922
925
928
931
934
937
940
943
946
949
952
955
962
968
975
982
989
996
999
1007
1014
1022
1030
1038
1043
1048
1049// These will be private in FArchive
1050protected:
1053
1056
1059
1066
1067public:
1070
1071#if WITH_EDITOR
1074#endif
1075
1076// These will be private in FArchive
1077protected:
1083
1086
1089
1090#if USE_STABLE_LOCALIZATION_KEYS
1096 FString* LocalizationNamespacePtr;
1097
1099 CORE_API FString GetBaseLocalizationNamespace() const;
1100
1103#endif // USE_STABLE_LOCALIZATION_KEYS
1104
1110
1111private:
1113 FArchiveState* NextProxy = nullptr;
1114
1115 template<typename T> void ForEachState(T Func);
1116};
1117
1123template<class T> class TCheckedObjPtr
1124{
1125 friend class FArchive;
1126
1127public:
1129 : Object(nullptr)
1130 , bError(false)
1131 {
1132 }
1133
1134 TCheckedObjPtr(T* InObject)
1135 : Object(InObject)
1136 , bError(false)
1137 {
1138 }
1139
1145 inline TCheckedObjPtr& operator = (T* InObject)
1146 {
1147 Object = InObject;
1148
1149 return *this;
1150 }
1151
1158 {
1159 return Object;
1160 }
1161
1168 {
1169 return Object;
1170 }
1171
1178 {
1179 return Object != nullptr;
1180 }
1181
1190 {
1191 return bError;
1192 }
1193
1194private:
1196 T* Object;
1197
1199 bool bError;
1200};
1201
1202
1208{
1209public:
1210 FArchive() = default;
1211 FArchive(const FArchive&) = default;
1214
1215protected:
1219
1220public:
1221
1231 {
1232 return *this;
1233 }
1234
1242
1252 {
1253 return *this;
1254 }
1255
1265 {
1266 return *this;
1267 }
1268
1269#if WITH_VERSE_VM || defined(__INTELLISENSE__)
1278 virtual FArchive& operator<<(Verse::VCell*& Value)
1279 {
1280 return *this;
1281 }
1282#endif
1283
1291 template<class T> inline FArchive& operator<<(TCheckedObjPtr<T>& Value)
1292 {
1293 Value.bError = false;
1294
1295 if (IsSaving())
1296 {
1297 UObject* SerializeObj = nullptr;
1298
1299 if (Value.IsValid())
1300 {
1301 if (Value.Get()->IsA(T::StaticClass()))
1302 {
1303 SerializeObj = Value.Get();
1304 }
1305 else
1306 {
1307 Value.bError = true;
1308 }
1309 }
1310
1311 *this << SerializeObj;
1312 }
1313 else
1314 {
1315 *this << Value.Get();
1316
1317 if (IsLoading() && Value.IsValid() && !Value.Get()->IsA(T::StaticClass()))
1318 {
1319 Value.bError = true;
1320 Value = nullptr;
1321 }
1322 }
1323
1324 return *this;
1325 }
1326
1336
1345 CORE_API virtual FArchive& operator<<(struct FObjectPtr& Value);
1346
1356
1364
1374
1380
1388 {
1389#if DEVIRTUALIZE_FLinkerLoad_Serialize
1390 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1391#endif
1392 {
1393 Ar.Serialize(&Value, 1);
1394 }
1395 return Ar;
1396 }
1397
1405 {
1406#if DEVIRTUALIZE_FLinkerLoad_Serialize
1407 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1408#endif
1409 {
1410 Ar.ByteOrderSerialize(&Value, sizeof(Value));
1411 }
1412 return Ar;
1413 }
1414
1422 {
1423#if DEVIRTUALIZE_FLinkerLoad_Serialize
1424 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1425#endif
1426 {
1427 Ar.ByteOrderSerialize(&Value, sizeof(Value));
1428 }
1429 return Ar;
1430 }
1431
1439 {
1440#if DEVIRTUALIZE_FLinkerLoad_Serialize
1441 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1442#endif
1443 {
1444 Ar.Serialize(&Value, 1);
1445 }
1446 return Ar;
1447 }
1448
1455 inline friend FArchive& operator<<(FArchive& Ar, int8& Value)
1456 {
1457#if DEVIRTUALIZE_FLinkerLoad_Serialize
1458 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1459#endif
1460 {
1461 Ar.Serialize(&Value, 1);
1462 }
1463 return Ar;
1464 }
1465
1473 {
1474#if DEVIRTUALIZE_FLinkerLoad_Serialize
1475 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1476#endif
1477 {
1479 }
1480 return Ar;
1481 }
1482
1490 {
1491#if DEVIRTUALIZE_FLinkerLoad_Serialize
1492 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1493#endif
1494 {
1495 Ar.ByteOrderSerialize(reinterpret_cast<uint16&>(Value));
1496 }
1497 return Ar;
1498 }
1499
1507 {
1508#if DEVIRTUALIZE_FLinkerLoad_Serialize
1509 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1510#endif
1511 {
1513 }
1514 return Ar;
1515 }
1516
1523#if WITH_EDITOR
1524protected:
1525 CORE_API virtual void SerializeBool( bool& D );
1526public:
1527 inline friend FArchive& operator<<(FArchive& Ar, bool& D)
1528 {
1529 Ar.SerializeBool(D);
1530 return Ar;
1531 }
1532#else
1533 inline friend FArchive& operator<<( FArchive& Ar, bool& D )
1534 {
1535 // Serialize bool as if it were UBOOL (legacy, 32 bit int).
1536#if DEVIRTUALIZE_FLinkerLoad_Serialize
1538 if (Src + sizeof(uint32) <= Ar.ActiveFPLB->EndFastPathLoadBuffer)
1539 {
1540 D = !!FPlatformMemory::ReadUnaligned<uint32>(Src);
1542 }
1543 else
1544#endif
1545 {
1547
1548 if (!Ar.IsLoading())
1549 {
1550 // Only read from the input if we aren't loading its value.
1551 // This avoids triggering UBSAN by unnecessarily coercing uninitialized memory to a bool.
1552 OldUBoolValue = D ? 1 : 0;
1553 }
1554
1556
1557 if (OldUBoolValue > 1)
1558 {
1559 Ar.SetError();
1560 }
1561
1562 if (Ar.IsLoading())
1563 {
1564 // Only write to our input if we are loading to make sure we don't
1565 // write to 'read-only' memory (e.g. FMemoryWriter) as this can cause TSAN
1566 // validation races
1567 D = !!OldUBoolValue;
1568 }
1569 }
1570 return Ar;
1571 }
1572#endif
1573
1581 {
1582#if DEVIRTUALIZE_FLinkerLoad_Serialize
1583 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1584#endif
1585 {
1586 Ar.ByteOrderSerialize(reinterpret_cast<uint32&>(Value));
1587 }
1588 return Ar;
1589 }
1590
1591#if PLATFORM_COMPILER_DISTINGUISHES_INT_AND_LONG
1598 inline friend FArchive& operator<<(FArchive& Ar, long& Value)
1599 {
1600#if DEVIRTUALIZE_FLinkerLoad_Serialize
1601 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1602#endif
1603 {
1604 Ar.ByteOrderSerialize(reinterpret_cast<unsigned long&>(Value));
1605 }
1606 return Ar;
1607 }
1608#endif
1609
1616 inline friend FArchive& operator<<( FArchive& Ar, float& Value)
1617 {
1618#if DEVIRTUALIZE_FLinkerLoad_Serialize
1619 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1620#endif
1621 {
1622 static_assert(sizeof(float) == sizeof(uint32), "Expected float to be 4 bytes to swap as uint32");
1623 Ar.ByteOrderSerialize(reinterpret_cast<uint32&>(Value));
1624 }
1625 return Ar;
1626 }
1627
1634 inline friend FArchive& operator<<(FArchive& Ar, double& Value)
1635 {
1636#if DEVIRTUALIZE_FLinkerLoad_Serialize
1637 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1638#endif
1639 {
1640 static_assert(sizeof(double) == sizeof(uint64), "Expected double to be 8 bytes to swap as uint64");
1641 Ar.ByteOrderSerialize(reinterpret_cast<uint64&>(Value));
1642 }
1643 return Ar;
1644 }
1645
1653 {
1654#if DEVIRTUALIZE_FLinkerLoad_Serialize
1655 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1656#endif
1657 {
1659 }
1660 return Ar;
1661 }
1662
1669 /*inline*/friend FArchive& operator<<(FArchive& Ar, int64& Value)
1670 {
1671#if DEVIRTUALIZE_FLinkerLoad_Serialize
1672 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
1673#endif
1674 {
1675 Ar.ByteOrderSerialize(reinterpret_cast<uint64&>(Value));
1676 }
1677 return Ar;
1678 }
1679
1687
1688public:
1689 virtual void Serialize(void* V, int64 Length)
1690 {
1691#if defined(__clang_analyzer__)
1692 // Suppress core.uninitialized.Assign static analysis warning
1693 // Base class FArchive::Serialize() does not modify the value being serialized, so the analysis
1694 // assumes any data being serialized to could be uninitialized, but practically speaking any
1695 // data being serialized will use a derived class that always modifies the value.
1696 memset(V, 0, Length);
1697#endif
1698 }
1699
1700#define SerializeBitfield(Ar, BitField) \
1701 { \
1702 bool PREPROCESSOR_JOIN(TempBitfield, __LINE__) = BitField; \
1703 Ar.SerializeBits(&PREPROCESSOR_JOIN(TempBitfield, __LINE__), 1); \
1704 BitField = PREPROCESSOR_JOIN(TempBitfield, __LINE__); \
1705 }
1706
1707 virtual void SerializeBits(void* V, int64 LengthBits)
1708 {
1709 Serialize(V, (LengthBits + 7) / 8);
1710
1711 if (IsLoading() && (LengthBits % 8) != 0)
1712 {
1713 ((uint8*)V)[LengthBits / 8] &= ((1 << (LengthBits & 7)) - 1);
1714 }
1715 }
1716
1718 {
1720 }
1721
1723 CORE_API virtual void SerializeIntPacked(uint32& Value);
1725
1727 virtual void Preload(UObject* Object) { }
1728
1731 {
1732 return ImplicitConv<FArchiveState&>(*this);
1733 }
1734
1736 {
1738 }
1739
1748 using FArchiveState::Tell;
1751
1753 virtual void Seek(int64 InPos) { }
1754
1763
1772
1782 {
1783 return false;
1784 }
1785
1794 virtual bool IsProxyOf(FArchive* InOther) const
1795 {
1796 return InOther == this;
1797 }
1798
1815 {
1816 return true;
1817 }
1818
1822 virtual void FlushCache() { }
1823
1835 {
1836 return false;
1837 }
1838
1842 virtual void Flush() { }
1843
1847 virtual bool Close()
1848 {
1849 return !IsError();
1850 }
1851
1866
1886 int64 * OutPartialReadLength=nullptr);
1887
1897
1898
1900
1902 CORE_API void ByteSwap(void* V, int32 Length);
1903
1906 {
1907 if (!IsByteSwapping()) // Most likely case (hot path)
1908 {
1909 Serialize(V, Length);
1910 return *this;
1911 }
1912 return SerializeByteOrderSwapped(V, Length); // Slowest and unlikely path (should not be inlined)
1913 }
1914
1918
1924
1930
1934 virtual void MarkScriptSerializationStart(const UObject* Obj) { }
1935
1939 virtual void MarkScriptSerializationEnd(const UObject* Obj) { }
1940
1944 virtual void MarkSearchableName(const TObjectPtr<const UObject>& TypeObject, const FName& ValueName) const { }
1945
1947
1948private:
1949 CORE_API void VARARGS LogfImpl(const TCHAR* Fmt, ...);
1950
1951public:
1952 // Logf implementation for convenience.
1953 template <typename FmtType, typename... Types>
1954 void Logf(const FmtType& Fmt, Types... Args)
1955 {
1956 static_assert(TIsArrayOrRefOfTypeByPredicate<FmtType, TIsCharEncodingCompatibleWithTCHAR>::Value, "Formatting string must be a TCHAR array.");
1957 static_assert((TIsValidVariadicFunctionArg<Types>::Value && ...), "Invalid argument(s) passed to FArchive::Logf");
1958
1959 LogfImpl(Fmt, Args...);
1960 }
1961
1967
1974 CORE_API virtual void UsingCustomVersion(const struct FGuid& Guid);
1975
1977
1985 {
1986 return this;
1987 }
1988
2037 UE_DEPRECATED(5.5, "Use SetSavePackageData.")
2039 {
2040 // Backwards compatibility for this function is not supported because of the low amount of public usage and the
2041 // cost of supporting the backwards compatability (extra memory on FArchiveSavePackageData). Change your code
2042 // to use SetSavePackageData, or contact Epic for assistance.
2043 check(false);
2044 }
2047 UE_DEPRECATED(5.5, "Use GetCookContext or CookingTarget or GetSavePackageData")
2049 {
2050 // Backwards compatibility for this function is not supported because of the low amount of public usage and the
2051 // cost of supporting the backwards compatability (extra memory on FArchiveSavePackageData). Change your code
2052 // to use GetCookContext or CookingTarget or GetSavePackageData, or contact Epic for assistance.
2053 check(false);
2054 return nullptr;
2055 }
2063
2071
2079
2080#if WITH_EDITORONLY_DATA
2081 using FArchiveState::IsEditorOnlyPropertyOnTheStack;
2082#endif
2083
2085 using FArchiveState::GetSerializeContext;
2086
2092 virtual bool AttachExternalReadDependency(FExternalReadCallback& ReadCallback) { return false; }
2093
2094
2095#if USE_STABLE_LOCALIZATION_KEYS
2096 using FArchiveState::SetLocalizationNamespace;
2097 using FArchiveState::GetLocalizationNamespace;
2098#endif // USE_STABLE_LOCALIZATION_KEYS
2099
2102
2103public:
2104#if DEVIRTUALIZE_FLinkerLoad_Serialize
2105 template<SIZE_T Size>
2106 inline bool FastPathLoad(void* InDest)
2107 {
2109 if (Src + Size <= ActiveFPLB->EndFastPathLoadBuffer)
2110 {
2111 if constexpr (Size == 2)
2112 {
2113 uint16 * RESTRICT Dest = (uint16 * RESTRICT)InDest;
2114 *Dest = FPlatformMemory::ReadUnaligned<uint16>(Src);
2115 }
2116 else if constexpr (Size == 4)
2117 {
2118 uint32 * RESTRICT Dest = (uint32 * RESTRICT)InDest;
2119 *Dest = FPlatformMemory::ReadUnaligned<uint32>(Src);
2120 }
2121 else if constexpr (Size == 8)
2122 {
2123 uint64 * RESTRICT Dest = (uint64 * RESTRICT)InDest;
2124 *Dest = FPlatformMemory::ReadUnaligned<uint64>(Src);
2125 }
2126 else
2127 {
2128 uint8 * RESTRICT Dest = (uint8 * RESTRICT)InDest;
2129 for (SIZE_T Index = 0; Index < Size; Index++)
2130 {
2131 Dest[Index] = Src[Index];
2132 }
2133 }
2135 return true;
2136 }
2137 return false;
2138 }
2139
2140 //@todoio FArchive is really a horrible class and the way it is proxied by FLinkerLoad is double terrible. It makes the fast path really hacky and slower than it would need to be.
2143
2144#else
2145 template<SIZE_T Size>
2147 {
2148 return false;
2149 }
2150#endif
2151
2152private:
2153 // Used internally only to control the amount of generated code/type under control.
2154 template<typename T>
2156 {
2157 static_assert(!TIsSigned<T>::Value, "To reduce the number of template instances, cast 'Value' to a uint16&, uint32& or uint64& prior to the call or use ByteOrderSerialize(void*, int32).");
2158
2159 if (!IsByteSwapping()) // Most likely case (hot path)
2160 {
2161 Serialize(&Value, sizeof(T));
2162 return *this;
2163 }
2164 return SerializeByteOrderSwapped(Value); // Slowest and unlikely path (but fastest than SerializeByteOrderSwapped(void*, int32)).
2165 }
2166
2167 // Not inlined to keep ByteOrderSerialize(), small and fast.
2168 CORE_API FArchive& SerializeByteOrderSwapped(void* V, int32 Length);
2169 CORE_API FArchive& SerializeByteOrderSwapped(uint16& Value);
2170 CORE_API FArchive& SerializeByteOrderSwapped(uint32& Value);
2171 CORE_API FArchive& SerializeByteOrderSwapped(uint64& Value);
2172#if PLATFORM_COMPILER_DISTINGUISHES_INT_AND_LONG
2173 FArchive& SerializeByteOrderSwapped(unsigned long& Value)
2174 {
2175 static_assert(sizeof(unsigned long) == sizeof(uint64), "Wrong unsigned long size assuption.");
2176 return SerializeByteOrderSwapped(reinterpret_cast<uint64&>(Value));
2177 }
2178#endif
2179
2180private:
2190
2191public:
2192 using FArchiveState::ArIsError;
2193 using FArchiveState::ArIsCriticalError;
2197 using FArchiveState::ArRequiresLocalizationGather;
2221
2222public:
2243
2244
2245private:
2250protected:
2252public:
2255
2257 {
2258 private:
2259#if WITH_EDITOR
2261 FArchive& Ar;
2262#endif
2263 public:
2270#if WITH_EDITOR
2272 : Ar(InAr)
2273 {
2274
2276 if (Remove)
2277 {
2279 }
2280 else
2281 {
2283 }
2284
2285 }
2287 {
2288
2290 }
2291#else
2296#endif
2297 };
2298
2299#if WITH_EDITOR
2301 using FArchiveState::ArDebugSerializationFlags;
2302
2304 CORE_API virtual void PushDebugDataString(const FName& DebugData);
2305 virtual void PopDebugDataString() { }
2306
2307 class FScopeAddDebugData
2308 {
2309 private:
2310 FArchive& Ar;
2311 public:
2312 CORE_API FScopeAddDebugData(FArchive& InAr, const FName& DebugData);
2313
2315 {
2316 Ar.PopDebugDataString();
2317 }
2318 };
2319#endif
2320
2323 {
2324 public:
2326 : Ar(InAr)
2327 , SavedPos(InAr.Tell())
2328 {
2329 Ar.Seek(InPos);
2330 }
2331
2333 {
2334 Ar.Seek(SavedPos);
2335 }
2336
2337 FScopeSeekTo(const FScopeSeekTo&) = delete;
2339
2340 private:
2341 FArchive& Ar;
2342 int64 SavedPos;
2343 };
2344
2347 virtual void PopFileRegionType() { }
2348
2349private:
2352
2355
2356#if USE_STABLE_LOCALIZATION_KEYS
2362 using FArchiveState::LocalizationNamespacePtr;
2363#endif // USE_STABLE_LOCALIZATION_KEYS
2364
2370};
2371
2372
2373
2374
2378template<class T> T Arctor(FArchive& Ar)
2379{
2380 T Tmp;
2381 Ar << Tmp;
2382
2383 return Tmp;
2384}
2385
2392template<class TEnum>
2394{
2395#if DEVIRTUALIZE_FLinkerLoad_Serialize
2396 if (!Ar.FastPathLoad<sizeof(Value)>(&Value))
2397#endif
2398 {
2399 Ar.Serialize(&Value, 1);
2400 }
2401 return Ar;
2402}
2403
2410template <
2411 typename EnumType,
2412 std::enable_if_t<TIsEnumClass<EnumType>::Value, int> = 0
2413>
2415{
2416 return Ar << (__underlying_type(EnumType)&)Value;
2417}
2418
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define VARARGS
Definition AndroidPlatform.h:134
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define WITH_TEXT_ARCHIVE_SUPPORT
Definition Build.h:170
ECompressionFlags
Definition CompressionFlags.h:13
@ COMPRESS_NoFlags
Definition CompressionFlags.h:28
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::UTF32CHAR UTF32CHAR
A 32-bit character containing a UTF32 (Unicode, 32-bit, fixed-width) code unit.
Definition Platform.h:1143
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::WIDECHAR WIDECHAR
A wide character. Normally a signed type.
Definition Platform.h:1133
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 RESTRICT
Definition Platform.h:706
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
T Arctor(FArchive &Ar)
Definition Archive.h:2378
FArchive & operator<<(FArchive &Ar, TEnumAsByte< TEnum > &Value)
Definition Archive.h:2393
TFunction< bool(double RemainingTime)> FExternalReadCallback
Definition Archive.h:45
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
EFileRegionType
Definition FileRegions.h:15
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
const bool
Definition NetworkReplayStreaming.h:178
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:2323
FScopeSeekTo(const FScopeSeekTo &)=delete
FScopeSeekTo & operator=(const FScopeSeekTo &)=delete
~FScopeSeekTo()
Definition Archive.h:2332
FScopeSeekTo(FArchive &InAr, int64 InPos)
Definition Archive.h:2325
FScopeSetDebugSerializationFlags(FArchive &InAr, uint32 NewFlags, bool Remove=false)
Definition Archive.h:2292
~FScopeSetDebugSerializationFlags()
Definition Archive.h:2294
Definition Archive.h:1208
void StopSerializingDefaults()
Definition Archive.h:1926
virtual void SetDebugSerializationFlags(uint32 InCustomFlags)
Definition Archive.h:566
virtual void SerializeInt(uint32 &Value, uint32 Max)
Definition Archive.h:1717
friend FArchive & operator<<(FArchive &Ar, double &Value)
Definition Archive.h:1634
virtual bool IsProxyOf(FArchive *InOther) const
Definition Archive.h:1794
virtual FArchive & operator<<(FField *&Value)
Definition Archive.h:1264
friend FArchive & operator<<(FArchive &Ar, uint64 &Value)
Definition Archive.h:1652
virtual void Serialize(void *V, int64 Length)
Definition Archive.h:1689
CORE_API void SerializeCompressed(void *V, int64 Length, FName CompressionFormatCannotChange, ECompressionFlags Flags=COMPRESS_NoFlags, bool bTreatBufferAsFileReader=false)
Definition Archive.cpp:727
FArchiveCookData * GetCookData()
Definition Archive.h:2048
virtual void AttachBulkData(UObject *Owner, FBulkData *BulkData)
Definition Archive.h:1761
FArchive & operator=(const FArchive &ArchiveToCopy)=default
friend FArchive & operator<<(FArchive &Ar, uint32 &Value)
Definition Archive.h:1506
virtual void MarkScriptSerializationEnd(const UObject *Obj)
Definition Archive.h:1939
friend FArchive & operator<<(FArchive &Ar, uint8 &Value)
Definition Archive.h:1438
friend FArchive & operator<<(FArchive &Ar, int32 &Value)
Definition Archive.h:1580
bool FastPathLoad(void *InDest)
Definition Archive.h:2106
void SetCookData(FArchiveCookData *InCookData)
Definition Archive.h:2038
virtual CORE_API void SerializeIntPacked64(uint64 &Value)
Definition Archive.cpp:1383
friend FArchive & operator<<(FArchive &Ar, int16 &Value)
Definition Archive.h:1489
const FArchiveState & GetArchiveState() const
Definition Archive.h:1735
friend FArchive & operator<<(FArchive &Ar, WIDECHAR &Value)
Definition Archive.h:1404
virtual CORE_API void SerializeIntPacked(uint32 &Value)
Definition Archive.cpp:1328
virtual CORE_API void PushSerializedProperty(class FProperty *InProperty, const bool bIsEditorOnlyProperty)
Definition Archive.cpp:384
bool IsByteSwapping()
Definition Archive.h:169
friend FArchive & operator<<(FArchive &Ar, int64 &Value)
Definition Archive.h:1669
FArchiveState & GetArchiveState()
Definition Archive.h:1730
void Logf(const FmtType &Fmt, Types... Args)
Definition Archive.h:1954
FArchive(const FArchive &)=default
friend FArchive & operator<<(FArchive &Ar, float &Value)
Definition Archive.h:1616
virtual void ForceBlueprintFinalization()
Definition Archive.h:1379
virtual void MarkSearchableName(const TObjectPtr< const UObject > &TypeObject, const FName &ValueName) const
Definition Archive.h:1944
uint32 GetDebugSerializationFlags() const
Definition Archive.h:492
virtual bool SerializeBulkData(FBulkData &BulkData, const FBulkDataSerializationParams &Params)
Definition Archive.h:1781
friend FArchive & operator<<(FArchive &Ar, UTF32CHAR &Value)
Definition Archive.h:1421
friend FArchive & operator<<(FArchive &Ar, ANSICHAR &Value)
Definition Archive.h:1387
virtual void MarkScriptSerializationStart(const UObject *Obj)
Definition Archive.h:1934
CORE_API void ByteSwap(void *V, int32 Length)
Definition Archive.cpp:1285
virtual CORE_API void PopSerializedProperty(class FProperty *InProperty, const bool bIsEditorOnlyProperty)
Definition Archive.cpp:400
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
virtual void FlushCache()
Definition Archive.h:1822
virtual int64 Tell()
Definition Archive.h:149
friend FArchive & operator<<(FArchive &Ar, uint16 &Value)
Definition Archive.h:1472
CORE_API void SetError()
Definition Archive.cpp:314
friend CORE_API FArchive & operator<<(FArchive &Ar, FString &Value)
virtual bool SetCompressionMap(TArray< FCompressedChunk > *CompressedChunks, ECompressionFlags CompressionFlags)
Definition Archive.h:1834
virtual void PushFileRegionType(EFileRegionType Type)
Definition Archive.h:2346
int32 ArSerializingDefaults
Definition Archive.h:948
FArchive & operator<<(TCheckedObjPtr< T > &Value)
Definition Archive.h:1291
virtual bool Precache(int64 PrecacheOffset, int64 PrecacheSize)
Definition Archive.h:1814
virtual bool AttachExternalReadDependency(FExternalReadCallback &ReadCallback)
Definition Archive.h:2092
virtual bool Close()
Definition Archive.h:1847
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
CORE_API void SerializeCompressedNew(void *V, int64 Length, FName CompressionFormatToEncode, FName CompressionFormatToDecodeOldV1Files, ECompressionFlags Flags=COMPRESS_NoFlags, bool bTreatBufferAsFileReader=false, int64 *OutPartialReadLength=nullptr)
Definition Archive.cpp:740
virtual FArchive & operator<<(UObject *&Value)
Definition Archive.h:1251
virtual void SerializeBits(void *V, int64 LengthBits)
Definition Archive.h:1707
virtual void AttachBulkData(UE::Serialization::FEditorBulkData *BulkData)
Definition Archive.h:1762
friend FArchive & operator<<(FArchive &Ar, int8 &Value)
Definition Archive.h:1455
virtual FArchive & operator<<(FName &Value)
Definition Archive.h:1230
FArchive()=default
virtual void DetachBulkData(UE::Serialization::FEditorBulkData *BulkData, bool bEnsureBulkDataIsLoaded)
Definition Archive.h:1771
virtual void Seek(int64 InPos)
Definition Archive.h:1753
virtual void Preload(UObject *Object)
Definition Archive.h:1727
FFastPathLoadBuffer * ActiveFPLB
Definition Archive.h:823
UE_FORCEINLINE_HINT bool IsError() const
Definition Archive.h:362
friend FArchive & operator<<(FArchive &Ar, bool &D)
Definition Archive.h:1533
void StartSerializingDefaults()
Definition Archive.h:1920
virtual void Flush()
Definition Archive.h:1842
virtual FArchive * GetCacheableArchive()
Definition Archive.h:1984
virtual CORE_API ~FArchive()
FArchive & ByteOrderSerialize(void *V, int32 Length)
Definition Archive.h:1905
virtual void PopFileRegionType()
Definition Archive.h:2347
virtual void DetachBulkData(FBulkData *BulkData, bool bEnsureBulkDataIsLoaded)
Definition Archive.h:1770
Definition BulkData.h:470
Definition CustomVersion.h:111
Definition EngineVersionBase.h:29
Definition Field.h:556
Definition Linker.h:398
Definition NameTypes.h:617
Definition ObjectSaveContext.h:343
Definition UnrealType.h:174
Definition Text.h:385
Definition Array.h:670
Definition Archive.h:1124
UE_FORCEINLINE_HINT T *& Get()
Definition Archive.h:1167
UE_FORCEINLINE_HINT bool IsError() const
Definition Archive.h:1189
TCheckedObjPtr & operator=(T *InObject)
Definition Archive.h:1145
TCheckedObjPtr(T *InObject)
Definition Archive.h:1134
UE_FORCEINLINE_HINT T * operator->() const
Definition Archive.h:1157
UE_FORCEINLINE_HINT bool IsValid() const
Definition Archive.h:1177
TCheckedObjPtr()
Definition Archive.h:1128
Definition EnumAsByte.h:22
Definition AndroidPlatformMisc.h:14
Definition EditorBulkData.h:132
Definition Object.h:95
Definition StructuredLog.cpp:42
Definition Archive.h:36
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition ArchiveCookContext.h:14
Definition ArchiveCookData.h:13
Definition ArchiveSavePackageData.h:11
FObjectSavePackageSerializeContext & SavePackageContext
Definition ArchiveSavePackageData.h:20
FArchiveCookContext * CookContext
Definition ArchiveSavePackageData.h:24
const ITargetPlatform * TargetPlatform
Definition ArchiveSavePackageData.h:22
Definition ArchiveSerializedPropertyChain.h:9
Definition Archive.h:806
const uint8 * StartFastPathLoadBuffer
Definition Archive.h:807
UE_FORCEINLINE_HINT FFastPathLoadBuffer()
Definition Archive.h:810
const uint8 * EndFastPathLoadBuffer
Definition Archive.h:808
const uint8 * OriginalFastPathLoadBuffer
Definition Archive.h:809
void Reset()
Definition Archive.h:814
Definition Archive.h:70
uint8 ArIgnoreArchetypeRef
Definition Archive.h:894
virtual CORE_API void SetEngineVer(const FEngineVersionBase &InVer)
Definition Archive.cpp:1486
virtual void SetDebugSerializationFlags(uint32 InCustomFlags)
Definition Archive.h:566
UE_FORCEINLINE_HINT bool IsIgnoringOuterRef() const
Definition Archive.h:429
uint8 ArIsSaving
Definition Archive.h:839
UE_FORCEINLINE_HINT bool GetError() const
Definition Archive.h:367
uint8 ArAllowLazyLoading
Definition Archive.h:912
virtual CORE_API void SetIsSaving(bool bInIsSaving)
Definition Archive.cpp:1523
FArchiveSerializedPropertyChain * SerializedPropertyChain
Definition Archive.h:1088
UE_FORCEINLINE_HINT bool HasAnyPortFlags(uint32 Flags) const
Definition Archive.h:480
uint8 ArPreserveArrayElements
Definition Archive.h:945
UE_FORCEINLINE_HINT bool IsIgnoringClassGeneratedByRef() const
Definition Archive.h:435
UE_FORCEINLINE_HINT bool IsIgnoringArchetypeRef() const
Definition Archive.h:411
virtual CORE_API void ResetCustomVersions()
Definition Archive.cpp:585
virtual FArchiveState & GetInnermostState()
Definition Archive.h:97
virtual void SetSavingOptionalObject(bool InSavingOptionalObject)
Definition Archive.h:611
UE_FORCEINLINE_HINT bool IsModifyingWeakAndStrongReferences() const
Definition Archive.h:462
UE_FORCEINLINE_HINT bool IsCooking() const
Definition Archive.h:641
virtual CORE_API void SetUEVer(FPackageFileVersion InVer)
Definition Archive.cpp:1476
virtual CORE_API void SetIsPersistent(bool bInIsPersistent)
Definition Archive.cpp:1553
bool IsSaveGame() const
Definition Archive.h:623
void ThisContainsCode()
Definition Archive.h:180
void SetSavePackageData(FArchiveSavePackageData *InSavePackageData)
Definition Archive.h:652
UE_FORCEINLINE_HINT bool ContainsMap() const
Definition Archive.h:385
int64 ArMaxSerializeSize
Definition Archive.h:954
FProperty * SerializedProperty
Definition Archive.h:1085
UE_FORCEINLINE_HINT constexpr bool IsMigratingRemoteObjects() const
Definition Archive.h:355
uint8 ArIsCountingMemory
Definition Archive.h:921
UE_FORCEINLINE_HINT class FProperty * GetSerializedProperty() const
Definition Archive.h:748
UE_FORCEINLINE_HINT bool UseUnversionedPropertySerialization() const
Definition Archive.h:285
UE_FORCEINLINE_HINT uint32 GetPortFlags() const
Definition Archive.h:474
virtual CORE_API uint32 EngineNetVer() const
Definition Archive.cpp:1497
virtual CORE_API void SetIsTransacting(bool bInIsTransacting)
Definition Archive.cpp:1528
UE_FORCEINLINE_HINT bool IsPersistent() const
Definition Archive.h:300
virtual void SetSerializeContext(FUObjectSerializeContext *InLoadContext)
Definition Archive.h:780
uint8 ArIsObjectReferenceCollector
Definition Archive.h:915
virtual CORE_API void SetIsLoadingFromCookedPackage(bool bInIsLoadingFromCookedPackage)
Definition Archive.cpp:1518
virtual CORE_API void SetIsLoading(bool bInIsLoading)
Definition Archive.cpp:1513
UE_FORCEINLINE_HINT const ITargetPlatform * CookingTarget() const
Definition Archive.h:699
static CORE_API void LinkProxy(FArchiveState &Inner, FArchiveState &Proxy)
Definition Archive.cpp:278
bool RequiresLocalizationGather() const
Definition Archive.h:391
FArchiveSavePackageData * SavePackageData
Definition Archive.h:1082
uint8 ArUseCustomPropertyList
Definition Archive.h:939
bool IsByteSwapping()
Definition Archive.h:169
const struct FCustomPropertyListNode * ArCustomPropertyList
Definition Archive.h:1069
virtual UObject * GetArchetypeFromLoader(const UObject *Obj)
Definition Archive.h:198
UE_FORCEINLINE_HINT bool IsTextFormat() const
Definition Archive.h:270
virtual CORE_API void SetGameNetVer(const uint32 InGameNetVer)
Definition Archive.cpp:1502
UE_FORCEINLINE_HINT bool ForceByteSwapping() const
Definition Archive.h:399
FCustomVersionContainer * CustomVersionContainer
Definition Archive.h:1065
CORE_API void SetArchiveState(const FArchiveState &InState)
Definition Archive.cpp:309
CORE_API void SetCriticalError()
Definition Archive.cpp:319
uint32 GetDebugSerializationFlags() const
Definition Archive.h:492
virtual CORE_API void SetLicenseeUEVer(int32 InVer)
Definition Archive.cpp:1481
UE_FORCEINLINE_HINT bool ShouldSkipBulkData() const
Definition Archive.h:502
bool IsSavingOptionalObject() const
Definition Archive.h:600
virtual CORE_API void SetForceUnicode(bool bInForceUnicode)
Definition Archive.cpp:1548
void SetPortFlags(uint32 InPortFlags)
Definition Archive.h:556
virtual CORE_API uint32 GameNetVer() const
Definition Archive.cpp:1508
uint8 ArIsLoadingFromCookedPackage
Definition Archive.h:836
uint8 ArContainsCode
Definition Archive.h:881
void SetCookData(FArchiveCookData *InCookData)
Definition Archive.h:670
CORE_API void CopyTrivialFArchiveStatusMembers(const FArchiveState &ArchiveStatusToCopy)
Definition Archive.cpp:221
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
uint8 ArNoIntraPropertyDelta
Definition Archive.h:900
UE_FORCEINLINE_HINT bool IsAllowingLazyLoading() const
Definition Archive.h:447
virtual FLinker * GetLinker()
Definition Archive.h:140
FEngineVersionBase ArEngineVer
Definition Archive.h:1058
bool bCustomVersionsAreReset
Definition Archive.h:1109
UE_FORCEINLINE_HINT bool IsIgnoringClassRef() const
Definition Archive.h:441
virtual CORE_API void SetIsTextFormat(bool bInIsTextFormat)
Definition Archive.cpp:1533
uint8 ArShouldSkipBulkData
Definition Archive.h:924
virtual CORE_API void SetSerializedPropertyChain(const FArchiveSerializedPropertyChain *InSerializedPropertyChain, class FProperty *InSerializedPropertyOverride=nullptr)
Definition Archive.cpp:354
virtual int64 Tell()
Definition Archive.h:149
uint8 ArContainsMap
Definition Archive.h:884
uint8 ArMergeOverrides
Definition Archive.h:942
CORE_API void ThisRequiresLocalizationGather()
Definition Archive.cpp:1469
virtual int64 TotalSize()
Definition Archive.h:155
UE_FORCEINLINE_HINT bool DoDelta() const
Definition Archive.h:417
UE_FORCEINLINE_HINT bool IsObjectReferenceCollector() const
Definition Archive.h:456
CORE_API void SetError()
Definition Archive.cpp:314
uint8 ArIsPersistent
Definition Archive.h:857
FPackageFileVersion ArUEVer
Definition Archive.h:1052
UE_FORCEINLINE_HINT bool IsSerializingDefaults() const
Definition Archive.h:405
virtual CORE_API void SetWantBinaryPropertySerialization(bool bInWantBinaryPropertySerialization)
Definition Archive.cpp:1538
UE_FORCEINLINE_HINT bool ContainsCode() const
Definition Archive.h:379
uint8 ArForceUnicode
Definition Archive.h:854
uint8 ArUseUnversionedPropertySerialization
Definition Archive.h:851
UE_FORCEINLINE_HINT bool IsCriticalError() const
Definition Archive.h:373
int32 ArSerializingDefaults
Definition Archive.h:948
uint8 ArIgnoreOuterRef
Definition Archive.h:903
CORE_API int32 CustomVer(const struct FGuid &Key) const
Definition Archive.cpp:602
uint8 ArIsSavingOptionalObject
Definition Archive.h:930
UE_FORCEINLINE_HINT FEngineVersionBase EngineVer() const
Definition Archive.h:216
UE_FORCEINLINE_HINT bool IsForcingUnicode() const
Definition Archive.h:291
UE_DEPRECATED(5.6, "Public access to ArRequiresLocalizationGather has been deprecated - please use Ar.RequiresLocalizationGather() and Ar.ThisRequiresLocalizationGather() for getting and setting respectively.") uint8 ArRequiresLocalizationGather uint8 ArForceByteSwapping
Definition Archive.h:887
virtual CORE_API void Reset()
Definition Archive.cpp:151
void SetShouldSkipCompilingAssets(bool Enabled)
Definition Archive.h:310
static CORE_API void UnlinkProxy(FArchiveState &Inner, FArchiveState &Proxy)
Definition Archive.cpp:284
uint8 ArWantBinaryPropertySerialization
Definition Archive.h:848
uint8 ArNoDelta
Definition Archive.h:897
virtual const FUObjectMigrationContext * GetMigrationContext() const
Definition Archive.h:343
void SetByteSwapping(bool Enabled)
Definition Archive.h:546
uint8 ArIsNetArchive
Definition Archive.h:936
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
bool IsFilterEditorOnly() const
Definition Archive.h:578
virtual void SetFilterEditorOnly(bool InFilterEditorOnly)
Definition Archive.h:588
uint8 ArIsLoading
Definition Archive.h:833
virtual bool AtEnd()
Definition Archive.h:161
virtual CORE_API FString GetArchiveName() const
Definition Archive.cpp:335
bool IsTransacting() const
Definition Archive.h:254
virtual CORE_API void SetUseUnversionedPropertySerialization(bool bInUseUnversioned)
Definition Archive.cpp:1543
uint8 ArIsModifyingWeakAndStrongReferences
Definition Archive.h:918
virtual void CountBytes(SIZE_T InNum, SIZE_T InMax)
Definition Archive.h:125
CORE_API void SetMigratingRemoteObjects(bool bMigrating)
Definition Archive.cpp:618
uint8 ArIgnoreClassGeneratedByRef
Definition Archive.h:906
UE_FORCEINLINE_HINT bool WantBinaryPropertySerialization() const
Definition Archive.h:276
FFastPathLoadBuffer InlineFPLB
Definition Archive.h:824
uint8 ArIsSaveGame
Definition Archive.h:933
uint8 ArIsFilterEditorOnly
Definition Archive.h:927
FObjectSavePackageSerializeContext * GetSavePackageSerializeContext()
Definition Archive.h:708
UE_DEPRECATED(5.5, "GetSerializeContext is not supported. Use FUObjectThreadContext::Get().GetSerializeContext().") virtual FUObjectSerializeContext *GetSerializeContext()
Definition Archive.h:783
CORE_API void SetShouldSkipUpdateCustomVersion(bool bShouldSkip)
Definition Archive.cpp:613
UE_FORCEINLINE_HINT bool HasAllPortFlags(uint32 Flags) const
Definition Archive.h:486
FArchiveCookData * GetCookData()
Definition Archive.h:679
FArchiveSavePackageData * GetSavePackageData()
Definition Archive.h:664
UE_FORCEINLINE_HINT bool ShouldSkipCompilingAssets() const
Definition Archive.h:318
virtual void SetSerializedProperty(FProperty *InProperty)
Definition Archive.h:738
uint8 ArIsTextFormat
Definition Archive.h:845
FFastPathLoadBuffer * ActiveFPLB
Definition Archive.h:823
uint32 ArPortFlags
Definition Archive.h:951
UE_FORCEINLINE_HINT bool IsError() const
Definition Archive.h:362
virtual bool UseToResolveEnumerators() const
Definition Archive.h:719
UE_FORCEINLINE_HINT bool IsLoadingFromCookedPackage() const
Definition Archive.h:242
UE_FORCEINLINE_HINT int32 LicenseeUEVer() const
Definition Archive.h:210
void ThisContainsMap()
Definition Archive.h:186
int32 ArLicenseeUEVer
Definition Archive.h:1055
virtual bool ShouldSkipProperty(const FProperty *InProperty) const
Definition Archive.h:727
UE_FORCEINLINE_HINT int64 GetMaxSerializeSize() const
Definition Archive.h:508
UE_FORCEINLINE_HINT bool ShouldSkipUpdateCustomVersion() const
Definition Archive.h:331
virtual CORE_API void SetEngineNetVer(const uint32 InEngineNetVer)
Definition Archive.cpp:1491
UE_FORCEINLINE_HINT FArchiveCookContext * GetCookContext()
Definition Archive.h:688
uint8 ArIsTransacting
Definition Archive.h:842
virtual CORE_API void SetCustomVersions(const FCustomVersionContainer &CustomVersionContainer)
Definition Archive.cpp:572
UE_FORCEINLINE_HINT bool IsNetArchive() const
Definition Archive.h:631
CORE_API void ClearError()
Definition Archive.cpp:324
CORE_API void SetCustomVersion(const struct FGuid &Key, int32 Version, FName FriendlyName)
Definition Archive.cpp:627
UE_FORCEINLINE_HINT FPackageFileVersion UEVer() const
Definition Archive.h:204
UE_FORCEINLINE_HINT bool DoIntraPropertyDelta() const
Definition Archive.h:423
UE_FORCEINLINE_HINT bool IsCountingMemory() const
Definition Archive.h:468
virtual CORE_API const FCustomVersionContainer & GetCustomVersions() const
Definition Archive.cpp:546
UE_FORCEINLINE_HINT const FArchiveSerializedPropertyChain * GetSerializedPropertyChain() const
Definition Archive.h:763
uint8 ArIgnoreClassRef
Definition Archive.h:909
Definition BulkData.h:453
Definition Linker.h:45
Definition UnrealType.h:6698
Definition Guid.h:109
Definition LazyObjectPtr.h:151
Definition ObjectPtr.h:55
Definition ObjectVersion.h:762
Definition SoftObjectPath.h:56
Definition SoftObjectPtr.h:45
Definition UObjectMigrationContext.h:62
Definition UObjectThreadContext.h:140
Definition WeakObjectPtr.h:49
Definition IsArrayOrRefOfTypeByPredicate.h:13
Definition IsSigned.h:12
Definition IsValidVariadicFunctionArg.h:14
Definition ObjectPtr.h:488