From a1879ea09991158ba99f76275292db8fd4bcc026 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 31 Jan 2024 12:05:15 -0500 Subject: GraphicsModGroup: Allow heterogenous lookup for GetMod() Allows using keys that aren't directly std::string as the key. This lets us use std::string_view for the incoming path name, making it more flexible with other string types. --- Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp') diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp index 9ce417e079..2e8459dfe4 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp @@ -7,6 +7,8 @@ #include #include +#include + #include "Common/CommonPaths.h" #include "Common/FileSearch.h" #include "Common/FileUtil.h" @@ -174,7 +176,7 @@ std::vector& GraphicsModGroupConfig::GetMods() return m_graphics_mods; } -GraphicsModConfig* GraphicsModGroupConfig::GetMod(const std::string& absolute_path) const +GraphicsModConfig* GraphicsModGroupConfig::GetMod(std::string_view absolute_path) const { if (const auto iter = m_path_to_graphics_mod.find(absolute_path); iter != m_path_to_graphics_mod.end()) -- cgit v1.2.3 From ccacda5e2c4aed03ea75ef17d8f73376464a7b00 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 31 Jan 2024 12:20:11 -0500 Subject: GraphicsModGroup: Simplify try_add_mod() We can use contains() here, and also move the mod config if it's valid instead of copying it, since it contains quite a bit of allocated data. --- .../GraphicsModSystem/Config/GraphicsModGroup.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp') diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp index 2e8459dfe4..f200604503 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp @@ -95,15 +95,11 @@ void GraphicsModGroupConfig::Load() GraphicsModConfig::Source source) { auto file = dir + DIR_SEP + "metadata.json"; UnifyPathSeparators(file); - if (known_paths.find(file) != known_paths.end()) - { + if (known_paths.contains(file)) return; - } - const auto mod = GraphicsModConfig::Create(file, source); - if (mod) - { - m_graphics_mods.push_back(*mod); - } + + if (auto mod = GraphicsModConfig::Create(file, source)) + m_graphics_mods.push_back(std::move(*mod)); }; const std::set graphics_mod_user_directories = -- cgit v1.2.3 From 40b050fe3710df4af6b38a338e8a9594714172ce Mon Sep 17 00:00:00 2001 From: Lioncash Date: Wed, 31 Jan 2024 12:27:40 -0500 Subject: GraphicsModGroup: std::move graphics_mod in Load() The config object is quite heavyweight, so we should move this instead of copying. --- Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp') diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp index f200604503..0873c09e91 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp @@ -85,7 +85,7 @@ void GraphicsModGroupConfig::Load() auto mod_full_path = graphics_mod->GetAbsolutePath(); known_paths.insert(std::move(mod_full_path)); - m_graphics_mods.push_back(*graphics_mod); + m_graphics_mods.push_back(std::move(*graphics_mod)); } } } -- cgit v1.2.3