UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GenericPlatformMisc.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "CoreFwd.h"
7#include "CoreTypes.h"
9#include "HAL/PlatformCrt.h"
10#include "Math/NumericLimits.h"
12#include "Misc/EnumClassFlags.h"
15
16#if PLATFORM_CPU_X86_FAMILY
17#include <xmmintrin.h> // _mm_prefetch
18#elif PLATFORM_CPU_ARM_FAMILY && defined(_MSC_VER)
19#include <intrin.h> // __prefetch
20#endif
21
22class Error;
23class FDelegateHandle;
24class FOutputDevice;
25class FString;
26class FText;
36struct FGuid;
37
38template <typename FuncType>
39class TFunction;
40
41template <typename FuncType, typename UserPolicy>
42class TDelegate;
43
44#if UE_BUILD_SHIPPING && !WITH_EDITOR
45#define UE_DEBUG_BREAK() ((void)0)
46#else
47#define UE_DEBUG_BREAK() ((void)(FPlatformMisc::IsDebuggerPresent() && ([] () { UE_DEBUG_BREAK_IMPL(); } (), 1)))
48#endif
49
50// Enable this manually for debugging
51#define LOG_NAMED_EVENTS 0
52
53#define ENABLE_GENERIC_NAMED_EVENTS ((UE_EXTERNAL_PROFILING_ENABLED) || (STATS) || (ENABLE_STATNAMEDEVENTS) || ((CSV_PROFILER_STATS) && !UE_BUILD_SHIPPING) || (LOG_NAMED_EVENTS) || (FRAMEPRO_ENABLED))
54
59{
61 Unknown,
62
64 Debug,
65
68
71
74
76 Test
77};
78
83{
84 Default, /* UE default handling */
85 Disabled, /* UE doesn't handle crashes on main thread, general workers, rendering thread. */
86};
87
95
102CORE_API const TCHAR* LexToString(EBuildConfiguration Configuration);
103
104namespace EBuildConfigurations
105{
106 UE_DEPRECATED(4.24, "EBuildConfigurations::Type is deprecated. Use EBuildConfiguration instead.")
108
109 UE_DEPRECATED(4.24, "EBuildConfigurations::Unknown is deprecated. Use EBuildConfiguration::Unknown instead.")
111
112 UE_DEPRECATED(4.24, "EBuildConfigurations::Debug is deprecated. Use EBuildConfiguration::Debug instead.")
114
115 UE_DEPRECATED(4.24, "EBuildConfigurations::DebugGame is deprecated. Use EBuildConfiguration::DebugGame instead.")
117
118 UE_DEPRECATED(4.24, "EBuildConfigurations::Development is deprecated. Use EBuildConfiguration::Development instead.")
119 static constexpr EBuildConfiguration Development = EBuildConfiguration::Development;
120
123
124 UE_DEPRECATED(4.24, "EBuildConfigurations::Shipping is deprecated. Use EBuildConfiguration::Shipping instead.")
126
134 CORE_API EBuildConfiguration FromString( const FString& Configuration );
135
142 UE_DEPRECATED(4.24, "EBuildConfigurations::ToString() is deprecated. Use LexToString() instead.")
143 CORE_API const TCHAR* ToString( EBuildConfiguration Configuration );
144
151 CORE_API FText ToText( EBuildConfiguration Configuration );
152}
153
158{
160 Unknown,
161
163 Game,
164
166 Server,
167
169 Client,
170
172 Editor,
173
175 Program,
176};
177
186
194
196{
197 UE_DEPRECATED(4.24, "EBuildTargets::Type is deprecated. Use EBuildTargetType instead.")
199
202
205
206 UE_DEPRECATED(4.24, "EBuildTargets::Game is deprecated. Use EBuildTargetType::Unknown instead.")
208
211
212 UE_DEPRECATED(4.24, "EBuildTargets::FromString is deprecated. Use LexFromString() instead.")
213 CORE_API EBuildTargetType FromString( const FString& Target );
214
215 UE_DEPRECATED(4.24, "EBuildTargets::FromString is deprecated. Use LexFromString() instead.")
216 CORE_API const TCHAR* ToString(EBuildTargetType Target);
217}
218
223{
226
228 Laptop,
229
231 Tablet
232};
233
236{
238 Unknown,
239
241 Portrait,
242
245
248
251
253 FaceUp,
254
256 FaceDown,
257
260
263
266};
267
268
270{
274 enum Type
275 {
278
281
284 };
285}
286
287
292{
293 Warning,
294 Error,
295 Success,
296 Info,
297};
298
299
317
318
336
344
345/*
346 * Holds a computed SHA256 hash.
347 */
349{
350 uint8 Signature[32];
351
353 CORE_API FString ToString() const;
354};
355
357{
358 // these are IOS UIFeedbackGenerator types
366};
367
370{
372 Unknown = 0,
374 Disabled,
376 Local,
379};
381
383{
387 Unknown,
388 None,
390 Cell,
391 WiFi,
392 WiMAX,
393 Bluetooth,
394 Ethernet,
395};
396
398
400{
401 None = 0,
402 MemorySanitizer = 1 << 0,
403 AnsiMalloc = 1 << 1,
404 StompMalloc = 1 << 2,
405};
406
408
416
418{
419 static constexpr uint16 MaxNumProcessorGroups = 16;
420 uint64 ThreadAffinities[MaxNumProcessorGroups] = {};
421 uint16 NumProcessorGroups = 0;
422};
423
438
443{
444 SoftPageFaults = 0x01,
445 HardPageFaults = 0x02,
446 TotalPageFaults = 0x04,
447
448 All = 0xFF
449};
450
452
453
477
482{
483 BlockingInput = 0x01,
484 BlockingOutput = 0x02,
485 BlockingOther = 0x04,
486 InputBytes = 0x08,
487 OutputBytes = 0x10,
488 OtherBytes = 0x20,
489
490 All = 0xFF
491};
492
494
513
518{
519 sRGB_D65 = 0,
520 DCIP3_D65 = 1,
521 Rec2020_D65 = 2,
522 ACES_D60 = 3,
523 ACEScg_D60 = 4,
524
525 MAX
526};
527
542
547{
551
552 All = 0xFF
553};
554
556
561{
565 static CORE_API void PlatformPreInit();
566 static void PlatformInit() { }
567
568
570 static CORE_API bool RemoveNetworkListener(FDelegateHandle Handle);
571
575 static void PlatformHandleSplashScreen(bool ShowSplashScreen = false) { }
576
580 static void PlatformTearDown() { }
581
584
590
595
601
608 static CORE_API FString GetEnvironmentVariable(const TCHAR* VariableName);
609
616 static CORE_API void SetEnvironmentVar(const TCHAR* VariableName, const TCHAR* Value);
617
623 {
624 return 128;
625 }
626
633 static CORE_API int32 GetExternalAppMaxPathLength();
634
638 static CORE_API const TCHAR* GetPathVarDelimiter();
639
645 UE_DEPRECATED(4.14, "GetMacAddress is deprecated. It is not reliable on all platforms")
646 static CORE_API TArray<uint8> GetMacAddress();
647
653 UE_DEPRECATED(4.14, "GetMacAddressString is deprecated. It is not reliable on all platforms")
654 static CORE_API FString GetMacAddressString();
655
661 UE_DEPRECATED(4.14, "GetHasedMacAddressString is deprecated. It is not reliable on all platforms")
662 static CORE_API FString GetHashedMacAddressString();
663
679 static CORE_API FString GetDeviceId();
680
686 static CORE_API FString GetUniqueAdvertisingId();
687
688 // #CrashReport: 2015-02-24 Remove
690 static CORE_API void SubmitErrorReport( const TCHAR* InErrorHist, EErrorReportMode::Type InMode );
691
693 static bool IsRemoteSession()
694 {
695 return false;
696 }
697
700 {
701#if UE_BUILD_SHIPPING
702 return false;
703#else
704 return true; // unknown platforms return true so that they can crash into a debugger
705#endif
706 }
707
709 static CORE_API EProcessDiagnosticFlags GetProcessDiagnostics();
710
712 UE_DEPRECATED(4.19, "FPlatformMisc::DebugBreak is deprecated. Use the UE_DEBUG_BREAK() macro instead.")
713 FORCEINLINE static void DebugBreak()
714 {
715 if (IsDebuggerPresent())
716 {
717 *((int32*)3) = 13; // unknown platforms crash into the debugger
718 }
719 }
720
726 static CORE_API FString GetCPUVendor();
727
742 static CORE_API uint32 GetCPUInfo();
743
745 static CORE_API bool HasNonoptionalCPUFeatures();
747 static CORE_API bool NeedsNonoptionalCPUFeaturesCheck();
748
750 static CORE_API FString GetHostArchitecture();
751
757 static CORE_API FString GetCPUBrand();
758 static CORE_API uint32 GetCPUModelID();
759 static CORE_API uint32 GetCPUMicrocodeRevision();
760
766 static CORE_API FString GetCPUChipset();
767
771 static CORE_API FString GetPrimaryGPUBrand();
772
776 static CORE_API FString GetDeviceMakeAndModel();
777
778 static CORE_API struct FGPUDriverInfo GetGPUDriverInfo(const FString& DeviceDescription);
779
783 static CORE_API void GetOSVersions( FString& out_OSVersionLabel, FString& out_OSSubVersionLabel );
784
790 static CORE_API FString GetOSVersion();
791
799 static CORE_API bool GetDiskTotalAndFreeSpace( const FString& InPath, uint64& TotalNumberOfBytes, uint64& NumberOfFreeBytes );
800
812
824
836
837 static bool SupportsMessaging()
838 {
839 return true;
840 }
841
848 {
849 return true;
850 }
851
853 {
854 return true;
855 }
856
857 static bool AllowLocalCaching()
858 {
859#if PLATFORM_DESKTOP
860 return true;
861#else
862 return false;
863#endif
864 }
865
868 {
869 return true;
870 }
871
875 CORE_API FORCENOINLINE static void MemoryBarrier();
876
883 {
884 }
885
890 {
891 return false;
892 }
893
895 {
896 return 0;
897 }
898
899 static void SetLastError(uint32 ErrorCode) {}
900
901 static CORE_API void RaiseException( uint32 ExceptionCode );
902
903public:
904
905#if ENABLE_GENERIC_NAMED_EVENTS
907 static CORE_API void BeginNamedEventFrame();
909 static CORE_API void BeginNamedEvent(const struct FColor& Color, const TCHAR* Text);
910 static CORE_API void BeginNamedEvent(const struct FColor& Color, const ANSICHAR* Text);
912 static CORE_API void EndNamedEvent();
914 static CORE_API void CustomNamedStat(const TCHAR* Text, float Value, const TCHAR* Graph, const TCHAR* Unit);
915 static CORE_API void CustomNamedStat(const ANSICHAR* Text, float Value, const ANSICHAR* Graph, const ANSICHAR* Unit);
916#else
918 {
919 }
920 FORCEINLINE static void BeginNamedEvent(const struct FColor& Color, const TCHAR* Text)
921 {
922 }
923 FORCEINLINE static void BeginNamedEvent(const struct FColor& Color, const ANSICHAR* Text)
924 {
925 }
927 {
928 }
929 FORCEINLINE static void CustomNamedStat(const TCHAR* Text, float Value, const TCHAR* Graph, const TCHAR* Unit)
930 {
931 }
932 FORCEINLINE static void CustomNamedStat(const ANSICHAR* Text, float Value, const ANSICHAR* Graph, const ANSICHAR* Unit)
933 {
934 }
935#endif
936
937
941 template<typename CharType>
942 static void StatNamedEvent(const CharType* Text);
943 static CORE_API void TickStatNamedEvents();
944 static CORE_API void LogNameEventStatsInit();
945
949 static void BeginEnterBackgroundEvent(const TCHAR* Text) {}
950 static void EndEnterBackgroundEvent() {}
951
952
957 {
958 }
959
964 {
965 }
966
970 FORCEINLINE static void TagBuffer(const char* Label, uint32 Category, const void* Buffer, size_t BufferSize)
971 {
972 }
973
983 static CORE_API bool SetStoredValues(const FString& InStoreId, const FString& InSectionName, const TMap<FString, FString>& InKeyValues);
984
995 static CORE_API bool SetStoredValue(const FString& InStoreId, const FString& InSectionName, const FString& InKeyName, const FString& InValue);
996
1007 static CORE_API bool GetStoredValue(const FString& InStoreId, const FString& InSectionName, const FString& InKeyName, FString& OutValue);
1008
1018 static CORE_API bool DeleteStoredValue(const FString& InStoreId, const FString& InSectionName, const FString& InKeyName);
1019
1028 static CORE_API bool DeleteStoredSection(const FString& InStoreId, const FString& InSectionName);
1029
1031 static CORE_API void LowLevelOutputDebugString(const TCHAR *Message);
1032 static CORE_API void VARARGS LowLevelOutputDebugStringf(const TCHAR *Format, ... );
1033
1035 static CORE_API bool IsLowLevelOutputDebugStringStructured();
1036
1038 static CORE_API void SetUTF8Output();
1039
1041 static CORE_API void LocalPrint( const TCHAR* Str );
1042
1044 static bool IsLocalPrintThreadSafe() { return false; }
1045
1050 static CORE_API bool HasSeparateChannelForDebugOutput();
1051
1059 static CORE_API void RequestExit( bool Force, const TCHAR* CallSite = nullptr);
1060
1069 static CORE_API void RequestExitWithStatus( bool Force, uint8 ReturnCode, const TCHAR* CallSite = nullptr);
1070
1071
1075 static CORE_API bool RestartApplication();
1076
1080 static CORE_API bool RestartApplicationWithCmdLine(const char* CmdLine);
1081
1089 static CORE_API const TCHAR* GetSystemErrorMessage(TCHAR* OutBuffer, int32 BufferCount, int32 Error);
1090
1092 static CORE_API void CreateGuid(struct FGuid& Result);
1093
1101 static CORE_API EAppReturnType::Type MessageBoxExt( EAppMsgType::Type MsgType, const TCHAR* Text, const TCHAR* Caption );
1102
1108 {
1109 return 1;
1110 }
1111
1118 {
1119 return !!PLATFORM_64BITS;
1120 }
1121
1127 static bool IsValidAbsolutePathFormat(const FString& Path)
1128 {
1129 return 1;
1130 }
1131
1136 static void NormalizePath(FString& InPath)
1137 {
1138 }
1139
1145 {
1146 }
1147
1151 static CORE_API const TCHAR* GetDefaultPathSeparator();
1152
1158 static CORE_API bool UseRenderThread();
1159
1165 static bool AllowAudioThread()
1166 {
1167 // allow if not overridden
1168 return true;
1169 }
1170
1176 static CORE_API bool AllowThreadHeartBeat();
1177
1181 static CORE_API int32 NumberOfCores();
1182
1186 static CORE_API const FProcessorGroupDesc& GetProcessorGroupDesc();
1187
1191 static CORE_API int32 NumberOfCoresIncludingHyperthreads();
1192
1196 static CORE_API int32 NumberOfWorkerThreadsToSpawn();
1197
1201 static CORE_API int32 NumberOfIOWorkerThreadsToSpawn();
1202
1207 {
1208 return nullptr;
1209 }
1210
1213 {
1214 // by default, no module
1215 return nullptr;
1216 }
1217
1219 static CORE_API const TCHAR* RootDir();
1220
1222 static CORE_API TArray<FString> GetAdditionalRootDirectories();
1224 static CORE_API void AddAdditionalRootDirectory(const FString& RootDir);
1225
1227 static CORE_API const TCHAR* EngineDir();
1228
1230 static CORE_API const TCHAR* LaunchDir();
1231
1233 static CORE_API void CacheLaunchDir();
1234
1238 static CORE_API const TCHAR* ProjectDir();
1239
1244 static CORE_API bool GetEngineAndProjectAbsoluteDirsFromExecutable(FString& OutProjectDir, FString& OutEngineDir);
1245
1249 static CORE_API FString CloudDir();
1250
1257 {
1258 return true;
1259 }
1260
1265
1266
1272 static CORE_API const TCHAR* GamePersistentDownloadDir();
1273
1277 static CORE_API const TCHAR* GameTemporaryDownloadDir();
1278
1279 static CORE_API const TCHAR* GeneratedConfigDir();
1280
1281 static CORE_API const TCHAR* GetUBTPlatform();
1282
1283 static CORE_API const TCHAR* GetUBTTarget();
1284
1285 static CORE_API const TCHAR* GetUBTArchitecture();
1286
1287 static CORE_API void SetUBTTargetName(const TCHAR* InTargetName);
1288 static CORE_API const TCHAR* GetUBTTargetName();
1289
1295 static CORE_API const TCHAR* GetNullRHIShaderFormat();
1296
1302 static CORE_API IPlatformChunkInstall* GetPlatformChunkInstall();
1303
1310
1316 static CORE_API IPlatformHostCommunication& GetPlatformHostCommunication();
1317
1326 static bool OsExecute(const TCHAR* CommandType, const TCHAR* Command, const TCHAR* CommandLine = NULL)
1327 {
1328 return false;
1329 }
1330
1335 {
1336#if UE_BUILD_SHIPPING
1337 return true;
1338#else
1339 return false;
1340#endif
1341 }
1342
1353 static CORE_API bool GetSHA256Signature(const void* Data, uint32 ByteSize, FSHA256Signature& OutSignature);
1354
1363 static CORE_API FString GetDefaultLanguage();
1364
1372 static CORE_API FString GetDefaultLocale();
1373
1378 static CORE_API FString GetTimeZoneId();
1379
1388 static bool Exec(class UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Out)
1389 {
1390 return false;
1391 }
1392
1394 static CORE_API FText GetFileManagerName();
1395
1398 {
1399 return true;
1400 }
1401
1402#if !UE_BUILD_SHIPPING
1404 {
1405 bShouldPromptForRemoteDebugging = bInShouldPrompt;
1406 }
1407
1409 {
1410 bPromptForRemoteDebugOnEnsure = bInShouldPrompt;
1411 }
1412#endif //#if !UE_BUILD_SHIPPING
1413
1419#if DO_ENSURE
1420 static CORE_API bool IsEnsureAllowed();
1421#else
1422 static bool IsEnsureAllowed() { return true; }
1423#endif // DO_ENSURE
1424
1428#if DO_ENSURE
1429 static CORE_API void UpdateHotfixableEnsureSettings();
1430#else
1432#endif // DO_ENSURE
1433
1437 static CORE_API void TickHotfixables();
1438
1439 static void PromptForRemoteDebugging(bool bIsEnsure)
1440 {
1441 }
1442
1443 FORCEINLINE static void Prefetch(const void* Ptr)
1444 {
1445#if PLATFORM_CPU_X86_FAMILY
1446 _mm_prefetch(static_cast<const char*>(Ptr), _MM_HINT_T0);
1447#elif PLATFORM_CPU_ARM_FAMILY
1448# if PLATFORM_COMPILER_MSVC
1449 __prefetch(Ptr);
1450# else
1451 __asm__ __volatile__("prfm pldl1keep, [%[ptr]]\n" ::[ptr] "r"(Ptr) : );
1452# endif
1453#else
1454 // any other architecture must implement this function so this is not called, but we can't use any convenience functions
1455 // like unimplemented() or checkf(), so just crash with a comment that if you get here, implement Prefetch and ALL Prefecth calls below
1456 // this is because the Prefetch calls below will end up calling _this one_ not the platform specific functions
1458#endif
1459 }
1460
1461 FORCEINLINE static void Prefetch(const void* Ptr, int32 Offset)
1462 {
1463 Prefetch(reinterpret_cast<const void*>(reinterpret_cast<UPTRINT>(Ptr) + Offset));
1464 }
1465
1466 UE_DEPRECATED(5.2, "Must supply size when prefetching a block of data")
1467 FORCEINLINE static void PrefetchBlock(const void* Ptr)
1468 {
1469 Prefetch(Ptr);
1470 }
1471
1472 FORCEINLINE static void PrefetchBlock(const void* Ptr, int32 NumBytes)
1473 {
1474 // Use compile-time PLATFORM_CACHE_LINE_SIZE to avoid having to load a value before issuing prefetch instructions
1476 {
1477 Prefetch(Ptr, Line * PLATFORM_CACHE_LINE_SIZE);
1478 }
1479 }
1480
1486 static CORE_API const TCHAR* GetDefaultDeviceProfileName();
1487
1494 {
1495 return -1;
1496 }
1497
1498 FORCEINLINE static void SetBrightness(float bBright) { }
1499 FORCEINLINE static float GetBrightness() { return 1.0f; }
1500 FORCEINLINE static bool SupportsBrightness() { return false; }
1501
1502 FORCEINLINE static bool IsInLowPowerMode() { return false;}
1503
1509 static CORE_API float GetDeviceTemperatureLevel();
1510
1514 static CORE_API void SetOverrideProjectDir(const FString& InOverrideDir);
1515
1516 UE_DEPRECATED(4.18, "FPaths::SetOverrideGameDir() has been superseded by FPaths::SetOverrideProjectDir().")
1517 static FORCEINLINE void SetOverrideGameDir(const FString& InOverrideDir) { return SetOverrideProjectDir(InOverrideDir); }
1518
1523 static CORE_API void GetValidTargetPlatforms(TArray<FString>& TargetPlatformNames);
1524
1525 /*
1526 * Converts from a local user index to a FPlatformUserId
1527 *
1528 * @param LocalUserIndex A logical index where 0 should always be a valid user
1529 * @returns A platform-allocated opaque user id, or PLATFORMUSERID_NONE
1530 */
1531 static CORE_API FPlatformUserId GetPlatformUserForUserIndex(int32 LocalUserIndex);
1532
1533 /*
1534 * Converts from a FPlatformUserId to local user index
1535 *
1536 * @param LocalUserIndex A platform-allocated opaque user id
1537 * @returns A valid logical index, or INDEX_NONE
1538 */
1539 static CORE_API int32 GetUserIndexForPlatformUser(FPlatformUserId PlatformUser);
1540
1545 {
1547 }
1548
1550 {
1552 }
1553
1555 {
1556 return false;
1557 }
1558
1560 { // FSlateApplication::Get().IsFakingTouchEvents() will trigger to display the Touch Interface
1561 // on some platforms, we want to ignore that condition
1562 return true;
1563 }
1564
1566 {
1567#if PLATFORM_DESKTOP
1568 return true;
1569#else
1570 return false;
1571#endif
1572 }
1573
1575 {
1576 // On some platforms, Fullscreen and WindowedFullscreen behave the same.
1577 // e.g. On Linux, see FLinuxWindow::ReshapeWindow()/SetWindowMode()
1578 // Allowing Fullscreen window mode confuses higher level code (see UE-19996).
1579 return false;
1580 }
1581
1582 /*
1583 * Returns whether the volume buttons are handled by the system
1584 */
1586 {
1587 return true;
1588 }
1589
1590 /*
1591 * Set whether the volume buttons are handled by the system
1592 */
1593 static void SetVolumeButtonsHandledBySystem(bool enabled)
1594 {}
1595
1597 static CORE_API TArray<uint8> GetSystemFontBytes();
1598
1603 {
1604 return false;
1605 }
1606
1610 static CORE_API ENetworkConnectionStatus GetNetworkConnectionStatus();
1611
1615 static CORE_API void SetNetworkConnectionStatus(ENetworkConnectionStatus NewNetworkConnectionStatus);
1616
1624
1626
1631 {
1632 // By default assume that platform hardware is variable.
1633 return true;
1634 }
1635
1639 static bool HasPlatformFeature(const TCHAR* FeatureName)
1640 {
1641 return false;
1642 }
1643
1647 static CORE_API bool IsRunningOnBattery();
1648
1654 static CORE_API EDeviceScreenOrientation GetDeviceOrientation();
1655
1659 UE_DEPRECATED(5.1, "SetDeviceOrientation is deprecated. Use SetAllowedDeviceOrientation instead.")
1661
1670 static CORE_API EDeviceScreenOrientation GetAllowedDeviceOrientation();
1671
1675 static CORE_API void SetAllowedDeviceOrientation(EDeviceScreenOrientation NewAllowedDeviceOrientation);
1676
1683 static CORE_API int32 GetDeviceVolume();
1684
1690 UE_DEPRECATED(4.14, "GetMachineId is deprecated. Use GetLoginId instead.")
1691 static CORE_API FGuid GetMachineId();
1692
1705 static CORE_API FString GetLoginId();
1706
1714 static CORE_API FString GetEpicAccountId();
1715
1723 static CORE_API FString GetDeviceTag();
1724
1729 static CORE_API FString GetOperatingSystemId();
1730
1736 static CORE_API EConvertibleLaptopMode GetConvertibleLaptopMode();
1737
1741 static CORE_API const TCHAR* GetEngineMode();
1742
1747 static CORE_API TArray<FString> GetPreferredLanguages();
1748
1753 static CORE_API FString GetLocalCurrencyCode();
1754
1759 static CORE_API FString GetLocalCurrencySymbol();
1760
1764 static CORE_API void RegisterForRemoteNotifications();
1765
1769 static CORE_API bool IsRegisteredForRemoteNotifications();
1770
1774 static CORE_API void UnregisterForRemoteNotifications();
1775
1779 static CORE_API FString GetPendingActivationProtocol();
1780
1786 static bool ShouldDisablePluginAtRuntime(const FString& PluginName)
1787 {
1788 return false;
1789 }
1790
1796 {
1797 }
1798
1804 {
1805 }
1806
1811 {
1812 }
1813
1817 static void ShareURL(const FString& URL, const FText& Description, int32 LocationHintX, int32 LocationHintY)
1818 {
1819 }
1820
1822 {
1823 return false;
1824 }
1825
1826 static CORE_API bool RequestDeviceCheckToken(TFunction<void(const TArray<uint8>&)> QuerySucceededFunc, TFunction<void(const FString&, const FString&)> QueryFailedFunc);
1827
1832 static CORE_API FString LoadTextFileFromPlatformPackage(const FString& RelativePath);
1833
1834 static CORE_API bool FileExistsInPlatformPackage(const FString& RelativePath);
1835
1839 static CORE_API void TearDown();
1840
1841 static CORE_API void ParseChunkIdPakchunkIndexMapping(TArray<FString> ChunkIndexRedirects, TMap<int32, int32>& OutMapping);
1842
1844 {
1845 }
1846
1848 {
1849 }
1855 {
1856 }
1857
1859 {
1860
1861 }
1862
1864 {
1865 return false;
1866 }
1867
1871
1873 {
1874 return PakchunkIndex;
1875 }
1876
1877 static CORE_API FStringView GetPakFilenamePrefix();
1878
1880
1882 {
1883 return false;
1884 }
1885
1892
1894 {
1895 return true;
1896 }
1897
1901 static inline int32 GetMaxRefreshRate()
1902 {
1903 return 60;
1904 }
1905
1910 {
1911 return GetMaxRefreshRate();
1912 }
1913
1918 {
1919 // Generic platform has no limit.
1920 return MAX_int32;
1921 }
1922
1923 /*
1924 * Returns the value of config rule variable or null if not found.
1925 */
1926 static CORE_API const FString* GetConfigRulesVariable(const FString& Key);
1927
1928 /*
1929 * Returns the map containing all config rule variables.
1930 */
1931 static CORE_API const class TMap<FString, FString>& GetConfigRuleVars();
1932
1936 static CORE_API bool IsPGOEnabled();
1937
1942 static CORE_API bool IsPGICapableBinary();
1943
1950 static bool StartNewPGOCollection(const FString& AbsoluteFileName) { return false; }
1951
1956 static CORE_API bool IsPGIActive();
1957
1958 static CORE_API const FString VersionCheckPlatformName();
1959
1967 static bool StopPGOCollectionAndCloseFile() { return false; }
1968
1969 static CORE_API void ShowConsoleWindow();
1970
1971 /*
1972 * For mobile devices, this function will return true if we wish to propagate the alpha to the backbuffer
1973 */
1974 static CORE_API int GetMobilePropagateAlphaSetting();
1975
1979 static bool IsRunningInCloud()
1980 {
1981 return false;
1982 }
1983
1988 {
1989 return false;
1990 }
1991
1993 {
1994 }
1995
1997 {
1998 }
1999
2000 /*
2001 * Unix only function, but put a stub so we can call this for higher level code when we want to setup the Syscall Filters
2002 */
2004 {
2005 return false;
2006 }
2007
2009 {
2010 return 0.0f;
2011 }
2012
2013#if !UE_BUILD_SHIPPING
2018 {
2019 return false;
2020 }
2021
2022protected:
2027#endif //#if !UE_BUILD_SHIPPING
2028
2030
2032
2033protected:
2046 static CORE_API void GetConfiguredCoreLimits(int32 PlatformNumPhysicalCores, int32 PlatformNumLogicalCores,
2049
2050private:
2051 struct FStaticData;
2052};
2053
2054
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define NULL
Definition oodle2base.h:134
#define VARARGS
Definition AndroidPlatform.h:134
#define FORCENOINLINE
Definition AndroidPlatform.h:142
#define FORCEINLINE
Definition AndroidPlatform.h:140
#define PLATFORM_HAS_TOUCH_MAIN_SCREEN
Definition AndroidPlatform.h:53
#define PLATFORM_64BITS
Definition ApplePlatform.h:13
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define UE_FORCE_CRASH()
Definition Platform.h:1053
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
FPlatformTypes::UPTRINT UPTRINT
An unsigned integer the same size as a pointer.
Definition Platform.h:1146
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
#define PLATFORM_CACHE_LINE_SIZE
Definition Platform.h:938
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
bool LexTryParseString(EBuildConfiguration &OutConfiguration, const TCHAR *Configuration)
Definition GenericPlatformMisc.cpp:270
EConvertibleLaptopMode
Definition GenericPlatformMisc.h:223
EContextSwitchFlags
Definition GenericPlatformMisc.h:547
EDeviceScreenOrientation
Definition GenericPlatformMisc.h:236
EDisplayColorGamut
Definition GenericPlatformMisc.h:518
TDelegate< void(ENetworkConnectionType ConnectionType), FDefaultDelegateUserPolicy > FOnNetworkConnectionChangedDelegate
Definition GenericPlatformMisc.h:397
CORE_API const TCHAR * LexToString(EBuildConfiguration Configuration)
Definition GenericPlatformMisc.cpp:309
EDisplayOutputFormat
Definition GenericPlatformMisc.h:499
ENetworkConnectionStatus
Definition GenericPlatformMisc.h:370
EProcessDiagnosticFlags
Definition GenericPlatformMisc.h:400
EMobileHapticsType
Definition GenericPlatformMisc.h:357
CORE_API bool LexTryParseString(EBuildConfiguration &OutConfiguration, const TCHAR *Configuration)
Definition GenericPlatformMisc.cpp:270
EAppMsgCategory
Definition GenericPlatformMisc.h:292
ENetworkConnectionType
Definition GenericPlatformMisc.h:383
ECrashHandlingType
Definition GenericPlatformMisc.h:83
EInputOutputFlags
Definition GenericPlatformMisc.h:482
EBuildConfiguration
Definition GenericPlatformMisc.h:59
EPageFaultFlags
Definition GenericPlatformMisc.h:443
EBuildTargetType
Definition GenericPlatformMisc.h:158
const TCHAR * LexToString(EAnalyticsRecordEventMode Mode)
Definition IAnalyticsProvider.cpp:5
void LexFromString(EAudioFeature &OutFeature, const TCHAR *String)
Definition IOSAppDelegate.cpp:163
int32 GetPakchunkIndexFromPakFile(const FString &InFilename)
Definition IPlatformFilePak.cpp:181
#define MAX_int32
Definition NumericLimits.h:25
@ Continue
Definition PrecomputedVolumetricLightmapStreaming.cpp:24
uint32 Offset
Definition VulkanMemory.cpp:4033
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 IDelegateInstance.h:14
Definition UnrealType.h:3087
Definition OutputDevice.h:133
Definition Text.h:385
Definition GenericApplication.h:437
Definition InstallBundleManagerInterface.h:126
Definition GenericPlatformChunkInstall.h:129
Definition GenericPlatformHostCommunication.h:32
Definition GenericPlatformFile.h:986
Definition Array.h:670
Definition DelegateSignatureImpl.inl:310
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition World.h:918
Definition GenericPlatformMisc.h:301
Type
Definition GenericPlatformMisc.h:306
@ YesNoYesAllNoAll
Definition GenericPlatformMisc.h:312
@ YesNoYesAll
Definition GenericPlatformMisc.h:314
@ YesNoCancel
Definition GenericPlatformMisc.h:310
@ YesNo
Definition GenericPlatformMisc.h:308
@ YesNoYesAllNoAllCancel
Definition GenericPlatformMisc.h:313
@ CancelRetryContinue
Definition GenericPlatformMisc.h:311
@ OkCancel
Definition GenericPlatformMisc.h:309
Definition GenericPlatformMisc.h:320
Type
Definition GenericPlatformMisc.h:325
@ YesAll
Definition GenericPlatformMisc.h:328
@ NoAll
Definition GenericPlatformMisc.h:329
Definition GenericPlatformMisc.cpp:329
EBuildConfiguration Type
Definition GenericPlatformMisc.h:107
EBuildConfiguration FromString(const FString &Configuration)
Definition GenericPlatformMisc.cpp:330
FText ToText(EBuildConfiguration Configuration)
Definition GenericPlatformMisc.cpp:342
Definition GenericPlatformMisc.h:196
Definition GenericPlatformMisc.h:270
Type
Definition GenericPlatformMisc.h:275
@ Balloon
Definition GenericPlatformMisc.h:283
@ Interactive
Definition GenericPlatformMisc.h:277
Definition TestUtils.cpp:8
Definition Color.h:486
Definition GenericPlatformMisc.h:532
Definition DelegateBase.h:121
Definition GenericPlatformDriver.h:156
Definition GenericPlatformCrashContext.h:395
Definition GenericPlatformCrashContext.h:899
Definition GenericPlatformMisc.cpp:530
Definition GenericPlatformMisc.h:561
static void PlatformInit()
Definition GenericPlatformMisc.h:566
static void SetShouldPromptForRemoteDebugOnEnsure(bool bInShouldPrompt)
Definition GenericPlatformMisc.h:1408
static bool DesktopTouchScreen()
Definition GenericPlatformMisc.h:1565
static void EndEnterBackgroundEvent()
Definition GenericPlatformMisc.h:950
static bool HasVariableHardware()
Definition GenericPlatformMisc.h:1630
static bool GetVolumeButtonsHandledBySystem()
Definition GenericPlatformMisc.h:1585
static bool Exec(class UWorld *InWorld, const TCHAR *Cmd, FOutputDevice &Out)
Definition GenericPlatformMisc.h:1388
static bool GetUseVirtualJoysticks()
Definition GenericPlatformMisc.h:1544
static bool StopPGOCollectionAndCloseFile()
Definition GenericPlatformMisc.h:1967
static FORCEINLINE void CustomNamedStat(const ANSICHAR *Text, float Value, const ANSICHAR *Graph, const ANSICHAR *Unit)
Definition GenericPlatformMisc.h:932
static void SetVolumeButtonsHandledBySystem(bool enabled)
Definition GenericPlatformMisc.h:1593
static void DisableScreenTimeout()
Definition GenericPlatformMisc.h:1992
static int32 GetMaxSupportedRefreshRate()
Definition GenericPlatformMisc.h:1909
static FORCEINLINE void BeginNamedEvent(const struct FColor &Color, const ANSICHAR *Text)
Definition GenericPlatformMisc.h:923
static FORCEINLINE void CustomNamedStat(const TCHAR *Text, float Value, const TCHAR *Graph, const TCHAR *Unit)
Definition GenericPlatformMisc.h:929
static bool CommandLineCommands()
Definition GenericPlatformMisc.h:1107
static void ReleaseMobileHaptics()
Definition GenericPlatformMisc.h:1810
static bool SupportsFullCrashDumps()
Definition GenericPlatformMisc.h:867
static bool SupportsLocalCaching()
Definition GenericPlatformMisc.h:852
static FORCEINLINE bool IsDebuggerPresent()
Definition GenericPlatformMisc.h:699
static bool HasMemoryWarningHandler()
Definition GenericPlatformMisc.h:889
static bool HasPlatformFeature(const TCHAR *FeatureName)
Definition GenericPlatformMisc.h:1639
static void SetCrashHandler(void(*CrashHandler)(const FGenericCrashContext &Context))
Definition GenericPlatformMisc.h:589
static bool ShouldDisplayTouchInterfaceOnFakingTouchEvents()
Definition GenericPlatformMisc.h:1559
static bool SupportsForceTouchInput()
Definition GenericPlatformMisc.h:1554
static const TCHAR * GetPlatformFeaturesModuleName()
Definition GenericPlatformMisc.h:1212
static CORE_API ENetworkConnectionStatus CurrentNetworkConnectionStatus
Definition GenericPlatformMisc.h:2031
static bool IsPackagedForDistribution()
Definition GenericPlatformMisc.h:1334
static FORCEINLINE void SetBrightness(float bBright)
Definition GenericPlatformMisc.h:1498
static FORCEINLINE void InitTaggedStorage(uint32 NumTags)
Definition GenericPlatformMisc.h:956
static void NormalizePath(FStringBuilderBase &InPath)
Definition GenericPlatformMisc.h:1144
static FORCEINLINE void BeginNamedEvent(const struct FColor &Color, const TCHAR *Text)
Definition GenericPlatformMisc.h:920
static bool AllowAudioThread()
Definition GenericPlatformMisc.h:1165
static bool SupportsTouchInput()
Definition GenericPlatformMisc.h:1549
static ECrashHandlingType GetCrashHandlingType()
Definition GenericPlatformMisc.h:594
static FORCEINLINE bool IsInLowPowerMode()
Definition GenericPlatformMisc.h:1502
static FORCEINLINE int32 GetMaxPathLength()
Definition GenericPlatformMisc.h:622
static FORCEINLINE int GetBatteryLevel()
Definition GenericPlatformMisc.h:1493
static FORCEINLINE void Prefetch(const void *Ptr)
Definition GenericPlatformMisc.h:1443
static bool AllowLocalCaching()
Definition GenericPlatformMisc.h:857
static FORCEINLINE void TagBuffer(const char *Label, uint32 Category, const void *Buffer, size_t BufferSize)
Definition GenericPlatformMisc.h:970
static bool HasProjectPersistentDownloadDir()
Definition GenericPlatformMisc.h:1256
static int32 GetMaxSyncInterval()
Definition GenericPlatformMisc.h:1917
static FORCEINLINE void Prefetch(const void *Ptr, int32 Offset)
Definition GenericPlatformMisc.h:1461
static ECrashHandlingType SetCrashHandlingType(ECrashHandlingType Type)
Definition GenericPlatformMisc.h:600
static void BeginEnterBackgroundEvent(const TCHAR *Text)
Definition GenericPlatformMisc.h:949
static bool StartNewPGOCollection(const FString &AbsoluteFileName)
Definition GenericPlatformMisc.h:1950
static CORE_API bool bShouldPromptForRemoteDebugging
Definition GenericPlatformMisc.h:2024
static bool SetupSyscallFilters()
Definition GenericPlatformMisc.h:2003
static void PumpMessagesOutsideMainLoop()
Definition GenericPlatformMisc.h:1843
static CORE_API bool CheckPersistentDownloadStorageSpaceAvailable(uint64 BytesRequired, bool bAttemptToUseUI)
static bool FullscreenSameAsWindowedFullscreen()
Definition GenericPlatformMisc.h:1574
static FORCEINLINE float GetBrightness()
Definition GenericPlatformMisc.h:1499
static FORCEINLINE void PrefetchBlock(const void *Ptr, int32 NumBytes)
Definition GenericPlatformMisc.h:1472
static FORCEINLINE int32 GetChunkIDFromPakchunkIndex(int32 PakchunkIndex)
Definition GenericPlatformMisc.h:1872
static void UpdateHotfixableEnsureSettings()
Definition GenericPlatformMisc.h:1431
static bool IsValidAbsolutePathFormat(const FString &Path)
Definition GenericPlatformMisc.h:1127
static bool GetPlatformScreenWarnings(TArray< FText > &PlatformScreenWarnings)
Definition GenericPlatformMisc.h:2017
static bool GetContextSwitchStats(FContextSwitchStats &OutStats, EContextSwitchFlags Flags=EContextSwitchFlags::All)
Definition GenericPlatformMisc.h:832
static bool IsCacheStorageAvailable()
Definition GenericPlatformMisc.h:847
static bool SupportsMultithreadedFileHandles()
Definition GenericPlatformMisc.h:1397
static void SetShouldPromptForRemoteDebugging(bool bInShouldPrompt)
Definition GenericPlatformMisc.h:1403
static void SetGracefulTerminationHandler()
Definition GenericPlatformMisc.h:583
static FORCEINLINE uint32 GetLastError()
Definition GenericPlatformMisc.h:894
static struct FAsyncIOSystemBase * GetPlatformSpecificAsyncIOSystem()
Definition GenericPlatformMisc.h:1206
static void PlatformHandleSplashScreen(bool ShowSplashScreen=false)
Definition GenericPlatformMisc.h:575
static bool WasLaunchedStreaming()
Definition GenericPlatformMisc.h:1987
static FORCEINLINE void EndNamedEvent()
Definition GenericPlatformMisc.h:926
static CORE_API IPlatformCompression * GetPlatformCompression()
static void EnableScreenTimeout()
Definition GenericPlatformMisc.h:1996
static int32 GetMaxRefreshRate()
Definition GenericPlatformMisc.h:1901
UE_DEPRECATED(4.18, "FPaths::SetOverrideGameDir() has been superseded by FPaths::SetOverrideProjectDir().") static FORCEINLINE void SetOverrideGameDir(const FString &InOverrideDir)
Definition GenericPlatformMisc.h:1516
static FORCEINLINE bool Expand16BitIndicesTo32BitOnLoad()
Definition GenericPlatformMisc.h:1881
static bool GetBlockingIOStats(FProcessIOStats &OutStats, EInputOutputFlags Flags=EInputOutputFlags::All)
Definition GenericPlatformMisc.h:820
static CORE_API bool bPromptForRemoteDebugOnEnsure
Definition GenericPlatformMisc.h:2026
static ENetworkConnectionType GetNetworkConnectionType()
Definition GenericPlatformMisc.h:1620
static bool OsExecute(const TCHAR *CommandType, const TCHAR *Command, const TCHAR *CommandLine=NULL)
Definition GenericPlatformMisc.h:1326
static void SetMemoryWarningHandler(void(*Handler)(const FGenericMemoryWarningContext &Context))
Definition GenericPlatformMisc.h:882
static void PlatformTearDown()
Definition GenericPlatformMisc.h:580
static bool HasActiveWiFiConnection()
Definition GenericPlatformMisc.h:1602
static void TriggerMobileHaptics()
Definition GenericPlatformMisc.h:1803
static FORCEINLINE void BeginNamedEventFrame()
Definition GenericPlatformMisc.h:917
static FORCEINLINE void ChooseHDRDeviceAndColorGamut(uint32 DeviceId, uint32 DisplayNitLevel, EDisplayOutputFormat &OutputDevice, EDisplayColorGamut &ColorGamut)
Definition GenericPlatformMisc.h:1868
static void HidePlatformStartupScreen()
Definition GenericPlatformMisc.h:1858
static void PumpMessagesForSlowTask()
Definition GenericPlatformMisc.h:1847
static void EnsureNetworkIfNecessary()
Definition GenericPlatformMisc.h:1625
static FORCEINLINE bool Is64bitOperatingSystem()
Definition GenericPlatformMisc.h:1117
static bool SupportsMessaging()
Definition GenericPlatformMisc.h:837
static void PromptForRemoteDebugging(bool bIsEnsure)
Definition GenericPlatformMisc.h:1439
static FORCEINLINE void GetNetworkFileCustomData(TMap< FString, FString > &OutCustomPlatformData)
Definition GenericPlatformMisc.h:1889
static bool SupportsDeviceCheckToken()
Definition GenericPlatformMisc.h:1821
static bool GetPageFaultStats(FPageFaultStats &OutStats, EPageFaultFlags Flags=EPageFaultFlags::All)
Definition GenericPlatformMisc.h:808
static FORCEINLINE void ShutdownTaggedStorage()
Definition GenericPlatformMisc.h:963
static FORCEINLINE bool SupportsBrightness()
Definition GenericPlatformMisc.h:1500
static void SetLastError(uint32 ErrorCode)
Definition GenericPlatformMisc.h:899
static FORCEINLINE bool UseHDRByDefault()
Definition GenericPlatformMisc.h:1863
static bool IsRunningInCloud()
Definition GenericPlatformMisc.h:1979
static FORCEINLINE bool SupportsBackbufferSampling()
Definition GenericPlatformMisc.h:1893
static void ShareURL(const FString &URL, const FText &Description, int32 LocationHintX, int32 LocationHintY)
Definition GenericPlatformMisc.h:1817
static bool IsEnsureAllowed()
Definition GenericPlatformMisc.h:1422
static void PumpEssentialAppMessages()
Definition GenericPlatformMisc.h:1854
static void PrepareMobileHaptics(EMobileHapticsType Type)
Definition GenericPlatformMisc.h:1795
static CORE_API EDeviceScreenOrientation AllowedDeviceOrientation
Definition GenericPlatformMisc.h:2029
static void NormalizePath(FString &InPath)
Definition GenericPlatformMisc.h:1136
static const float GetVirtualKeyboardInputHeight()
Definition GenericPlatformMisc.h:2008
static bool IsLocalPrintThreadSafe()
Definition GenericPlatformMisc.h:1044
Definition Guid.h:109
Definition GenericPlatformMisc.h:428
Definition CoreMiscDefines.h:470
Definition GenericPlatformMisc.h:458
Definition GenericPlatformMisc.h:418
Definition GenericPlatformMisc.h:349