From 09991c25178dfea0f40c3e5656af586a3424ef46 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Thu, 23 May 2019 22:31:19 +0100 Subject: [PATCH] Be explicit about string -> PluginMetadata conversions I can't enforce this without making a breaking change to the API, but this will do for now. --- src/api/api_database.cpp | 2 +- src/api/metadata_list.cpp | 14 +++++++------- src/api/metadata_list.h | 4 ++-- src/tests/api/internals/metadata_list_test.h | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/api/api_database.cpp b/src/api/api_database.cpp index 25eb6447..d7ce3709 100644 --- a/src/api/api_database.cpp +++ b/src/api/api_database.cpp @@ -239,7 +239,7 @@ std::optional ApiDatabase::GetPluginUserMetadata( } void ApiDatabase::SetPluginUserMetadata(const PluginMetadata& pluginMetadata) { - userlist_.ErasePlugin(pluginMetadata); + userlist_.ErasePlugin(pluginMetadata.GetName()); userlist_.AddPlugin(pluginMetadata); } diff --git a/src/api/metadata_list.cpp b/src/api/metadata_list.cpp index 1d6ec622..3364ee17 100644 --- a/src/api/metadata_list.cpp +++ b/src/api/metadata_list.cpp @@ -145,20 +145,20 @@ void MetadataList::SetGroups(const std::unordered_set& groups) { // Merges multiple matching regex entries if any are found. std::optional MetadataList::FindPlugin( - const std::string& plugin) const { - PluginMetadata match(plugin); + const std::string& pluginName) const { + PluginMetadata match(pluginName); - auto it = plugins_.find(plugin); + auto it = plugins_.find(match); if (it != plugins_.end()) match = *it; // Now we want to also match possibly multiple regex entries. - auto regIt = find(regexPlugins_.begin(), regexPlugins_.end(), plugin); + auto regIt = find(regexPlugins_.begin(), regexPlugins_.end(), match); while (regIt != regexPlugins_.end()) { match.MergeMetadata(*regIt); - regIt = find(++regIt, regexPlugins_.end(), plugin); + regIt = find(++regIt, regexPlugins_.end(), match); } if (match.HasNameOnly()) { @@ -181,8 +181,8 @@ void MetadataList::AddPlugin(const PluginMetadata& plugin) { // Doesn't erase matching regex entries, because they might also // be required for other plugins. -void MetadataList::ErasePlugin(const PluginMetadata& plugin) { - auto it = plugins_.find(plugin); +void MetadataList::ErasePlugin(const std::string& pluginName) { + auto it = plugins_.find(PluginMetadata(pluginName)); if (it != plugins_.end()) { plugins_.erase(it); diff --git a/src/api/metadata_list.h b/src/api/metadata_list.h index a415adbb..729bb390 100644 --- a/src/api/metadata_list.h +++ b/src/api/metadata_list.h @@ -50,12 +50,12 @@ public: void SetGroups(const std::unordered_set& groups); // Merges multiple matching regex entries if any are found. - std::optional FindPlugin(const std::string& plugin) const; + std::optional FindPlugin(const std::string& pluginName) const; void AddPlugin(const PluginMetadata& plugin); // Doesn't erase matching regex entries, because they might also // be required for other plugins. - void ErasePlugin(const PluginMetadata& plugin); + void ErasePlugin(const std::string& pluginName); void AppendMessage(const Message& message); diff --git a/src/tests/api/internals/metadata_list_test.h b/src/tests/api/internals/metadata_list_test.h index 99820f05..9c505e25 100644 --- a/src/tests/api/internals/metadata_list_test.h +++ b/src/tests/api/internals/metadata_list_test.h @@ -354,7 +354,7 @@ TEST_P(MetadataListTest, ASSERT_EQ(blankEsp, plugin.GetName()); ASSERT_FALSE(plugin.HasNameOnly()); - metadataList.ErasePlugin(plugin); + metadataList.ErasePlugin(plugin.GetName()); EXPECT_FALSE(metadataList.FindPlugin(plugin.GetName())); }