summaryrefslogtreecommitdiffstats
path: root/src/corelib/io
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2023-12-23 18:21:28 +0200
committerAhmad Samir <a.samirh78@gmail.com>2024-01-14 17:30:13 +0200
commit1a3753fc78a55ed48aef8f3f7888ec4436f27eb4 (patch)
tree02abd6bc2822b5c93b492b75ef6053fec6cfb789 /src/corelib/io
parenteb2db79064bd6e74d0b3485a650e4025d0a39c96 (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.cpp53
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();
}
/*!