diff options
| author | Mikaƫl Capelle <capelle.mikael@gmail.com> | 2020-11-05 10:43:58 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-05 10:43:58 +0100 |
| commit | a63a27840bfa7b08f295bfe682ebc33d70a613b9 (patch) | |
| tree | 3bf8b3cf5d1ea618c7ac894b6bd58b00e4cefeb5 /src | |
| parent | a7d4f2a0c40d35d547e93994be3f92b6d43a0833 (diff) | |
| parent | 780cc2a35217e887c9bba0573be1146505114521 (diff) | |
Merge pull request #1281 from Holt59/imodinterface-filetree
Add IModInterface::fileTree().
Diffstat (limited to 'src')
| -rw-r--r-- | src/modinfo.h | 11 | ||||
| -rw-r--r-- | src/modinforegular.cpp | 2 | ||||
| -rw-r--r-- | src/modinfowithconflictinfo.cpp | 6 | ||||
| -rw-r--r-- | src/modinfowithconflictinfo.h | 24 |
4 files changed, 27 insertions, 16 deletions
diff --git a/src/modinfo.h b/src/modinfo.h index 7223cece..ad917c17 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -368,6 +368,17 @@ public: // IModInterface implementations / Re-declaration */ virtual MOBase::EndorsedState endorsedState() const override { return MOBase::EndorsedState::ENDORSED_NEVER; } + /** + * @brief Retrieve a file tree corresponding to the underlying disk content + * of this mod. + * + * The file tree should not be cached since it is already cached and updated when + * required. + * + * @return a file tree representing the content of this mod. + */ + virtual std::shared_ptr<const MOBase::IFileTree> fileTree() const = 0; + public: // Mutable operations: /** diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp index 78c04f2d..3f5fc7fc 100644 --- a/src/modinforegular.cpp +++ b/src/modinforegular.cpp @@ -682,7 +682,7 @@ std::set<int> ModInfoRegular::doGetContents() const ModDataContent* contentFeature = m_GamePlugin->feature<ModDataContent>(); if (contentFeature) { - auto result = contentFeature->getContentsFor(contentFileTree()); + auto result = contentFeature->getContentsFor(fileTree()); return std::set<int>(std::begin(result), std::end(result)); } diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp index 24c154e6..6e3f751e 100644 --- a/src/modinfowithconflictinfo.cpp +++ b/src/modinfowithconflictinfo.cpp @@ -311,21 +311,21 @@ void ModInfoWithConflictInfo::diskContentModified() { void ModInfoWithConflictInfo::prefetch() { // Populating the tree to 1-depth (IFileTree is lazy, so size() forces the // tree to populate the first level): - contentFileTree()->size(); + fileTree()->size(); } bool ModInfoWithConflictInfo::doIsValid() const { auto mdc = m_GamePlugin->feature<ModDataChecker>(); if (mdc) { - auto qdirfiletree = contentFileTree(); + auto qdirfiletree = fileTree(); return mdc->dataLooksValid(qdirfiletree) == ModDataChecker::CheckReturn::VALID; } return true; } -std::shared_ptr<const IFileTree> ModInfoWithConflictInfo::contentFileTree() const { +std::shared_ptr<const IFileTree> ModInfoWithConflictInfo::fileTree() const { return m_FileTree.value(); } diff --git a/src/modinfowithconflictinfo.h b/src/modinfowithconflictinfo.h index 7109b83d..feded99b 100644 --- a/src/modinfowithconflictinfo.h +++ b/src/modinfowithconflictinfo.h @@ -34,7 +34,18 @@ public: * * @return true if the content is there, false otherwise. */ - virtual bool hasContent(int content) const override; + virtual bool hasContent(int content) const override; /** + * @brief Retrieve a file tree corresponding to the underlying disk content + * of this mod. + * + * The file tree should not be cached since it is already cached and updated when + * required. + * + * @return a file tree representing the content of this mod. + */ + std::shared_ptr<const MOBase::IFileTree> fileTree() const override; + +public: /** * @brief clear all caches held for this mod @@ -78,17 +89,6 @@ protected: **/ virtual std::set<int> doGetContents() const { return {}; } - /** - * @brief Retrieve a file tree corresponding to the underlying disk content - * of this mod. - * - * The file tree should not be cached since it is already cached and updated when - * required. - * - * @return a file tree representing the content of this mod. - */ - std::shared_ptr<const MOBase::IFileTree> contentFileTree() const; - ModInfoWithConflictInfo( PluginContainer* pluginContainer, const MOBase::IPluginGame* gamePlugin, |
