mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Make PluginMetadata::GetDirtyInfo() return a std::vector
The collection is only ever iterated over, and the uniqueness and ordering don't matter.
This commit is contained in:
@@ -130,7 +130,7 @@ public:
|
||||
* Get the plugin's dirty plugin information.
|
||||
* @return The PluginCleaningData objects that identify the plugin as dirty.
|
||||
*/
|
||||
LOOT_API std::set<PluginCleaningData> GetDirtyInfo() const;
|
||||
LOOT_API std::vector<PluginCleaningData> GetDirtyInfo() const;
|
||||
|
||||
/**
|
||||
* Get the plugin's clean plugin information.
|
||||
@@ -205,7 +205,7 @@ public:
|
||||
* @param info
|
||||
* The dirty information to set.
|
||||
*/
|
||||
LOOT_API void SetDirtyInfo(const std::set<PluginCleaningData>& info);
|
||||
LOOT_API void SetDirtyInfo(const std::vector<PluginCleaningData>& info);
|
||||
|
||||
/**
|
||||
* Set the plugin's clean information.
|
||||
@@ -273,7 +273,7 @@ private:
|
||||
std::vector<File> incompatibilities_;
|
||||
std::vector<Message> messages_;
|
||||
std::vector<Tag> tags_;
|
||||
std::set<PluginCleaningData> dirtyInfo_;
|
||||
std::vector<PluginCleaningData> dirtyInfo_;
|
||||
std::set<PluginCleaningData> cleanInfo_;
|
||||
std::set<Location> locations_;
|
||||
};
|
||||
|
||||
@@ -163,14 +163,14 @@ PluginMetadata ConditionEvaluator::EvaluateAll(const PluginMetadata& pluginMetad
|
||||
evaluatedMetadata.SetTags(tags);
|
||||
|
||||
if (!evaluatedMetadata.IsRegexPlugin()) {
|
||||
std::set<PluginCleaningData> infoSet;
|
||||
std::vector<PluginCleaningData> infoVector;
|
||||
for (const auto& info : pluginMetadata.GetDirtyInfo()) {
|
||||
if (Evaluate(info, pluginMetadata.GetName()))
|
||||
infoSet.insert(info);
|
||||
infoVector.push_back(info);
|
||||
}
|
||||
evaluatedMetadata.SetDirtyInfo(infoSet);
|
||||
evaluatedMetadata.SetDirtyInfo(infoVector);
|
||||
|
||||
infoSet.clear();
|
||||
std::set<PluginCleaningData> infoSet;
|
||||
for (const auto& info : pluginMetadata.GetCleanInfo()) {
|
||||
if (Evaluate(info, pluginMetadata.GetName()))
|
||||
infoSet.insert(info);
|
||||
|
||||
@@ -67,7 +67,7 @@ void PluginMetadata::MergeMetadata(const PluginMetadata& plugin) {
|
||||
messages_.insert(
|
||||
end(messages_), begin(plugin.messages_), end(plugin.messages_));
|
||||
|
||||
dirtyInfo_.insert(begin(plugin.dirtyInfo_), end(plugin.dirtyInfo_));
|
||||
dirtyInfo_ = mergeVectors(dirtyInfo_, plugin.dirtyInfo_);
|
||||
cleanInfo_.insert(begin(plugin.cleanInfo_), end(plugin.cleanInfo_));
|
||||
locations_.insert(begin(plugin.locations_), end(plugin.locations_));
|
||||
|
||||
@@ -101,14 +101,7 @@ PluginMetadata PluginMetadata::NewMetadata(const PluginMetadata& plugin) const {
|
||||
p.SetMessages(mDiff);
|
||||
|
||||
p.SetTags(diffVectors(tags_, plugin.tags_));
|
||||
|
||||
set<PluginCleaningData> dirtDiff;
|
||||
set_difference(begin(dirtyInfo_),
|
||||
end(dirtyInfo_),
|
||||
begin(plugin.dirtyInfo_),
|
||||
end(plugin.dirtyInfo_),
|
||||
inserter(dirtDiff, begin(dirtDiff)));
|
||||
p.SetDirtyInfo(dirtDiff);
|
||||
p.SetDirtyInfo(diffVectors(dirtyInfo_, plugin.dirtyInfo_));
|
||||
|
||||
set<PluginCleaningData> cleanDiff;
|
||||
set_difference(begin(cleanInfo_),
|
||||
@@ -147,7 +140,7 @@ std::vector<Message> PluginMetadata::GetMessages() const { return messages_; }
|
||||
|
||||
std::vector<Tag> PluginMetadata::GetTags() const { return tags_; }
|
||||
|
||||
std::set<PluginCleaningData> PluginMetadata::GetDirtyInfo() const {
|
||||
std::vector<PluginCleaningData> PluginMetadata::GetDirtyInfo() const {
|
||||
return dirtyInfo_;
|
||||
}
|
||||
|
||||
@@ -193,7 +186,7 @@ void PluginMetadata::SetMessages(const std::vector<Message>& m) {
|
||||
void PluginMetadata::SetTags(const std::vector<Tag>& t) { tags_ = t; }
|
||||
|
||||
void PluginMetadata::SetDirtyInfo(
|
||||
const std::set<PluginCleaningData>& dirtyInfo) {
|
||||
const std::vector<PluginCleaningData>& dirtyInfo) {
|
||||
dirtyInfo_ = dirtyInfo;
|
||||
}
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ struct convert<loot::PluginMetadata> {
|
||||
rhs.SetTags(node["tag"].as<std::vector<loot::Tag>>());
|
||||
if (node["dirty"]) {
|
||||
rhs.SetDirtyInfo(
|
||||
node["dirty"].as<std::set<loot::PluginCleaningData>>());
|
||||
node["dirty"].as<std::vector<loot::PluginCleaningData>>());
|
||||
}
|
||||
if (node["clean"]) {
|
||||
rhs.SetCleanInfo(
|
||||
|
||||
@@ -196,7 +196,7 @@ TEST_P(ConditionEvaluatorTest, evaluateAllShouldEvaluateAllMetadataConditions) {
|
||||
EXPECT_EQ(expectedFiles, plugin.GetIncompatibilities());
|
||||
EXPECT_EQ(std::vector<Message>({message1}), plugin.GetMessages());
|
||||
EXPECT_EQ(std::vector<Tag>({tag1}), plugin.GetTags());
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({info1}), plugin.GetDirtyInfo());
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>({info1}), plugin.GetDirtyInfo());
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({info1}), plugin.GetCleanInfo());
|
||||
}
|
||||
|
||||
|
||||
@@ -234,7 +234,7 @@ TEST_P(PluginMetadataTest, mergeMetadataShouldMergeDirtyInfoData) {
|
||||
plugin2.SetDirtyInfo({info1, info2});
|
||||
plugin1.MergeMetadata(plugin2);
|
||||
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({info1, info2}),
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>({info1, info2}),
|
||||
plugin1.GetDirtyInfo());
|
||||
}
|
||||
TEST_P(PluginMetadataTest, mergeMetadataShouldMergeCleanInfoData) {
|
||||
@@ -402,7 +402,8 @@ TEST_P(
|
||||
plugin2.SetDirtyInfo({info1, info3});
|
||||
PluginMetadata newMetadata = plugin1.NewMetadata(plugin2);
|
||||
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({info2}), newMetadata.GetDirtyInfo());
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>({info2}),
|
||||
newMetadata.GetDirtyInfo());
|
||||
}
|
||||
|
||||
TEST_P(
|
||||
@@ -832,7 +833,7 @@ TEST_P(PluginMetadataTest, encodingAsYamlShouldSetDirtyFieldIfDirtyInfoExists) {
|
||||
node = plugin;
|
||||
|
||||
EXPECT_EQ(plugin.GetDirtyInfo(),
|
||||
node["dirty"].as<std::set<PluginCleaningData>>());
|
||||
node["dirty"].as<std::vector<PluginCleaningData>>());
|
||||
}
|
||||
|
||||
TEST_P(PluginMetadataTest, encodingAsYamlShouldSetCleanFieldIfCleanInfoExists) {
|
||||
@@ -887,7 +888,7 @@ TEST_P(PluginMetadataTest, decodingFromYamlShouldStoreAllGivenData) {
|
||||
EXPECT_EQ(std::vector<Message>({Message(MessageType::say, "content")}),
|
||||
plugin.GetMessages());
|
||||
EXPECT_EQ(std::vector<Tag>({Tag("Relev")}), plugin.GetTags());
|
||||
EXPECT_EQ(std::set<PluginCleaningData>(
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>(
|
||||
{PluginCleaningData(5, "utility", {}, 0, 1, 2)}),
|
||||
plugin.GetDirtyInfo());
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({PluginCleaningData(6, "utility")}),
|
||||
@@ -908,7 +909,7 @@ TEST_P(PluginMetadataTest,
|
||||
PluginMetadata plugin = node.as<PluginMetadata>();
|
||||
|
||||
EXPECT_EQ("Blank\\.esp", plugin.GetName());
|
||||
EXPECT_EQ(std::set<PluginCleaningData>(
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>(
|
||||
{PluginCleaningData(5, "utility", {}, 0, 1, 2)}),
|
||||
plugin.GetDirtyInfo());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user