commit 854c9de8faf9eb357adc353fc9116996445d5e38
Author: Yuriy Skalko <[email protected]>
Date:   Thu Jan 7 02:27:31 2021 +0200

    Add move constructor and move assignment operator for FileName class
---
 src/support/FileName.cpp |   16 ++++++++++++++++
 src/support/FileName.h   |   14 ++++++++++----
 2 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/src/support/FileName.cpp b/src/support/FileName.cpp
index 5295741..b9a1d43 100644
--- a/src/support/FileName.cpp
+++ b/src/support/FileName.cpp
@@ -158,6 +158,13 @@ FileName::FileName(FileName const & rhs) : d(new Private)
 }
 
 
+FileName::FileName(FileName && rhs) noexcept
+       : d(rhs.d)
+{
+       rhs.d = nullptr;
+}
+
+
 FileName::FileName(FileName const & rhs, string const & suffix) : d(new 
Private)
 {
        set(rhs, suffix);
@@ -174,6 +181,15 @@ FileName & FileName::operator=(FileName const & rhs)
 }
 
 
+FileName & FileName::operator=(FileName && rhs) noexcept
+{
+       auto temp = rhs.d;
+       rhs.d = d;
+       d = temp;
+       return *this;
+}
+
+
 bool FileName::empty() const
 {
        return d->name.empty();
diff --git a/src/support/FileName.h b/src/support/FileName.h
index 1cf1e73..2bc2e48 100644
--- a/src/support/FileName.h
+++ b/src/support/FileName.h
@@ -42,15 +42,21 @@ public:
         */
        explicit FileName(std::string const & abs_filename);
 
-       /// copy constructor.
+       /// copy constructor
        FileName(FileName const &);
 
-       /// constructor with base name and suffix.
+       /// move constructor
+       FileName(FileName &&) noexcept;
+
+       /// constructor with base name and suffix
        FileName(FileName const & fn, std::string const & suffix);
 
-       ///
+       /// copy assign
        FileName & operator=(FileName const &);
 
+       /// move assign
+       FileName & operator=(FileName &&) noexcept;
+
        virtual ~FileName();
        /** Set a new filename.
         * \param filename the file in question. Must have an absolute path.
@@ -219,7 +225,7 @@ private:
        bool copyTo(FileName const &, bool, FileNameSet &) const;
        ///
        struct Private;
-       Private * const d;
+       Private * d;
 };
 
 
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to