From 9224e3015332ecc1b6a8d1d231c7368bb6d51670 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Tue, 8 Dec 2015 16:12:08 +0000 Subject: [PATCH] Make MetadataList.messages private --- src/backend/metadata_list.cpp | 8 ++++++++ src/backend/metadata_list.h | 5 ++++- src/gui/handler.cpp | 16 +++++++++------- src/tests/backend/test_metadata_list.h | 12 ++++++------ 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/backend/metadata_list.cpp b/src/backend/metadata_list.cpp index 29e20b8e..77dccee3 100644 --- a/src/backend/metadata_list.cpp +++ b/src/backend/metadata_list.cpp @@ -92,6 +92,10 @@ namespace loot { return pluginList; } + std::list MetadataList::Messages() const { + return messages; + } + // Merges multiple matching regex entries if any are found. PluginMetadata MetadataList::FindPlugin(const PluginMetadata& plugin) const { PluginMetadata match(plugin.Name()); @@ -132,6 +136,10 @@ namespace loot { } } + void MetadataList::AppendMessage(const Message& message) { + messages.push_back(message); + } + void MetadataList::EvalAllConditions(Game& game, const unsigned int language) { unordered_set replacementSet; for (auto &plugin : plugins) { diff --git a/src/backend/metadata_list.h b/src/backend/metadata_list.h index 16ab26ff..9f2877fe 100644 --- a/src/backend/metadata_list.h +++ b/src/backend/metadata_list.h @@ -53,6 +53,7 @@ namespace loot { void clear(); std::list Plugins() const; + std::list Messages() const; // Merges multiple matching regex entries if any are found. PluginMetadata FindPlugin(const PluginMetadata& plugin) const; @@ -62,13 +63,15 @@ namespace loot { // be required for other plugins. void ErasePlugin(const PluginMetadata& plugin); + void AppendMessage(const Message& message); + // Eval plugin conditions. void EvalAllConditions(Game& game, const unsigned int language); - std::list messages; protected: std::unordered_set plugins; std::list regexPlugins; + std::list messages; }; } diff --git a/src/gui/handler.cpp b/src/gui/handler.cpp index e30c7a2e..9269d72e 100644 --- a/src/gui/handler.cpp +++ b/src/gui/handler.cpp @@ -797,12 +797,14 @@ namespace loot { //Evaluate any conditions in the global messages. BOOST_LOG_TRIVIAL(debug) << "Evaluating global message conditions."; list messages = parsingErrors; + auto metadataListMessages = _lootState.CurrentGame().masterlist.Messages(); + messages.insert(end(messages), + begin(metadataListMessages), + end(metadataListMessages)); + metadataListMessages = _lootState.CurrentGame().userlist.Messages(); messages.insert(messages.end(), - _lootState.CurrentGame().masterlist.messages.begin(), - _lootState.CurrentGame().masterlist.messages.end()); - messages.insert(messages.end(), - _lootState.CurrentGame().userlist.messages.begin(), - _lootState.CurrentGame().userlist.messages.end()); + begin(metadataListMessages), + end(metadataListMessages)); try { list::iterator it = messages.begin(); while (it != messages.end()) { @@ -855,7 +857,7 @@ namespace loot { // There was a parsing error, but roll-back was successful, so the process // should still complete. - _lootState.CurrentGame().masterlist.messages.push_back(Message(Message::error, e.what())); + _lootState.CurrentGame().masterlist.AppendMessage(Message(Message::error, e.what())); wasChanged = true; } else { @@ -915,7 +917,7 @@ namespace loot { //Evaluate any conditions in the global messages. BOOST_LOG_TRIVIAL(debug) << "Evaluating global message conditions."; - list messages = _lootState.CurrentGame().masterlist.messages; + list messages = _lootState.CurrentGame().masterlist.Messages(); try { list::iterator it = messages.begin(); while (it != messages.end()) { diff --git a/src/tests/backend/test_metadata_list.h b/src/tests/backend/test_metadata_list.h index 17332ec6..afb531b8 100644 --- a/src/tests/backend/test_metadata_list.h +++ b/src/tests/backend/test_metadata_list.h @@ -73,7 +73,7 @@ TEST_F(MetadataList, Load) { EXPECT_NO_THROW(ml.Load(metadataPath)); EXPECT_EQ(std::list({ loot::Message(loot::Message::say, "A global message."), - }), ml.messages); + }), ml.Messages()); // Non-regex plugins can be outputted in any order, and regex entries can // match each other, so convert the list to a set of strings for @@ -92,14 +92,14 @@ TEST_F(MetadataList, Load) { }), names); EXPECT_ANY_THROW(ml.Load("NotAPlugin.esm")); - EXPECT_TRUE(ml.messages.empty()); + EXPECT_TRUE(ml.Messages().empty()); EXPECT_TRUE(ml.Plugins().empty()); // Fill the list again. ASSERT_NO_THROW(ml.Load(metadataPath)); EXPECT_ANY_THROW(ml.Load("Blank.missing.esm")); - EXPECT_TRUE(ml.messages.empty()); + EXPECT_TRUE(ml.Messages().empty()); EXPECT_TRUE(ml.Plugins().empty()); } @@ -120,7 +120,7 @@ TEST_F(MetadataList, Save) { EXPECT_EQ(std::list({ loot::Message(loot::Message::say, "A global message."), - }), ml.messages); + }), ml.Messages()); // Non-regex plugins can be outputted in any order, and regex entries can // match each other, so convert the list to a set of strings for @@ -142,11 +142,11 @@ TEST_F(MetadataList, Save) { TEST_F(MetadataList, clear) { loot::MetadataList ml; ASSERT_NO_THROW(ml.Load(metadataPath)); - ASSERT_FALSE(ml.messages.empty()); + ASSERT_FALSE(ml.Messages().empty()); ASSERT_FALSE(ml.Plugins().empty()); ml.clear(); - EXPECT_TRUE(ml.messages.empty()); + EXPECT_TRUE(ml.Messages().empty()); EXPECT_TRUE(ml.Plugins().empty()); }