diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-05-16 14:00:24 +0200 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-05-16 14:00:24 +0200 |
| commit | 04698417a93a51acc80112feab170f3aff7572b7 (patch) | |
| tree | a30ef244874aeaa2408b2443a946606f6e4a45a8 /src | |
| parent | 0a3dade905e4112b8ba2eb29b3781ee03b243ea6 (diff) | |
Add implementation of clone() and doClone() for the archive filetree.
Diffstat (limited to 'src')
| -rw-r--r-- | src/archivefiletree.cpp | 16 |
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; |
