diff options
| author | Admiral H. Curtiss <pikachu025@gmail.com> | 2024-01-31 20:17:26 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-31 20:17:26 +0100 |
| commit | 18abf7c768c715e4399bb68aec5d623633a1427f (patch) | |
| tree | 1947b47fa6c6ae502baa85804685902aed705083 /Source/Core/VideoCommon/GraphicsModSystem | |
| parent | 202c10d7572da673b669e8b93d11d2b703829031 (diff) | |
| parent | 40b050fe3710df4af6b38a338e8a9594714172ce (diff) | |
Merge pull request #12544 from lioncash/getmod
GraphicsModGroup: Allow heterogenous lookup for GetMod()
Diffstat (limited to 'Source/Core/VideoCommon/GraphicsModSystem')
| -rw-r--r-- | Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp | 18 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.h | 7 |
2 files changed, 11 insertions, 14 deletions
diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp index 9ce417e079..0873c09e91 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp +++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.cpp @@ -7,6 +7,8 @@ #include <sstream> #include <string> +#include <picojson.h> + #include "Common/CommonPaths.h" #include "Common/FileSearch.h" #include "Common/FileUtil.h" @@ -83,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)); } } } @@ -93,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<std::string> graphics_mod_user_directories = @@ -174,7 +172,7 @@ std::vector<GraphicsModConfig>& 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()) diff --git a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.h b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.h index 9614951e96..b2178db3f6 100644 --- a/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.h +++ b/Source/Core/VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.h @@ -5,10 +5,9 @@ #include <map> #include <string> +#include <string_view> #include <vector> -#include <picojson.h> - #include "Common/CommonTypes.h" struct GraphicsModConfig; @@ -34,7 +33,7 @@ public: const std::vector<GraphicsModConfig>& GetMods() const; std::vector<GraphicsModConfig>& GetMods(); - GraphicsModConfig* GetMod(const std::string& absolute_path) const; + GraphicsModConfig* GetMod(std::string_view absolute_path) const; const std::string& GetGameID() const; @@ -42,6 +41,6 @@ private: std::string GetPath() const; std::string m_game_id; std::vector<GraphicsModConfig> m_graphics_mods; - std::map<std::string, GraphicsModConfig*> m_path_to_graphics_mod; + std::map<std::string, GraphicsModConfig*, std::less<>> m_path_to_graphics_mod; u32 m_change_count = 0; }; |
