QDirListing: make move SMFs noexcept and inline
This requires giving up unique_ptr for a raw d-pointer: https://stackoverflow.com/questions/9417477/where-does-the-destructor-hide-in-this-code That isn't much of an issue, because the class is move-only. Also add a swap() member function. Found in API review. Change-Id: I2478bb5d05ff7bae0111ba97e788c88f7b4dded1 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 71167b7982be4d7a9090aa6b0e0846d5e9bf303b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
e6ab7847a7
commit
054270c717
@ -605,6 +605,8 @@ QDirListing::QDirListing(const QString &path, const QStringList &nameFilters, ui
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
\fn QDirListing::QDirListing(QDirListing &&other)
|
||||||
|
|
||||||
Move constructor. Moves \a other into this QDirListing.
|
Move constructor. Moves \a other into this QDirListing.
|
||||||
|
|
||||||
//! [partially-formed]
|
//! [partially-formed]
|
||||||
@ -613,20 +615,22 @@ QDirListing::QDirListing(const QString &path, const QStringList &nameFilters, ui
|
|||||||
value.
|
value.
|
||||||
//! [partially-formed]
|
//! [partially-formed]
|
||||||
*/
|
*/
|
||||||
QDirListing::QDirListing(QDirListing &&other) = default;
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
\fn QDirListing &QDirListing::operator=(QDirListing &&other)
|
||||||
|
|
||||||
Move-assigns \a other to this QDirListing.
|
Move-assigns \a other to this QDirListing.
|
||||||
|
|
||||||
\include qdirlisting.cpp partially-formed
|
\include qdirlisting.cpp partially-formed
|
||||||
*/
|
*/
|
||||||
QDirListing &QDirListing::operator=(QDirListing &&other) = default;
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Destroys the QDirListing.
|
Destroys the QDirListing.
|
||||||
*/
|
*/
|
||||||
QDirListing::~QDirListing() = default;
|
QDirListing::~QDirListing()
|
||||||
|
{
|
||||||
|
delete d;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the directory path used to construct this QDirListing.
|
Returns the directory path used to construct this QDirListing.
|
||||||
@ -690,7 +694,7 @@ QStringList QDirListing::nameFilters() const
|
|||||||
QDirListing::const_iterator QDirListing::begin() const
|
QDirListing::const_iterator QDirListing::begin() const
|
||||||
{
|
{
|
||||||
d->beginIterating();
|
d->beginIterating();
|
||||||
const_iterator it{d.get()};
|
const_iterator it{d};
|
||||||
return ++it;
|
return ++it;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,8 +45,11 @@ public:
|
|||||||
Q_CORE_EXPORT explicit QDirListing(const QString &path, const QStringList &nameFilters,
|
Q_CORE_EXPORT explicit QDirListing(const QString &path, const QStringList &nameFilters,
|
||||||
IteratorFlags flags = IteratorFlag::Default);
|
IteratorFlags flags = IteratorFlag::Default);
|
||||||
|
|
||||||
QDirListing(QDirListing &&);
|
QDirListing(QDirListing &&other) noexcept
|
||||||
QDirListing &operator=(QDirListing &&);
|
: d{std::exchange(other.d, nullptr)} {}
|
||||||
|
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QDirListing)
|
||||||
|
|
||||||
|
void swap(QDirListing &other) noexcept { qt_ptr_swap(d, other.d); }
|
||||||
|
|
||||||
Q_CORE_EXPORT ~QDirListing();
|
Q_CORE_EXPORT ~QDirListing();
|
||||||
|
|
||||||
@ -137,7 +140,7 @@ private:
|
|||||||
Q_CORE_EXPORT QDirListing(const QString &path, const QStringList &nameFilters, uint dirFilters,
|
Q_CORE_EXPORT QDirListing(const QString &path, const QStringList &nameFilters, uint dirFilters,
|
||||||
uint qdirIteratorFlags = 0); // QDirIterator::NoIteratorFlags == 0x0
|
uint qdirIteratorFlags = 0); // QDirIterator::NoIteratorFlags == 0x0
|
||||||
|
|
||||||
std::unique_ptr<QDirListingPrivate> d;
|
QDirListingPrivate *d;
|
||||||
friend class QDir;
|
friend class QDir;
|
||||||
friend class QDirPrivate;
|
friend class QDirPrivate;
|
||||||
friend class QDirIteratorPrivate;
|
friend class QDirIteratorPrivate;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user