summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-05-16 14:00:24 +0200
committerMikaël Capelle <capelle.mikael@gmail.com>2020-05-16 14:00:24 +0200
commit04698417a93a51acc80112feab170f3aff7572b7 (patch)
treea30ef244874aeaa2408b2443a946606f6e4a45a8
parent0a3dade905e4112b8ba2eb29b3781ee03b243ea6 (diff)
Add implementation of clone() and doClone() for the archive filetree.
-rw-r--r--src/archivefiletree.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/archivefiletree.cpp b/src/archivefiletree.cpp
index 6bd2b820..0b715f4f 100644
--- a/src/archivefiletree.cpp
+++ b/src/archivefiletree.cpp
@@ -55,6 +55,10 @@ public:
FileTreeEntry(parent, name), m_Index(index) {
}
+ virtual std::shared_ptr<FileTreeEntry> clone() const override {
+ return std::make_shared<ArchiveFileEntry>(nullptr, name(), m_Index);
+ }
+
// No private since we are in an implementation file:
const int m_Index;
};
@@ -70,7 +74,7 @@ public:
public: // Public for make_shared (but not accessible by other since not exposed in .h):
- ArchiveFileTreeImpl(std::shared_ptr<const IFileTree> parent, QString name, int index, std::vector<File>&& files)
+ ArchiveFileTreeImpl(std::shared_ptr<const IFileTree> parent, QString name, int index, std::vector<File> files)
: FileTreeEntry(parent, name), ArchiveFileEntry(parent, name, index), IFileTree(), m_Files(std::move(files)) { }
public: // Override to avoid VS warnings:
@@ -83,6 +87,12 @@ public: // Override to avoid VS warnings:
return IFileTree::astree();
}
+protected:
+
+ virtual std::shared_ptr<FileTreeEntry> clone() const override {
+ return IFileTree::clone();
+ }
+
public: // Overrides:
/**
@@ -211,6 +221,10 @@ protected:
}
}
+ virtual std::shared_ptr<IFileTree> doClone() const override {
+ return std::make_shared<ArchiveFileTreeImpl>(nullptr, name(), m_Index, m_Files);
+ }
+
private:
mutable std::vector<File> m_Files;