diff options
author | Ahmad Samir <a.samirh78@gmail.com> | 2023-12-23 18:21:28 +0200 |
---|---|---|
committer | Ahmad Samir <a.samirh78@gmail.com> | 2024-01-14 17:30:13 +0200 |
commit | 1a3753fc78a55ed48aef8f3f7888ec4436f27eb4 (patch) | |
tree | 02abd6bc2822b5c93b492b75ef6053fec6cfb789 /src/corelib/io | |
parent | eb2db79064bd6e74d0b3485a650e4025d0a39c96 (diff) |
QDirIteratorPrivate: assign to members directly
Instead of passing default args to the constructor. The alternative is
adding as many constructors as the public class has.
The dirEntry member benefits from copy-elision in the 3 QDirIterator
overloads that construct a QFileSystemEntry.
Change-Id: I7b6bcc54a7e00255be9903d58cc09f4e202a25c3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io')
-rw-r--r-- | src/corelib/io/qdiriterator.cpp | 53 |
1 files changed, 34 insertions, 19 deletions
diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp index 101c8fd2e7..5713f5c04d 100644 --- a/src/corelib/io/qdiriterator.cpp +++ b/src/corelib/io/qdiriterator.cpp @@ -90,9 +90,7 @@ public: class QDirIteratorPrivate { public: - QDirIteratorPrivate(const QFileSystemEntry &entry, const QStringList &nameFilters, - QDir::Filters _filters, QDirIterator::IteratorFlags flags, bool resolveEngine = true); - + void init(bool resolveEngine); void advance(); bool entryMatches(const QString & fileName, const QFileInfo &fileInfo); @@ -103,9 +101,9 @@ public: std::unique_ptr<QAbstractFileEngine> engine; QFileSystemEntry dirEntry; - const QStringList nameFilters; - const QDir::Filters filters; - const QDirIterator::IteratorFlags iteratorFlags; + QStringList nameFilters; + QDir::Filters filters; + QDirIterator::IteratorFlags iteratorFlags; #if QT_CONFIG(regularexpression) QList<QRegularExpression> nameRegExps; @@ -123,16 +121,14 @@ public: QDuplicateTracker<QString> visitedLinks; }; -/*! - \internal -*/ -QDirIteratorPrivate::QDirIteratorPrivate(const QFileSystemEntry &entry, const QStringList &nameFilters, - QDir::Filters _filters, QDirIterator::IteratorFlags flags, bool resolveEngine) - : dirEntry(entry) - , nameFilters(nameFilters.contains("*"_L1) ? QStringList() : nameFilters) - , filters(QDir::NoFilter == _filters ? QDir::AllEntries : _filters) - , iteratorFlags(flags) +void QDirIteratorPrivate::init(bool resolveEngine = true) { + if (nameFilters.contains("*"_L1)) + nameFilters.clear(); + + if (filters == QDir::NoFilter) + filters = QDir::AllEntries; + #if QT_CONFIG(regularexpression) nameRegExps.reserve(nameFilters.size()); for (const auto &filter : nameFilters) { @@ -380,9 +376,15 @@ bool QDirIteratorPrivate::matchesFilters(const QString &fileName, const QFileInf \sa hasNext(), next(), IteratorFlags */ QDirIterator::QDirIterator(const QDir &dir, IteratorFlags flags) + : d(new QDirIteratorPrivate) { const QDirPrivate *other = dir.d_ptr.constData(); - d.reset(new QDirIteratorPrivate(other->dirEntry, other->nameFilters, other->filters, flags, bool(other->fileEngine))); + d->dirEntry = other->dirEntry; + d->nameFilters = other->nameFilters; + d->filters = other->filters; + d->iteratorFlags = flags; + const bool resolveEngine = other->fileEngine ? true : false; + d->init(resolveEngine); } /*! @@ -399,8 +401,12 @@ QDirIterator::QDirIterator(const QDir &dir, IteratorFlags flags) \sa hasNext(), next(), IteratorFlags */ QDirIterator::QDirIterator(const QString &path, QDir::Filters filters, IteratorFlags flags) - : d(new QDirIteratorPrivate(QFileSystemEntry(path), QStringList(), filters, flags)) + : d(new QDirIteratorPrivate) { + d->dirEntry = QFileSystemEntry(path); + d->filters = filters; + d->iteratorFlags = flags; + d->init(); } /*! @@ -416,8 +422,12 @@ QDirIterator::QDirIterator(const QString &path, QDir::Filters filters, IteratorF \sa hasNext(), next(), IteratorFlags */ QDirIterator::QDirIterator(const QString &path, IteratorFlags flags) - : d(new QDirIteratorPrivate(QFileSystemEntry(path), QStringList(), QDir::NoFilter, flags)) + : d(new QDirIteratorPrivate) { + d->dirEntry = QFileSystemEntry(path); + d->filters = QDir::NoFilter; + d->iteratorFlags = flags; + d->init(); } /*! @@ -440,8 +450,13 @@ QDirIterator::QDirIterator(const QString &path, IteratorFlags flags) */ QDirIterator::QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters, IteratorFlags flags) - : d(new QDirIteratorPrivate(QFileSystemEntry(path), nameFilters, filters, flags)) + : d(new QDirIteratorPrivate) { + d->dirEntry = QFileSystemEntry(path); + d->nameFilters = nameFilters; + d->filters = filters; + d->iteratorFlags = flags; + d->init(); } /*! |