mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Make PluginMetadata::GetCleanInfo() return a std::vector
The collection is only ever iterated over, and the uniqueness and ordering don't matter.
This commit is contained in:
@@ -136,7 +136,7 @@ public:
|
||||
* Get the plugin's clean plugin information.
|
||||
* @return The PluginCleaningData objects that identify the plugin as clean.
|
||||
*/
|
||||
LOOT_API std::set<PluginCleaningData> GetCleanInfo() const;
|
||||
LOOT_API std::vector<PluginCleaningData> GetCleanInfo() const;
|
||||
|
||||
/**
|
||||
* Get the locations at which this plugin can be found.
|
||||
@@ -212,7 +212,7 @@ public:
|
||||
* @param info
|
||||
* The clean information to set.
|
||||
*/
|
||||
LOOT_API void SetCleanInfo(const std::set<PluginCleaningData>& info);
|
||||
LOOT_API void SetCleanInfo(const std::vector<PluginCleaningData>& info);
|
||||
|
||||
/**
|
||||
* Set the plugin's locations.
|
||||
@@ -274,7 +274,7 @@ private:
|
||||
std::vector<Message> messages_;
|
||||
std::vector<Tag> tags_;
|
||||
std::vector<PluginCleaningData> dirtyInfo_;
|
||||
std::set<PluginCleaningData> cleanInfo_;
|
||||
std::vector<PluginCleaningData> cleanInfo_;
|
||||
std::set<Location> locations_;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -170,12 +170,12 @@ PluginMetadata ConditionEvaluator::EvaluateAll(const PluginMetadata& pluginMetad
|
||||
}
|
||||
evaluatedMetadata.SetDirtyInfo(infoVector);
|
||||
|
||||
std::set<PluginCleaningData> infoSet;
|
||||
infoVector.clear();
|
||||
for (const auto& info : pluginMetadata.GetCleanInfo()) {
|
||||
if (Evaluate(info, pluginMetadata.GetName()))
|
||||
infoSet.insert(info);
|
||||
infoVector.push_back(info);
|
||||
}
|
||||
evaluatedMetadata.SetCleanInfo(infoSet);
|
||||
evaluatedMetadata.SetCleanInfo(infoVector);
|
||||
}
|
||||
|
||||
return evaluatedMetadata;
|
||||
|
||||
@@ -68,7 +68,7 @@ void PluginMetadata::MergeMetadata(const PluginMetadata& plugin) {
|
||||
end(messages_), begin(plugin.messages_), end(plugin.messages_));
|
||||
|
||||
dirtyInfo_ = mergeVectors(dirtyInfo_, plugin.dirtyInfo_);
|
||||
cleanInfo_.insert(begin(plugin.cleanInfo_), end(plugin.cleanInfo_));
|
||||
cleanInfo_ = mergeVectors(cleanInfo_, plugin.cleanInfo_);
|
||||
locations_.insert(begin(plugin.locations_), end(plugin.locations_));
|
||||
|
||||
return;
|
||||
@@ -102,14 +102,7 @@ PluginMetadata PluginMetadata::NewMetadata(const PluginMetadata& plugin) const {
|
||||
|
||||
p.SetTags(diffVectors(tags_, plugin.tags_));
|
||||
p.SetDirtyInfo(diffVectors(dirtyInfo_, plugin.dirtyInfo_));
|
||||
|
||||
set<PluginCleaningData> cleanDiff;
|
||||
set_difference(begin(cleanInfo_),
|
||||
end(cleanInfo_),
|
||||
begin(plugin.cleanInfo_),
|
||||
end(plugin.cleanInfo_),
|
||||
inserter(cleanDiff, begin(cleanDiff)));
|
||||
p.SetCleanInfo(cleanDiff);
|
||||
p.SetCleanInfo(diffVectors(cleanInfo_, plugin.cleanInfo_));
|
||||
|
||||
set<Location> locationsDiff;
|
||||
set_difference(begin(locations_),
|
||||
@@ -144,7 +137,7 @@ std::vector<PluginCleaningData> PluginMetadata::GetDirtyInfo() const {
|
||||
return dirtyInfo_;
|
||||
}
|
||||
|
||||
std::set<PluginCleaningData> PluginMetadata::GetCleanInfo() const {
|
||||
std::vector<PluginCleaningData> PluginMetadata::GetCleanInfo() const {
|
||||
return cleanInfo_;
|
||||
}
|
||||
|
||||
@@ -190,7 +183,7 @@ void PluginMetadata::SetDirtyInfo(
|
||||
dirtyInfo_ = dirtyInfo;
|
||||
}
|
||||
|
||||
void PluginMetadata::SetCleanInfo(const std::set<PluginCleaningData>& info) {
|
||||
void PluginMetadata::SetCleanInfo(const std::vector<PluginCleaningData>& info) {
|
||||
cleanInfo_ = info;
|
||||
}
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@ struct convert<loot::PluginMetadata> {
|
||||
}
|
||||
if (node["clean"]) {
|
||||
rhs.SetCleanInfo(
|
||||
node["clean"].as<std::set<loot::PluginCleaningData>>());
|
||||
node["clean"].as<std::vector<loot::PluginCleaningData>>());
|
||||
}
|
||||
if (node["url"])
|
||||
rhs.SetLocations(node["url"].as<std::set<loot::Location>>());
|
||||
|
||||
@@ -197,7 +197,7 @@ TEST_P(ConditionEvaluatorTest, evaluateAllShouldEvaluateAllMetadataConditions) {
|
||||
EXPECT_EQ(std::vector<Message>({message1}), plugin.GetMessages());
|
||||
EXPECT_EQ(std::vector<Tag>({tag1}), plugin.GetTags());
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>({info1}), plugin.GetDirtyInfo());
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({info1}), plugin.GetCleanInfo());
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>({info1}), plugin.GetCleanInfo());
|
||||
}
|
||||
|
||||
TEST_P(ConditionEvaluatorTest, evaluateAllShouldPreserveGroupExplicitness) {
|
||||
|
||||
@@ -247,7 +247,7 @@ TEST_P(PluginMetadataTest, mergeMetadataShouldMergeCleanInfoData) {
|
||||
plugin2.SetCleanInfo({info1, info2});
|
||||
plugin1.MergeMetadata(plugin2);
|
||||
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({info1, info2}),
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>({info1, info2}),
|
||||
plugin1.GetCleanInfo());
|
||||
}
|
||||
|
||||
@@ -419,7 +419,8 @@ TEST_P(
|
||||
plugin2.SetCleanInfo({info1, info3});
|
||||
PluginMetadata newMetadata = plugin1.NewMetadata(plugin2);
|
||||
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({info2}), newMetadata.GetCleanInfo());
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>({info2}),
|
||||
newMetadata.GetCleanInfo());
|
||||
}
|
||||
|
||||
TEST_P(PluginMetadataTest,
|
||||
@@ -843,7 +844,7 @@ TEST_P(PluginMetadataTest, encodingAsYamlShouldSetCleanFieldIfCleanInfoExists) {
|
||||
node = plugin;
|
||||
|
||||
EXPECT_EQ(plugin.GetCleanInfo(),
|
||||
node["clean"].as<std::set<PluginCleaningData>>());
|
||||
node["clean"].as<std::vector<PluginCleaningData>>());
|
||||
}
|
||||
|
||||
TEST_P(PluginMetadataTest, encodingAsYamlShouldSetUrlFieldIfLocationsExist) {
|
||||
@@ -891,7 +892,7 @@ TEST_P(PluginMetadataTest, decodingFromYamlShouldStoreAllGivenData) {
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>(
|
||||
{PluginCleaningData(5, "utility", {}, 0, 1, 2)}),
|
||||
plugin.GetDirtyInfo());
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({PluginCleaningData(6, "utility")}),
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>({PluginCleaningData(6, "utility")}),
|
||||
plugin.GetCleanInfo());
|
||||
EXPECT_EQ(std::set<Location>({Location("http://www.example.com")}),
|
||||
plugin.GetLocations());
|
||||
@@ -924,7 +925,7 @@ TEST_P(PluginMetadataTest,
|
||||
PluginMetadata plugin = node.as<PluginMetadata>();
|
||||
|
||||
EXPECT_EQ("Blank\\.esp", plugin.GetName());
|
||||
EXPECT_EQ(std::set<PluginCleaningData>({PluginCleaningData(5, "utility")}),
|
||||
EXPECT_EQ(std::vector<PluginCleaningData>({PluginCleaningData(5, "utility")}),
|
||||
plugin.GetCleanInfo());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user