summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-05-25 17:57:07 +0200
committerMikaël Capelle <capelle.mikael@gmail.com>2020-05-25 17:57:07 +0200
commit03fc2b0dc25ae00322c6681d99f48857ecf77935 (patch)
tree55ee063981b6844234d0681d43148b62dd0ec9bb
parent86f516953df9dc80c6726c30f47e15b660a89a4e (diff)
Update ModInfo classes following MemoizedLocked changes.
-rw-r--r--src/modinfoseparator.h2
-rw-r--r--src/modinfowithconflictinfo.cpp22
-rw-r--r--src/modinfowithconflictinfo.h15
3 files changed, 15 insertions, 24 deletions
diff --git a/src/modinfoseparator.h b/src/modinfoseparator.h
index 4cfb9ea0..a7a6cb5f 100644
--- a/src/modinfoseparator.h
+++ b/src/modinfoseparator.h
@@ -49,7 +49,7 @@ public:
virtual void addInstalledFile(int /*modId*/, int /*fileId*/) override { }
protected:
- virtual bool doTestValid() const override { return true; }
+ virtual bool doIsValid() const override { return true; }
private:
diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp
index d2a0ca51..7181bef9 100644
--- a/src/modinfowithconflictinfo.cpp
+++ b/src/modinfowithconflictinfo.cpp
@@ -15,7 +15,9 @@ namespace fs = std::filesystem;
ModInfoWithConflictInfo::ModInfoWithConflictInfo(
PluginContainer *pluginContainer, const MOBase::IPluginGame* gamePlugin, DirectoryEntry **directoryStructure)
: ModInfo(pluginContainer), m_GamePlugin(gamePlugin),
- m_FileTree(&ModInfoWithConflictInfo::updateFileTree), m_Valid(&ModInfoWithConflictInfo::doTestValid), m_Contents(&ModInfoWithConflictInfo::doGetContents),
+ m_FileTree([this]() { return QDirFileTree::makeTree(absolutePath()); }),
+ m_Valid([this]() { return doIsValid(); }),
+ m_Contents([this]() { return doGetContents(); }),
m_DirectoryStructure(directoryStructure), m_HasLooseOverwrite(false), m_HasHiddenFiles(false) {}
void ModInfoWithConflictInfo::clearCaches()
@@ -304,20 +306,12 @@ void ModInfoWithConflictInfo::diskContentModified() {
m_Contents.invalidate();
}
-std::shared_ptr<const IFileTree> ModInfoWithConflictInfo::updateFileTree() const {
- return QDirFileTree::makeTree(absolutePath());
-}
-
-std::shared_ptr<const IFileTree> ModInfoWithConflictInfo::contentFileTree() const {
- return m_FileTree.value(this);
-}
-
void ModInfoWithConflictInfo::prefetch() {
// Populating the tree to 1-depth:
contentFileTree()->size();
}
-bool ModInfoWithConflictInfo::doTestValid() const {
+bool ModInfoWithConflictInfo::doIsValid() const {
auto mdc = m_GamePlugin->feature<ModDataChecker>();
if (mdc) {
@@ -328,10 +322,14 @@ bool ModInfoWithConflictInfo::doTestValid() const {
return true;
}
+std::shared_ptr<const IFileTree> ModInfoWithConflictInfo::contentFileTree() const {
+ return m_FileTree.value();
+}
+
bool ModInfoWithConflictInfo::isValid() const {
- return m_Valid.value(this);
+ return m_Valid.value();
}
std::vector<ModInfo::EContent> ModInfoWithConflictInfo::getContents() const {
- return m_Contents.value(this);
+ return m_Contents.value();
}
diff --git a/src/modinfowithconflictinfo.h b/src/modinfowithconflictinfo.h
index 3adbb998..abc9f223 100644
--- a/src/modinfowithconflictinfo.h
+++ b/src/modinfowithconflictinfo.h
@@ -59,7 +59,7 @@ protected:
*
* @return true if the content is valid, false otherwise.
**/
- virtual bool doTestValid() const;
+ virtual bool doIsValid() const;
/**
* @brief Compute the contents for this mod.
@@ -135,16 +135,9 @@ protected:
private:
- /**
- * @return a file tree for this mod.
- */
- std::shared_ptr<const MOBase::IFileTree> updateFileTree() const;
-
- MOShared::MemoizedLocked<
- std::shared_ptr<const MOBase::IFileTree>,
- decltype(&ModInfoWithConflictInfo::updateFileTree)> m_FileTree;
- MOShared::MemoizedLocked<bool, decltype(&ModInfoWithConflictInfo::doTestValid)> m_Valid;
- MOShared::MemoizedLocked<std::vector<EContent>, decltype(&ModInfoWithConflictInfo::doGetContents)> m_Contents;
+ MOShared::MemoizedLocked<std::shared_ptr<const MOBase::IFileTree>> m_FileTree;
+ MOShared::MemoizedLocked<bool> m_Valid;
+ MOShared::MemoizedLocked<std::vector<EContent>> m_Contents;
MOShared::DirectoryEntry **m_DirectoryStructure;