Skip to content

Commit 0afd01f

Browse files
Cleanup some of the unordered_map usage. (#432)
1 parent 5ba4e92 commit 0afd01f

8 files changed

Lines changed: 86 additions & 105 deletions

File tree

UnleashedRecomp/locale/locale.cpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4242
*/
4343

44-
std::unordered_map<std::string, std::unordered_map<ELanguage, std::string>> g_locale =
44+
std::unordered_map<std::string_view, std::unordered_map<ELanguage, std::string>> g_locale =
4545
{
4646
{
4747
"Options_Header_Name",
@@ -777,22 +777,18 @@ std::unordered_map<std::string, std::unordered_map<ELanguage, std::string>> g_lo
777777
}
778778
};
779779

780-
std::string& Localise(const char* key)
780+
std::string& Localise(const std::string_view& key)
781781
{
782-
if (!g_locale.count(key))
783-
return g_localeMissing;
784-
785-
if (!g_locale[key].count(Config::Language))
782+
auto localeFindResult = g_locale.find(key);
783+
if (localeFindResult != g_locale.end())
786784
{
787-
if (g_locale[key].count(ELanguage::English))
788-
{
789-
return g_locale[key][ELanguage::English];
790-
}
791-
else
792-
{
793-
return g_localeMissing;
794-
}
785+
auto languageFindResult = localeFindResult->second.find(Config::Language);
786+
if (languageFindResult == localeFindResult->second.end())
787+
languageFindResult = localeFindResult->second.find(ELanguage::English);
788+
789+
if (languageFindResult != localeFindResult->second.end())
790+
return languageFindResult->second;
795791
}
796792

797-
return g_locale[key][Config::Language];
793+
return g_localeMissing;
798794
}

UnleashedRecomp/locale/locale.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ enum class ELanguage : uint32_t
1212

1313
inline std::string g_localeMissing = "<missing string>";
1414

15-
extern std::unordered_map<std::string, std::unordered_map<ELanguage, std::string>> g_locale;
15+
extern std::unordered_map<std::string_view, std::unordered_map<ELanguage, std::string>> g_locale;
1616

17-
std::string& Localise(const char* key);
17+
std::string& Localise(const std::string_view& key);

UnleashedRecomp/os/win32/registry_win32.inl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#include <os/registry.h>
2-
#include <unordered_map>
32

43
inline const wchar_t* g_registryRoot = L"Software\\UnleashedRecomp";
54

UnleashedRecomp/ui/button_guide.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ void ButtonGuide::Draw()
256256
if (btn.Visibility && !*btn.Visibility)
257257
continue;
258258

259-
auto str = Localise(btn.Name.c_str()).c_str();
259+
auto str = Localise(btn.Name).c_str();
260260
auto iconWidth = Scale(g_iconWidths[btn.Icon]);
261261
auto iconHeight = Scale(g_iconHeights[btn.Icon]);
262262
auto textWidth = g_fntNewRodin->CalcTextSizeA(fontSize, FLT_MAX, 0, str).x;
@@ -283,7 +283,7 @@ void ButtonGuide::Draw()
283283
if (btn.Visibility && !*btn.Visibility)
284284
continue;
285285

286-
auto str = Localise(btn.Name.c_str()).c_str();
286+
auto str = Localise(btn.Name).c_str();
287287
auto iconWidth = Scale(g_iconWidths[btn.Icon]);
288288
auto iconHeight = Scale(g_iconHeights[btn.Icon]);
289289
auto textWidth = g_fntNewRodin->CalcTextSizeA(fontSize, FLT_MAX, 0, str).x;

UnleashedRecomp/ui/installer_wizard.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1399,7 +1399,7 @@ static void DrawNavigationButton()
13991399

14001400
float squashRatio;
14011401
constexpr float NAV_BUTTON_MAX_TEXT_WIDTH = 90.0f;
1402-
const char *nextButtonKey = "Installer_Button_Next";
1402+
std::string_view nextButtonKey = "Installer_Button_Next";
14031403
if (skipButton)
14041404
{
14051405
nextButtonKey = "Installer_Button_Skip";

UnleashedRecomp/ui/options_menu_thumbnails.cpp

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,11 @@
5959

6060
#define VALUE_THUMBNAIL_MAP(type) std::unordered_map<type, std::unique_ptr<GuestTexture>>
6161

62-
static std::unordered_map<std::string_view, std::unique_ptr<GuestTexture>> g_namedThumbnails;
62+
static std::unique_ptr<GuestTexture> g_defaultThumbnail;
63+
64+
static std::unique_ptr<GuestTexture> g_controlTutorialXBThumbnail;
65+
static std::unique_ptr<GuestTexture> g_controlTutorialPSThumbnail;
66+
6367
static std::unordered_map<const IConfigDef*, std::unique_ptr<GuestTexture>> g_configThumbnails;
6468

6569
static VALUE_THUMBNAIL_MAP(ETimeOfDayTransition) g_timeOfDayTransitionThumbnails;
@@ -76,10 +80,10 @@ static VALUE_THUMBNAIL_MAP(EUIAlignmentMode) g_uiAlignmentThumbnails;
7680

7781
void LoadThumbnails()
7882
{
79-
g_namedThumbnails["Default"] = LOAD_ZSTD_TEXTURE(g_default);
80-
g_namedThumbnails["WindowSize"] = LOAD_ZSTD_TEXTURE(g_window_size);
81-
g_namedThumbnails["ControlTutorialXB"] = LOAD_ZSTD_TEXTURE(g_control_tutorial_xb);
82-
g_namedThumbnails["ControlTutorialPS"] = LOAD_ZSTD_TEXTURE(g_control_tutorial_ps);
83+
g_defaultThumbnail = LOAD_ZSTD_TEXTURE(g_default);
84+
85+
g_controlTutorialXBThumbnail = LOAD_ZSTD_TEXTURE(g_control_tutorial_xb);
86+
g_controlTutorialPSThumbnail = LOAD_ZSTD_TEXTURE(g_control_tutorial_ps);
8387

8488
g_configThumbnails[&Config::Language] = LOAD_ZSTD_TEXTURE(g_language);
8589
g_configThumbnails[&Config::VoiceLanguage] = LOAD_ZSTD_TEXTURE(g_voice_language);
@@ -109,6 +113,7 @@ void LoadThumbnails()
109113
g_configThumbnails[&Config::AspectRatio] = LOAD_ZSTD_TEXTURE(g_aspect_ratio);
110114
g_configThumbnails[&Config::ResolutionScale] = LOAD_ZSTD_TEXTURE(g_resolution_scale);
111115
g_configThumbnails[&Config::Fullscreen] = LOAD_ZSTD_TEXTURE(g_fullscreen);
116+
g_configThumbnails[&Config::XboxColorCorrection] = LOAD_ZSTD_TEXTURE(g_xbox_color_correction);
112117

113118
g_vsyncThumbnails[false] = LOAD_ZSTD_TEXTURE(g_vsync_off);
114119
g_vsyncThumbnails[true] = LOAD_ZSTD_TEXTURE(g_vsync_on);
@@ -143,8 +148,6 @@ void LoadThumbnails()
143148

144149
g_uiAlignmentThumbnails[EUIAlignmentMode::Centre] = LOAD_ZSTD_TEXTURE(g_ui_alignment_centre);
145150
g_uiAlignmentThumbnails[EUIAlignmentMode::Edge] = LOAD_ZSTD_TEXTURE(g_ui_alignment_edge);
146-
147-
g_configThumbnails[&Config::XboxColorCorrection] = LOAD_ZSTD_TEXTURE(g_xbox_color_correction);
148151
}
149152

150153
template<typename T>
@@ -156,29 +159,23 @@ bool TryGetValueThumbnail(const IConfigDef* cfg, VALUE_THUMBNAIL_MAP(T)* thumbna
156159
if (!cfg->GetValue())
157160
return false;
158161

159-
auto result = thumbnails->at(*(T*)cfg->GetValue()).get();
160-
161-
if (!result)
162-
return false;
163-
164-
*texture = result;
165-
166-
return true;
167-
}
162+
auto findResult = thumbnails->find(*(T*)cfg->GetValue());
168163

169-
GuestTexture* GetThumbnail(const std::string_view name)
170-
{
171-
if (!g_namedThumbnails.count(name))
172-
return g_namedThumbnails["Default"].get();
164+
if (findResult != thumbnails->end())
165+
{
166+
*texture = findResult->second.get();
167+
return true;
168+
}
173169

174-
return g_namedThumbnails[name].get();
170+
return false;
175171
}
176172

177173
GuestTexture* GetThumbnail(const IConfigDef* cfg)
178174
{
179-
if (!g_configThumbnails.count(cfg))
175+
auto findResult = g_configThumbnails.find(cfg);
176+
if (findResult == g_configThumbnails.end())
180177
{
181-
auto texture = g_namedThumbnails["Default"].get();
178+
auto texture = g_defaultThumbnail.get();
182179

183180
if (cfg == &Config::ControlTutorial)
184181
{
@@ -187,7 +184,7 @@ GuestTexture* GetThumbnail(const IConfigDef* cfg)
187184
if (Config::ControllerIcons == EControllerIcons::Auto)
188185
isPlayStation = hid::g_inputDeviceController == hid::EInputDevice::PlayStation;
189186

190-
texture = isPlayStation ? g_namedThumbnails["ControlTutorialPS"].get() : g_namedThumbnails["ControlTutorialXB"].get();
187+
texture = isPlayStation ? g_controlTutorialPSThumbnail.get() : g_controlTutorialXBThumbnail.get();
191188
}
192189
if (cfg == &Config::TimeOfDayTransition)
193190
{
@@ -237,5 +234,5 @@ GuestTexture* GetThumbnail(const IConfigDef* cfg)
237234
return texture;
238235
}
239236

240-
return g_configThumbnails[cfg].get();
237+
return findResult->second.get();
241238
}

UnleashedRecomp/ui/options_menu_thumbnails.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,4 @@
55

66
void LoadThumbnails();
77

8-
GuestTexture* GetThumbnail(const std::string_view name);
98
GuestTexture* GetThumbnail(const IConfigDef* cfg);

UnleashedRecomp/user/config.cpp

Lines changed: 48 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -511,43 +511,33 @@ std::string_view ConfigDef<T, isHidden>::GetName() const
511511
template<typename T, bool isHidden>
512512
std::string ConfigDef<T, isHidden>::GetNameLocalised(ELanguage language) const
513513
{
514-
if (!Locale)
515-
return Name;
516-
517-
if (!Locale->count(language))
514+
if (Locale != nullptr)
518515
{
519-
if (Locale->count(ELanguage::English))
520-
{
521-
return std::get<0>(Locale->at(ELanguage::English));
522-
}
523-
else
524-
{
525-
return Name;
526-
}
516+
auto languageFindResult = Locale->find(language);
517+
if (languageFindResult == Locale->end())
518+
languageFindResult = Locale->find(ELanguage::English);
519+
520+
if (languageFindResult != Locale->end())
521+
return std::get<0>(languageFindResult->second);
527522
}
528523

529-
return std::get<0>(Locale->at(language));
524+
return Name;
530525
}
531526

532527
template<typename T, bool isHidden>
533528
std::string ConfigDef<T, isHidden>::GetDescription(ELanguage language) const
534529
{
535-
if (!Locale)
536-
return "";
537-
538-
if (!Locale->count(language))
530+
if (Locale != nullptr)
539531
{
540-
if (Locale->count(ELanguage::English))
541-
{
542-
return std::get<1>(Locale->at(ELanguage::English));
543-
}
544-
else
545-
{
546-
return "";
547-
}
532+
auto languageFindResult = Locale->find(language);
533+
if (languageFindResult == Locale->end())
534+
languageFindResult = Locale->find(ELanguage::English);
535+
536+
if (languageFindResult != Locale->end())
537+
return std::get<1>(languageFindResult->second);
548538
}
549539

550-
return std::get<1>(Locale->at(language));
540+
return "";
551541
}
552542

553543
template<typename T, bool isHidden>
@@ -578,27 +568,27 @@ std::string ConfigDef<T, isHidden>::GetValueLocalised(ELanguage language) const
578568
: Localise("Common_Off");
579569
}
580570

581-
if (!locale)
582-
return ToString(false);
583-
584-
if (!locale->count(language))
571+
if (locale != nullptr)
585572
{
586-
if (locale->count(ELanguage::English))
587-
{
588-
language = ELanguage::English;
589-
}
590-
else
573+
ELanguage languages[] = { language, ELanguage::English };
574+
575+
for (auto languageToFind : languages)
591576
{
592-
return ToString(false);
593-
}
594-
}
577+
auto languageFindResult = locale->find(languageToFind);
595578

596-
auto strings = locale->at(language);
579+
if (languageFindResult != locale->end())
580+
{
581+
auto valueFindResult = languageFindResult->second.find(Value);
582+
if (valueFindResult != languageFindResult->second.end())
583+
return std::get<0>(valueFindResult->second);
584+
}
597585

598-
if (!strings.count(Value))
599-
return ToString(false);
586+
if (languageToFind == ELanguage::English)
587+
break;
588+
}
589+
}
600590

601-
return std::get<0>(strings.at(Value));
591+
return ToString(false);
602592
}
603593

604594
template<typename T, bool isHidden>
@@ -615,27 +605,27 @@ std::string ConfigDef<T, isHidden>::GetValueDescription(ELanguage language) cons
615605
return "";
616606
}
617607

618-
if (!locale)
619-
return "";
620-
621-
if (!locale->count(language))
608+
if (locale != nullptr)
622609
{
623-
if (locale->count(ELanguage::English))
624-
{
625-
language = ELanguage::English;
626-
}
627-
else
610+
ELanguage languages[] = { language, ELanguage::English };
611+
612+
for (auto languageToFind : languages)
628613
{
629-
return "";
630-
}
631-
}
614+
auto languageFindResult = locale->find(languageToFind);
632615

633-
auto strings = locale->at(language);
616+
if (languageFindResult != locale->end())
617+
{
618+
auto valueFindResult = languageFindResult->second.find(Value);
619+
if (valueFindResult != languageFindResult->second.end())
620+
return std::get<1>(valueFindResult->second);
621+
}
634622

635-
if (!strings.count(Value))
636-
return "";
623+
if (languageToFind == ELanguage::English)
624+
break;
625+
}
626+
}
637627

638-
return std::get<1>(strings.at(Value));
628+
return "";
639629
}
640630

641631
template<typename T, bool isHidden>

0 commit comments

Comments
 (0)