UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TextKey.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"
11
12#ifndef UE_TEXTKEY_STORE_EMBEDDED_HASH
13 #define UE_TEXTKEY_STORE_EMBEDDED_HASH (0)
14#endif
15
16namespace TextKeyUtil
17{
19 CORE_API uint32 HashString(const FTCHARToUTF16& InStr);
21 {
22 return HashCombine(HashString(InStr), InBaseHash);
23 }
24
26 inline uint32 HashString(const TCHAR* InStr)
27 {
29 return HashString(UTF16String);
30 }
31 inline uint32 HashString(const TCHAR* InStr, const uint32 InBaseHash)
32 {
34 return HashString(UTF16String, InBaseHash);
35 }
36
38 inline uint32 HashString(const TCHAR* InStr, const int32 InStrLen)
39 {
41 return HashString(UTF16String);
42 }
43 inline uint32 HashString(const TCHAR* InStr, const int32 InStrLen, const uint32 InBaseHash)
44 {
46 return HashString(UTF16String, InBaseHash);
47 }
48
50 UE_FORCEINLINE_HINT uint32 HashString(const FString& InStr)
51 {
52 return HashString(*InStr, InStr.Len());
53 }
54 UE_FORCEINLINE_HINT uint32 HashString(const FString& InStr, const uint32 InBaseHash)
55 {
56 return HashString(*InStr, InStr.Len(), InBaseHash);
57 }
58
61 {
62 return HashString(InStr.GetData(), InStr.Len());
63 }
65 {
66 return HashString(InStr.GetData(), InStr.Len(), InBaseHash);
67 }
68}
69
75{
76public:
77 FTextKey() = default;
80 CORE_API FTextKey(const FString& InStr);
81
83 UE_DEPRECATED(5.5, "GetChars is deprecated as FTextKey may now store its internal data as UTF-8. Use ToString/AppendString instead.")
84 CORE_API const TCHAR* GetChars() const;
85
87 CORE_API FString ToString() const;
88 CORE_API void ToString(FString& Out) const;
89 CORE_API void ToString(FStringBuilderBase& Out) const;
90 CORE_API void AppendString(FString& Out) const;
92
94 friend UE_FORCEINLINE_HINT bool operator==(const FTextKey& A, const FTextKey& B)
95 {
96 return A.Index == B.Index;
97 }
98
100 friend UE_FORCEINLINE_HINT bool operator!=(const FTextKey& A, const FTextKey& B)
101 {
102 return A.Index != B.Index;
103 }
104
106 friend CORE_API uint32 GetTypeHash(const FTextKey& A);
107
110
113
116
119
122
125
128 {
129 return Index == INDEX_NONE;
130 }
131
133 inline void Reset()
134 {
136#if UE_TEXTKEY_STORE_EMBEDDED_HASH
137 StrHash = 0;
138#endif
139 }
140
142 static CORE_API void CompactDataStructures();
143
145 static CORE_API void TearDown();
146
147private:
150
151#if UE_TEXTKEY_STORE_EMBEDDED_HASH
153 uint32 StrHash = 0;
154#endif
155
156 friend class FTextKeyState;
157};
158
163{
164public:
165 FTextId() = default;
166
168 : Namespace(InNamespace)
169 , Key(InKey)
170 {
171 }
172
175 {
176 return Namespace;
177 }
178
181 {
182 return Key;
183 }
184
186 friend UE_FORCEINLINE_HINT bool operator==(const FTextId& A, const FTextId& B)
187 {
188 return A.Namespace == B.Namespace && A.Key == B.Key;
189 }
190
192 friend UE_FORCEINLINE_HINT bool operator!=(const FTextId& A, const FTextId& B)
193 {
194 return A.Namespace != B.Namespace || A.Key != B.Key;
195 }
196
199 {
200 return HashCombine(GetTypeHash(A.Namespace), GetTypeHash(A.Key));
201 }
202
205 {
206 Namespace.SerializeAsString(Ar);
207 Key.SerializeAsString(Ar);
208 }
209
212 {
213 Namespace.SerializeWithHash(Ar);
214 Key.SerializeWithHash(Ar);
215 }
216
219 {
220 Namespace.SerializeDiscardHash(Ar);
221 Key.SerializeDiscardHash(Ar);
222 }
223
226 {
228
229 Namespace.SerializeAsString(Record.EnterField(TEXT("Namespace")));
230 Key.SerializeAsString(Record.EnterField(TEXT("Key")));
231 }
232
235 {
237
238 Namespace.SerializeWithHash(Record.EnterField(TEXT("Namespace")));
239 Key.SerializeWithHash(Record.EnterField(TEXT("Key")));
240 }
241
244 {
246
247 Namespace.SerializeDiscardHash(Record.EnterField(TEXT("Namespace")));
248 Key.SerializeDiscardHash(Record.EnterField(TEXT("Key")));
249 }
250
253 {
254 return Namespace.IsEmpty() && Key.IsEmpty();
255 }
256
258 inline void Reset()
259 {
260 Namespace.Reset();
261 Key.Reset();
262 }
263
264private:
265 FTextKey Namespace;
266 FTextKey Key;
267};
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#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
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition StructuredArchiveSlots.h:144
Definition StructuredArchiveSlots.h:52
UE_API FStructuredArchiveRecord EnterRecord()
Definition StructuredArchiveSlots.h:252
Definition TextKey.h:163
friend UE_FORCEINLINE_HINT uint32 GetTypeHash(const FTextId &A)
Definition TextKey.h:198
void SerializeAsString(FStructuredArchiveSlot Slot)
Definition TextKey.h:225
UE_FORCEINLINE_HINT FTextKey GetNamespace() const
Definition TextKey.h:174
void SerializeDiscardHash(FArchive &Ar)
Definition TextKey.h:218
friend UE_FORCEINLINE_HINT bool operator==(const FTextId &A, const FTextId &B)
Definition TextKey.h:186
friend UE_FORCEINLINE_HINT bool operator!=(const FTextId &A, const FTextId &B)
Definition TextKey.h:192
UE_FORCEINLINE_HINT bool IsEmpty() const
Definition TextKey.h:252
void Reset()
Definition TextKey.h:258
void SerializeDiscardHash(FStructuredArchiveSlot Slot)
Definition TextKey.h:243
UE_FORCEINLINE_HINT FTextKey GetKey() const
Definition TextKey.h:180
void SerializeWithHash(FStructuredArchiveSlot Slot)
Definition TextKey.h:234
void SerializeWithHash(FArchive &Ar)
Definition TextKey.h:211
FTextId(const FTextKey &InNamespace, const FTextKey &InKey)
Definition TextKey.h:167
FTextId()=default
void SerializeAsString(FArchive &Ar)
Definition TextKey.h:204
Definition TextKey.cpp:127
Definition TextKey.h:75
CORE_API void SerializeAsString(FArchive &Ar)
Definition TextKey.cpp:847
CORE_API void SerializeWithHash(FArchive &Ar)
Definition TextKey.cpp:871
UE_FORCEINLINE_HINT bool IsEmpty() const
Definition TextKey.h:127
CORE_API const TCHAR * GetChars() const
Definition TextKey.cpp:794
CORE_API void SerializeDiscardHash(FArchive &Ar)
Definition TextKey.cpp:901
CORE_API void AppendString(FString &Out) const
Definition TextKey.cpp:820
friend UE_FORCEINLINE_HINT bool operator!=(const FTextKey &A, const FTextKey &B)
Definition TextKey.h:100
CORE_API FString ToString() const
Definition TextKey.cpp:801
static CORE_API void CompactDataStructures()
Definition TextKey.cpp:1040
FTextKey()=default
void Reset()
Definition TextKey.h:133
static CORE_API void TearDown()
Definition TextKey.cpp:1045
friend CORE_API uint32 GetTypeHash(const FTextKey &A)
Definition TextKey.cpp:836
Definition StringConv.h:832
Definition TextKey.cpp:660
U16 Index
Definition radfft.cpp:71