UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
StringTableCore.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Containers/Map.h"
7#include "CoreTypes.h"
14#include "Logging/LogMacros.h"
19#include "Templates/Function.h"
22#include "UObject/NameTypes.h"
23
24#include <atomic>
25
26class FStringTable;
27class UStringTable;
28
30
78
80class FStringTable : public TSharedFromThis<FStringTable, ESPMode::ThreadSafe>
81{
82public:
88
91
94
97
100
102 CORE_API bool IsLoaded() const;
103
105 CORE_API void IsLoaded(const bool bInIsLoaded);
106
108 CORE_API bool IsInternal() const;
109
111 CORE_API void IsInternal(const bool bInIsInternal);
112
114 CORE_API FString GetNamespace() const;
115
118
120 CORE_API bool GetSourceString(const FTextKey& InKey, FString& OutSourceString) const;
121
123 CORE_API void SetSourceString(const FTextKey& InKey, const FString& InSourceString);
124
127
129 CORE_API void EnumerateSourceStrings(const TFunctionRef<bool(const FString&, const FString&)>& InEnumerator) const;
130 CORE_API void EnumerateKeysAndSourceStrings(const TFunctionRef<bool(const FTextKey&, const FString&)>& InEnumerator) const;
131
134
137
139 CORE_API bool FindKey(const FStringTableEntryConstRef& InEntry, FString& OutKey) const;
141
143 CORE_API FString GetMetaData(const FTextKey& InKey, const FName InMetaDataId) const;
144
146 CORE_API void SetMetaData(const FTextKey& InKey, const FName InMetaDataId, const FString& InMetaDataValue);
147
150
152 CORE_API void EnumerateMetaData(const FTextKey& InKey, const TFunctionRef<bool(FName, const FString&)>& InEnumerator) const;
153
156
158 CORE_API void ClearMetaData(const int32 InSlack = 0);
159
161 CORE_API void Serialize(FArchive& Ar);
162
164 CORE_API bool ExportStrings(const FString& InFilename) const;
165
167 CORE_API bool ImportStrings(const FString& InFilename);
168
169private:
171 UStringTable* OwnerAsset;
172
174 bool bIsLoaded;
175
177 bool bIsInternal;
178
180 FTextKey TableNamespace;
181
184
186 mutable FTransactionallySafeCriticalSection KeyMappingCS;
187
189 typedef TMap<FName, FString> FMetaDataMap;
190 TMap<FTextKey, FMetaDataMap> KeysToMetaData;
191
193 mutable FTransactionallySafeCriticalSection KeysToMetaDataCS;
194};
195
198{
199public:
217
224
230 {
232 && DeferFindOrLoad.load(std::memory_order_relaxed) <= 0
234 }
235
242 {
244
245 if (InstancePtr)
246 {
248 }
249
250 // No bridge instance - just say it's already loaded
252 {
254 }
255 return INDEX_NONE;
256 }
257
271
282
291
300
306
312
313protected:
314 virtual ~IStringTableEngineBridge() = default;
315
324
327
329 static CORE_API std::atomic<int8> DeferFindOrLoad;
330};
331
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
::FCriticalSection FTransactionallySafeCriticalSection
Definition TransactionallySafeCriticalSection.h:16
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
static CORE_API bool IsAvailable()
Definition Internationalization.cpp:26
Definition NameTypes.h:617
Definition StringTableCore.h:33
CORE_API const FString & GetSourceString() const
Definition StringTableCore.cpp:65
static CORE_API const FString & GetPlaceholderSourceString()
Definition StringTableCore.cpp:84
static FStringTableEntryRef NewStringTableEntry(FStringTableConstRef InOwnerTable, FString InSourceString, FTextId InDisplayStringId)
Definition StringTableCore.h:36
CORE_API FTextId GetDisplayStringId() const
Definition StringTableCore.cpp:79
CORE_API bool IsOwned() const
Definition StringTableCore.cpp:50
CORE_API FStringTableEntry()
Definition StringTableCore.cpp:39
CORE_API bool IsOwnedBy(const FStringTable &InStringTable) const
Definition StringTableCore.cpp:60
CORE_API void Disown()
Definition StringTableCore.cpp:55
CORE_API FTextConstDisplayStringPtr GetDisplayString() const
Definition StringTableCore.cpp:70
Definition StringTableCore.h:81
CORE_API void EnumerateKeysAndSourceStrings(const TFunctionRef< bool(const FTextKey &, const FString &)> &InEnumerator) const
Definition StringTableCore.cpp:208
CORE_API bool ExportStrings(const FString &InFilename) const
Definition StringTableCore.cpp:411
CORE_API FString GetMetaData(const FTextKey &InKey, const FName InMetaDataId) const
Definition StringTableCore.cpp:270
CORE_API void RemoveMetaData(const FTextKey &InKey, const FName InMetaDataId)
Definition StringTableCore.cpp:290
CORE_API bool IsInternal() const
Definition StringTableCore.cpp:124
CORE_API void ClearMetaData(const FTextKey &InKey)
Definition StringTableCore.cpp:322
static FStringTableRef NewStringTable()
Definition StringTableCore.h:84
CORE_API void ClearSourceStrings(const int32 InSlack=0)
Definition StringTableCore.cpp:221
CORE_API ~FStringTable()
Definition StringTableCore.cpp:98
CORE_API FString GetNamespace() const
Definition StringTableCore.cpp:134
CORE_API void SetMetaData(const FTextKey &InKey, const FName InMetaDataId, const FString &InMetaDataValue)
Definition StringTableCore.cpp:282
CORE_API void SetSourceString(const FTextKey &InKey, const FString &InSourceString)
Definition StringTableCore.cpp:171
CORE_API void SetNamespace(const FTextKey &InNamespace)
Definition StringTableCore.cpp:139
CORE_API bool ImportStrings(const FString &InFilename)
Definition StringTableCore.cpp:477
CORE_API UStringTable * GetOwnerAsset() const
Definition StringTableCore.cpp:104
CORE_API void SetOwnerAsset(UStringTable *InOwnerAsset)
Definition StringTableCore.cpp:109
CORE_API void EnumerateSourceStrings(const TFunctionRef< bool(const FString &, const FString &)> &InEnumerator) const
Definition StringTableCore.cpp:200
CORE_API bool IsLoaded() const
Definition StringTableCore.cpp:114
CORE_API bool GetSourceString(const FTextKey &InKey, FString &OutSourceString) const
Definition StringTableCore.cpp:158
CORE_API FStringTable()
Definition StringTableCore.cpp:91
CORE_API void RemoveSourceString(const FTextKey &InKey)
Definition StringTableCore.cpp:187
CORE_API FStringTableEntryConstPtr FindEntry(const FTextKey &InKey) const
Definition StringTableCore.cpp:235
CORE_API bool FindKey(const FStringTableEntryConstRef &InEntry, FString &OutKey) const
Definition StringTableCore.cpp:241
CORE_API void EnumerateMetaData(const FTextKey &InKey, const TFunctionRef< bool(FName, const FString &)> &InEnumerator) const
Definition StringTableCore.cpp:305
Definition StructuredArchiveSlots.h:52
Definition TextKey.h:163
Definition TextKey.h:75
Definition StringTableCore.h:198
virtual bool IsStringTableFromAssetImpl(const FName InTableId)=0
static CORE_API IStringTableEngineBridge * InstancePtr
Definition StringTableCore.h:326
virtual void RedirectStringTableAssetImpl(FName &InOutTableId)=0
virtual bool IsStringTableAssetBeingReplacedImpl(const UStringTable *InStringTableAsset)=0
static CORE_API std::atomic< int8 > DeferFindOrLoad
Definition StringTableCore.h:329
static bool IsStringTableAssetBeingReplaced(const UStringTable *InStringTableAsset)
Definition StringTableCore.h:308
static int32 LoadStringTableAsset(const FName InTableId, FLoadStringTableAssetCallback InLoadedCallback=FLoadStringTableAssetCallback())
Definition StringTableCore.h:241
virtual bool CanFindOrLoadStringTableAssetImpl()=0
virtual void FullyLoadStringTableAssetImpl(FName &InOutTableId)=0
static void FullyLoadStringTableAsset(FName &InOutTableId)
Definition StringTableCore.h:262
virtual void CollectStringTableAssetSearchableNameImpl(const FName InTableId, const FTextKey InKey, const FArchive &Ar)=0
static void CollectStringTableAssetReferences(FName &InOutTableId, FStructuredArchive::FSlot Slot)
Definition StringTableCore.h:284
static bool IsStringTableFromAsset(const FName InTableId)
Definition StringTableCore.h:302
TFunction< void(FName, FName)> FLoadStringTableAssetCallback
Definition StringTableCore.h:223
static void RedirectStringTableAsset(FName &InOutTableId)
Definition StringTableCore.h:273
virtual void CollectStringTableAssetReferencesImpl(FName &InOutTableId, FStructuredArchive::FSlot Slot)=0
virtual int32 LoadStringTableAssetImpl(const FName InTableId, FLoadStringTableAssetCallback InLoadedCallback)=0
virtual ~IStringTableEngineBridge()=default
static void CollectStringTableAssetSearchableName(const FName InTableId, const FTextKey InKey, const FArchive &Ar)
Definition StringTableCore.h:293
static bool CanFindOrLoadStringTableAsset()
Definition StringTableCore.h:229
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SharedPointer.h:1640
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition StringTable.h:29
Definition StringTableCore.h:334
static CORE_API void RedirectTableIdAndKey(FName &InOutTableId, FTextKey &InOutKey)
Definition StringTableCore.cpp:667
static CORE_API void RedirectTableId(FName &InOutTableId)
Definition StringTableCore.cpp:638
static CORE_API void RedirectKey(const FName InTableId, FTextKey &InOutKey)
Definition StringTableCore.cpp:654
static CORE_API void InitStringTableRedirects()
Definition StringTableCore.cpp:586
Definition StringTableCore.h:204
~FScopedDeferFindOrLoad()
Definition StringTableCore.h:210
FScopedDeferFindOrLoad()
Definition StringTableCore.h:205