diff --git a/src/api/plugin/plugin_sorter.cpp b/src/api/plugin/plugin_sorter.cpp index 772de50a..34253e88 100644 --- a/src/api/plugin/plugin_sorter.cpp +++ b/src/api/plugin/plugin_sorter.cpp @@ -43,8 +43,32 @@ using std::string; using std::vector; namespace loot { -PluginSortingData::PluginSortingData(const Plugin& plugin, const PluginMetadata& metadata) - : Plugin(plugin), PluginMetadata(metadata) {} +PluginSortingData::PluginSortingData(const Plugin& plugin, const PluginMetadata&& metadata) + : plugin_(plugin), PluginMetadata(metadata) {} + +std::string PluginSortingData::GetName() const { + return plugin_.GetName(); +} + +bool PluginSortingData::IsMaster() const { + return plugin_.IsMaster(); +} + +bool PluginSortingData::LoadsArchive() const { + return plugin_.LoadsArchive(); +} + +std::vector PluginSortingData::GetMasters() const { + return plugin_.GetMasters(); +} + +size_t PluginSortingData::NumOverrideFormIDs() const { + return plugin_.NumOverrideFormIDs(); +} + +bool PluginSortingData::DoFormIDsOverlap(const PluginSortingData& plugin) const { + return plugin_.DoFormIDsOverlap(plugin.plugin_); +} typedef boost::graph_traits::vertex_iterator vertex_it; typedef boost::graph_traits::edge_descriptor edge_t; @@ -203,7 +227,7 @@ void PluginSorter::AddPluginVertices(Game& game) { BOOST_LOG_TRIVIAL(trace) << "Adding vertex for plugin \"" << plugin->GetName() << "\""; - vertex_t v = boost::add_vertex(PluginSortingData(*plugin, metadata), graph_); + vertex_t v = boost::add_vertex(PluginSortingData(*plugin, std::move(metadata)), graph_); } // Prebuild an index map, which std::list-based VertexList graphs don't have. @@ -232,7 +256,7 @@ bool PluginSorter::EdgeCreatesCycle(const vertex_t& fromVertex, const vertex_t& try { boost::breadth_first_search(graph_, toVertex, visitor(PathDetector(fromVertex)).vertex_index_map(vertexIndexMap_)); } catch (PathFoundException&) { - return true; + return true; } return false; } diff --git a/src/api/plugin/plugin_sorter.h b/src/api/plugin/plugin_sorter.h index b6c78cf6..feba931a 100644 --- a/src/api/plugin/plugin_sorter.h +++ b/src/api/plugin/plugin_sorter.h @@ -34,25 +34,25 @@ #include "api/plugin/plugin.h" namespace loot { -class PluginSortingData : public Plugin, private PluginMetadata { +class PluginSortingData : private PluginMetadata { public: - PluginSortingData(const Plugin& plugin, const PluginMetadata& metadata); + PluginSortingData(const Plugin& plugin, const PluginMetadata&& metadata); - using Plugin::GetName; - using Plugin::IsMaster; - using Plugin::LoadsArchive; - using Plugin::GetMasters; - using Plugin::NumOverrideFormIDs; - using Plugin::DoFormIDsOverlap; + std::string GetName() const; + bool IsMaster() const; + bool LoadsArchive() const; + std::vector GetMasters() const; + size_t NumOverrideFormIDs() const; + bool DoFormIDsOverlap(const PluginSortingData& plugin) const; using PluginMetadata::GetLocalPriority; using PluginMetadata::SetLocalPriority; using PluginMetadata::GetGlobalPriority; using PluginMetadata::SetGlobalPriority; using PluginMetadata::GetRequirements; - using PluginMetadata::SetRequirements; using PluginMetadata::GetLoadAfterFiles; - using PluginMetadata::SetLoadAfterFiles; +private: + const Plugin& plugin_; }; typedef boost::adjacency_list PluginGraph;