UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ITextFormatArgumentModifier.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
6#include "Misc/Crc.h"
9
12
17
24{
25public:
28 : StringPtr(TEXT(""))
29 , StringLen(0)
30 , InternalString()
31 {
32 }
33
36 : StringPtr(nullptr)
37 , StringLen(0)
38 , InternalString(MoveTemp(InStr))
39 {
40 StringPtr = *InternalString;
41 StringLen = InternalString.Len();
42 }
43
46 : StringPtr(nullptr)
47 , StringLen(0)
48 , InternalString(InStr)
49 {
50 StringPtr = *InternalString;
51 StringLen = InternalString.Len();
52 }
53
59
62 {
64 }
65
69 , InternalString(Other.InternalString)
70 {
71 if (Other.StringPtr == *Other.InternalString)
72 {
73 StringPtr = *InternalString;
74 }
75 }
76
80 , InternalString(MoveTemp(Other.InternalString))
81 {
82 }
83
85 {
86 if (this != &Other)
87 {
89 StringLen = Other.StringLen;
90 InternalString = Other.InternalString;
91
92 if (Other.StringPtr == *Other.InternalString)
93 {
94 StringPtr = *InternalString;
95 }
96 }
97 return *this;
98 }
99
101 {
102 if (this != &Other)
103 {
105 StringLen = Other.StringLen;
106 InternalString = MoveTemp(Other.InternalString);
107 }
108 return *this;
109 }
110
112 {
113 return FCrc::MemCrc32(InStr.StringPtr, sizeof(TCHAR) * InStr.StringLen);
114 }
115
118
121
122private:
124 FString InternalString;
125
130 , InternalString()
131 {
132 }
133};
134
135inline bool operator==(const FTextFormatString& LHS, const FTextFormatString& RHS)
136{
137 return LHS.StringLen == RHS.StringLen
138 && FCString::Strncmp(LHS.StringPtr, RHS.StringPtr, LHS.StringLen) == 0;
139}
140
141inline bool operator!=(const FTextFormatString& LHS, const FTextFormatString& RHS)
142{
143 return LHS.StringLen != RHS.StringLen
144 || FCString::Strncmp(LHS.StringPtr, RHS.StringPtr, LHS.StringLen) != 0;
145}
146
147inline bool operator<(const FTextFormatString& LHS, const FTextFormatString& RHS)
148{
149 if (LHS.StringLen < RHS.StringLen)
150 {
151 return true;
152 }
153 if (LHS.StringLen > RHS.StringLen)
154 {
155 return false;
156 }
157 return FCString::Strncmp(LHS.StringPtr, RHS.StringPtr, LHS.StringLen) < 0;
158}
159
#define TEXT(x)
Definition Platform.h:1272
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
bool operator<(const FTextFormatString &LHS, const FTextFormatString &RHS)
Definition ITextFormatArgumentModifier.h:147
bool operator==(const FTextFormatString &LHS, const FTextFormatString &RHS)
Definition ITextFormatArgumentModifier.h:135
bool operator!=(const FTextFormatString &LHS, const FTextFormatString &RHS)
Definition ITextFormatArgumentModifier.h:141
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Text.h:928
Definition ITextFormatArgumentModifier.h:24
static FTextFormatString MakeReference(const TCHAR *InStr)
Definition ITextFormatArgumentModifier.h:55
friend uint32 GetTypeHash(const FTextFormatString &InStr)
Definition ITextFormatArgumentModifier.h:111
FTextFormatString(FString InStr)
Definition ITextFormatArgumentModifier.h:35
const TCHAR * StringPtr
Definition ITextFormatArgumentModifier.h:117
FTextFormatString(const FTextFormatString &Other)
Definition ITextFormatArgumentModifier.h:66
FTextFormatString(const TCHAR *InStr)
Definition ITextFormatArgumentModifier.h:45
FTextFormatString & operator=(FTextFormatString &&Other)
Definition ITextFormatArgumentModifier.h:100
FTextFormatString()
Definition ITextFormatArgumentModifier.h:27
static FTextFormatString MakeReference(const TCHAR *InStr, const int32 InLen)
Definition ITextFormatArgumentModifier.h:61
FTextFormatString & operator=(const FTextFormatString &Other)
Definition ITextFormatArgumentModifier.h:84
int32 StringLen
Definition ITextFormatArgumentModifier.h:120
FTextFormatString(FTextFormatString &&Other)
Definition ITextFormatArgumentModifier.h:77
Definition ITextFormatArgumentModifier.h:164
virtual bool Validate(const FCultureRef &InCulture, TArray< FString > &OutValidationErrors) const =0
virtual void GetFormatArgumentNames(TArray< FString > &OutArgumentNames) const =0
static CORE_API bool ParseValueArgs(const FTextFormatString &InArgsString, TArray< FTextFormatString > &OutArgValues, const TCHAR InArgSeparator=TEXT(','))
Definition TextFormatArgumentModifier.cpp:110
virtual ~ITextFormatArgumentModifier()
Definition ITextFormatArgumentModifier.h:167
virtual void Evaluate(const FFormatArgumentValue &InValue, const FPrivateTextFormatArguments &InFormatArgs, FString &OutResult) const =0
virtual void EstimateLength(int32 &OutLength, bool &OutUsesFormatArgs) const =0
static CORE_API bool ParseKeyValueArgs(const FTextFormatString &InArgsString, TSortedMap< FTextFormatString, FTextFormatString > &OutArgKeyValues, const TCHAR InValueSeparator=TEXT('='), const TCHAR InArgSeparator=TEXT(','))
Definition TextFormatArgumentModifier.cpp:17
Definition Array.h:670
Definition SharedPointer.h:153
Definition SortedMap.h:20
static UE_FORCEINLINE_HINT uint32 MemCrc32(const void *Data, int32 Length, uint32 CRC=0)
Definition Crc.h:31
Definition TextFormatter.cpp:340
static int32 Strlen(const CharType *String)
Definition CString.h:1047
static UE_FORCEINLINE_HINT int32 Strncmp(const CharType *String1, const CharType *String2, SIZE_T Count)
Definition CString.h:1024