summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikaƫl Capelle <capelle.mikael@gmail.com>2020-11-05 10:43:58 +0100
committerGitHub <noreply@github.com>2020-11-05 10:43:58 +0100
commita63a27840bfa7b08f295bfe682ebc33d70a613b9 (patch)
tree3bf8b3cf5d1ea618c7ac894b6bd58b00e4cefeb5 /src
parenta7d4f2a0c40d35d547e93994be3f92b6d43a0833 (diff)
parent780cc2a35217e887c9bba0573be1146505114521 (diff)
Merge pull request #1281 from Holt59/imodinterface-filetree
Add IModInterface::fileTree().
Diffstat (limited to 'src')
-rw-r--r--src/modinfo.h11
-rw-r--r--src/modinforegular.cpp2
-rw-r--r--src/modinfowithconflictinfo.cpp6
-rw-r--r--src/modinfowithconflictinfo.h24
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,