summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2024-02-28 23:52:38 +0200
committerAhmad Samir <a.samirh78@gmail.com>2024-03-17 17:49:33 +0200
commit886eb76aeae5ba2cff6c4f0456ee14e63b19a9f7 (patch)
tree00baab76e18a316b5a82957e26560605265440be /src/corelib
parente146d835a69d57748bf2978cf5134ac5d86d81cf (diff)
QAbstractFileEngine: add a path parameter to beginEntryList()
Change beginEntryList() to take a path parameter, which it passes on to the QAFEIterator constructor; setting the path at construction makes more sense, because typically the path isn't supposed to change during iteration, and this simplifies the code at the call site. Remove setPath(), the last usage in Qt repos was in QtCreator, and that has been ported away from it. Change-Id: I01baa688e0f9b582aacb63d7d98a794276e58034 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp9
-rw-r--r--src/corelib/io/qabstractfileengine.cpp32
-rw-r--r--src/corelib/io/qabstractfileengine_p.h6
-rw-r--r--src/corelib/io/qdirlisting.cpp3
-rw-r--r--src/corelib/io/qfsfileengine.cpp5
-rw-r--r--src/corelib/io/qfsfileengine_iterator.cpp5
-rw-r--r--src/corelib/io/qfsfileengine_iterator_p.h2
-rw-r--r--src/corelib/io/qfsfileengine_p.h2
-rw-r--r--src/corelib/io/qresource.cpp5
-rw-r--r--src/corelib/io/qresource_iterator.cpp5
-rw-r--r--src/corelib/io/qresource_iterator_p.h3
-rw-r--r--src/corelib/io/qresource_p.h2
12 files changed, 37 insertions, 42 deletions
diff --git a/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp b/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp
index f1315a78f0..394db15f9f 100644
--- a/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_io_qabstractfileengine.cpp
@@ -39,9 +39,10 @@ QAbstractSocketEngine *ZipEngineHandler::create(const QString &fileName) const
//! [2]
QAbstractFileEngine::IteratorUniquePtr
-CustomFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
+CustomFileEngine::beginEntryList(const QString &path, QDir::Filters filters,
+ const QStringList &filterNames)
{
- return std::make_unique<CustomFileEngineIterator>(filters, filterNames);
+ return std::make_unique<CustomFileEngineIterator>(path, filters, filterNames);
}
//! [2]
@@ -50,8 +51,8 @@ CustomFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filte
class CustomIterator : public QAbstractFileEngineIterator
{
public:
- CustomIterator(const QStringList &nameFilters, QDir::Filters filters)
- : QAbstractFileEngineIterator(nameFilters, filters), index(0)
+ CustomIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters)
+ : QAbstractFileEngineIterator(path, nameFilters, filters), index(0)
{
// In a real iterator, these entries are fetched from the
// file system based on the value of path().
diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp
index 55655adfc4..2ad732cf3b 100644
--- a/src/corelib/io/qabstractfileengine.cpp
+++ b/src/corelib/io/qabstractfileengine.cpp
@@ -902,10 +902,11 @@ bool QAbstractFileEngine::cloneTo(QAbstractFileEngine *target)
Constructs a QAbstractFileEngineIterator, using the entry filters \a
filters, and wildcard name filters \a nameFilters.
*/
-QAbstractFileEngineIterator::QAbstractFileEngineIterator(QDir::Filters filters,
+QAbstractFileEngineIterator::QAbstractFileEngineIterator(const QString &path, QDir::Filters filters,
const QStringList &nameFilters)
: m_filters(filters),
- m_nameFilters(nameFilters)
+ m_nameFilters(nameFilters),
+ m_path(appendSlashIfNeeded(path))
{
}
@@ -920,10 +921,8 @@ QAbstractFileEngineIterator::~QAbstractFileEngineIterator()
/*!
- Returns the path for this iterator. It can be set using setPath().
- Typically the path is passed to beginEntryList(), which sets the path.
-
- \note The path should't be changed once iteration begins.
+ Returns the path for this iterator. The path is set by beginEntryList().
+ The path should't be changed once iteration begins.
\sa nameFilters(), filters()
*/
@@ -933,17 +932,6 @@ QString QAbstractFileEngineIterator::path() const
}
/*!
- \internal
-
- Sets the iterator path to \a path. This function is called from within
- QDirListing.
-*/
-void QAbstractFileEngineIterator::setPath(const QString &path)
-{
- m_path = appendSlashIfNeeded(path);
-}
-
-/*!
Returns the name filters for this iterator.
\sa QDir::nameFilters(), filters(), path()
@@ -1027,16 +1015,18 @@ QFileInfo QAbstractFileEngineIterator::currentFileInfo() const
*/
/*!
- Returns a QAbstractFileEngine::IteratorUniquePtr, that uses \a filters
- for entry filtering and \a filterNames for name filtering. This function
- is called by QDirListing to initiate directory iteration.
+ Returns a QAbstractFileEngine::IteratorUniquePtr, that can be used
+ to iterate over the entries in \a path, using \a filters for entry
+ filtering and \a filterNames for name filtering. This function is called
+ by QDirListing to initiate directory iteration.
\sa QDirListing
*/
QAbstractFileEngine::IteratorUniquePtr
-QAbstractFileEngine::beginEntryList(QDir::Filters filters,
+QAbstractFileEngine::beginEntryList(const QString &path, QDir::Filters filters,
const QStringList &filterNames)
{
+ Q_UNUSED(path);
Q_UNUSED(filters);
Q_UNUSED(filterNames);
return {};
diff --git a/src/corelib/io/qabstractfileengine_p.h b/src/corelib/io/qabstractfileengine_p.h
index eef83fc46d..8d6a1b8a35 100644
--- a/src/corelib/io/qabstractfileengine_p.h
+++ b/src/corelib/io/qabstractfileengine_p.h
@@ -130,7 +130,7 @@ public:
using IteratorUniquePtr = std::unique_ptr<Iterator>;
virtual IteratorUniquePtr
- beginEntryList(QDir::Filters filters, const QStringList &filterNames);
+ beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames);
virtual IteratorUniquePtr endEntryList() { return {}; }
virtual qint64 read(char *data, qint64 maxlen);
@@ -198,13 +198,13 @@ public:
class Q_CORE_EXPORT QAbstractFileEngineIterator
{
public:
- QAbstractFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters);
+ QAbstractFileEngineIterator(const QString &path, QDir::Filters filters,
+ const QStringList &nameFilters);
virtual ~QAbstractFileEngineIterator();
virtual QString next() = 0;
virtual bool hasNext() const = 0;
- void setPath(const QString &path);
QString path() const;
QStringList nameFilters() const;
QDir::Filters filters() const;
diff --git a/src/corelib/io/qdirlisting.cpp b/src/corelib/io/qdirlisting.cpp
index 8200366a5a..b673fa77e1 100644
--- a/src/corelib/io/qdirlisting.cpp
+++ b/src/corelib/io/qdirlisting.cpp
@@ -165,8 +165,7 @@ void QDirListingPrivate::pushDirectory(QDirEntryInfo &entryInfo)
if (engine) {
engine->setFileName(path);
- if (auto it = engine->beginEntryList(filters, nameFilters)) {
- it->setPath(path);
+ if (auto it = engine->beginEntryList(path, filters, nameFilters)) {
fileEngineIterators.emplace(std::move(it));
} else {
// No iterator; no entry list.
diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp
index df8dd494ee..ee96e801f2 100644
--- a/src/corelib/io/qfsfileengine.cpp
+++ b/src/corelib/io/qfsfileengine.cpp
@@ -792,9 +792,10 @@ qint64 QFSFileEnginePrivate::writeFdFh(const char *data, qint64 len)
\internal
*/
QAbstractFileEngine::IteratorUniquePtr
-QFSFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
+QFSFileEngine::beginEntryList(const QString &path, QDir::Filters filters,
+ const QStringList &filterNames)
{
- return std::make_unique<QFSFileEngineIterator>(filters, filterNames);
+ return std::make_unique<QFSFileEngineIterator>(path, filters, filterNames);
}
#endif // QT_NO_FILESYSTEMITERATOR
diff --git a/src/corelib/io/qfsfileengine_iterator.cpp b/src/corelib/io/qfsfileengine_iterator.cpp
index c65b6e5d3e..f9d802b17f 100644
--- a/src/corelib/io/qfsfileengine_iterator.cpp
+++ b/src/corelib/io/qfsfileengine_iterator.cpp
@@ -9,8 +9,9 @@
QT_BEGIN_NAMESPACE
-QFSFileEngineIterator::QFSFileEngineIterator(QDir::Filters filters, const QStringList &filterNames)
- : QAbstractFileEngineIterator(filters, filterNames),
+QFSFileEngineIterator::QFSFileEngineIterator(const QString &path, QDir::Filters filters,
+ const QStringList &filterNames)
+ : QAbstractFileEngineIterator(path, filters, filterNames),
done(false)
{
}
diff --git a/src/corelib/io/qfsfileengine_iterator_p.h b/src/corelib/io/qfsfileengine_iterator_p.h
index 7980605fbd..4ad1bb0350 100644
--- a/src/corelib/io/qfsfileengine_iterator_p.h
+++ b/src/corelib/io/qfsfileengine_iterator_p.h
@@ -26,7 +26,7 @@ QT_BEGIN_NAMESPACE
class QFSFileEngineIterator : public QAbstractFileEngineIterator
{
public:
- QFSFileEngineIterator(QDir::Filters filters, const QStringList &filterNames);
+ QFSFileEngineIterator(const QString &path, QDir::Filters filters, const QStringList &filterNames);
~QFSFileEngineIterator();
QString next() override;
diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h
index a2dc699305..3cc3b43a0b 100644
--- a/src/corelib/io/qfsfileengine_p.h
+++ b/src/corelib/io/qfsfileengine_p.h
@@ -82,7 +82,7 @@ public:
int handle() const override;
#ifndef QT_NO_FILESYSTEMITERATOR
- IteratorUniquePtr beginEntryList(QDir::Filters filters,
+ IteratorUniquePtr beginEntryList(const QString &path, QDir::Filters filters,
const QStringList &filterNames) override;
#endif
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index d61846084a..dfc925b416 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -1535,9 +1535,10 @@ QDateTime QResourceFileEngine::fileTime(FileTime time) const
\internal
*/
QAbstractFileEngine::IteratorUniquePtr
-QResourceFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
+QResourceFileEngine::beginEntryList(const QString &path, QDir::Filters filters,
+ const QStringList &filterNames)
{
- return std::make_unique<QResourceFileEngineIterator>(filters, filterNames);
+ return std::make_unique<QResourceFileEngineIterator>(path, filters, filterNames);
}
bool QResourceFileEngine::extension(Extension extension, const ExtensionOption *option, ExtensionReturn *output)
diff --git a/src/corelib/io/qresource_iterator.cpp b/src/corelib/io/qresource_iterator.cpp
index 58bdefdd20..c0f0106911 100644
--- a/src/corelib/io/qresource_iterator.cpp
+++ b/src/corelib/io/qresource_iterator.cpp
@@ -8,9 +8,10 @@
QT_BEGIN_NAMESPACE
-QResourceFileEngineIterator::QResourceFileEngineIterator(QDir::Filters filters,
+QResourceFileEngineIterator::QResourceFileEngineIterator(const QString &path, QDir::Filters filters,
const QStringList &filterNames)
- : QAbstractFileEngineIterator(filters, filterNames), index(-1)
+ : QAbstractFileEngineIterator(path, filters, filterNames),
+ index(-1)
{
}
diff --git a/src/corelib/io/qresource_iterator_p.h b/src/corelib/io/qresource_iterator_p.h
index 7bc546e44a..8a29ef0219 100644
--- a/src/corelib/io/qresource_iterator_p.h
+++ b/src/corelib/io/qresource_iterator_p.h
@@ -24,7 +24,8 @@ class QResourceFileEngineIteratorPrivate;
class QResourceFileEngineIterator : public QAbstractFileEngineIterator
{
public:
- QResourceFileEngineIterator(QDir::Filters filters, const QStringList &filterNames);
+ QResourceFileEngineIterator(const QString &path, QDir::Filters filters,
+ const QStringList &filterNames);
~QResourceFileEngineIterator();
QString next() override;
diff --git a/src/corelib/io/qresource_p.h b/src/corelib/io/qresource_p.h
index 01ff3c8c5f..4df37b4c0e 100644
--- a/src/corelib/io/qresource_p.h
+++ b/src/corelib/io/qresource_p.h
@@ -49,7 +49,7 @@ public:
QDateTime fileTime(FileTime time) const override;
- IteratorUniquePtr beginEntryList(QDir::Filters filters,
+ IteratorUniquePtr beginEntryList(const QString &path, QDir::Filters filters,
const QStringList &filterNames) override;
bool extension(Extension extension, const ExtensionOption *option = nullptr, ExtensionReturn *output = nullptr) override;