UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnalyticsConversion.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6
10template <typename T>
11inline decltype(auto) AnalyticsConversionToString(const T& Value)
12{
13 return LexToString(Value);
14}
16inline FString AnalyticsConversionToString(FString&& Value)
17{
18 return MoveTemp(Value);
19}
20inline FString AnalyticsConversionToString(const FString& Value)
21{
22 return Value;
23}
24
26{
27 return FString(Value);
28}
29
30#define ANALYTICS_MAX_FLOAT_VALUE_BEFORE_EXPONENTIAL_NOTATION (1.0e+15F)
31
33{
34 if (FPlatformMath::IsFinite(Value))
35 {
37 {
38 return FString::Printf(TEXT("%.9e"), Value);
39 }
40 else
41 {
43 }
44 }
45 else
46 {
47 // This function exists to convert numbers to Json-compatible strings for analytics. Json doesn't support INF or NAN so we will just send null
48 return "null";
49 }
50}
51inline FString AnalyticsConversionToString(double Value)
52{
53 if (FPlatformMath::IsFinite(Value))
54 {
56 {
57 return FString::Printf(TEXT("%.9e"), Value);
58 }
59 else
60 {
62 }
63 }
64 else
65 {
66 // This function exists to convert numbers to Json-compatible strings for analytics. Json doesn't support INF or NAN so we will just send null
67 return "null";
68 }
69}
70
72template <typename T, typename AllocatorType>
74{
75 FString Result;
76 // Serialize the array into "value1,value2,..." format
77 for (const T& Value : ValueArray)
78 {
80 Result += TEXT(",");
81 }
82 // Remove the trailing comma (LeftChop will ensure an empty container won't crash here).
84 return Result;
85}
86
88template <typename T>
90{
91 FString Result;
92 // Serialize the array into "value1,value2,..." format
93 for (const T& Value : ValueArray)
94 {
96 Result += TEXT(",");
97 }
98 // Remove the trailing comma (LeftChop will ensure an empty container won't crash here).
100 return Result;
101}
102
104template<typename KeyType, typename ValueType, typename Allocator, typename KeyFuncs>
106{
107 FString Result;
108 // Serialize the map into "key:value,..." format
109 for (auto& KVP : ValueMap)
110 {
111 Result += AnalyticsConversionToString(KVP.Key);
112 Result += TEXT(":");
113 Result += AnalyticsConversionToString(KVP.Value);
114 Result += TEXT(",");
115 }
116 // Remove the trailing comma (LeftChop will ensure an empty container won't crash here).
118 return Result;
119}
120
123{
124 template <typename T>
125 inline decltype(auto) ToString(T&& Value)
126 {
128 }
129}
#define ANALYTICS_MAX_FLOAT_VALUE_BEFORE_EXPONENTIAL_NOTATION
Definition AnalyticsConversion.h:30
decltype(auto) AnalyticsConversionToString(const T &Value)
Definition AnalyticsConversion.h:11
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const TCHAR * LexToString(EAnalyticsRecordEventMode Mode)
Definition IAnalyticsProvider.cpp:5
StringType LexToSanitizedString(const T &Value)
Definition UnrealString.h:180
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition ArrayView.h:139
Definition Array.h:670
Definition UnrealString.h.inl:34
void LeftChopInline(int32 Count, EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition UnrealString.h.inl:1010
Definition AnalyticsConversion.h:123