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