QAbstractFileEngine: make {begin,end}EntryList() return a unique_ptr
Makes ownership clearer. Change-Id: Ibb57ca900ef30b16d48964a977e997ba6705248b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
parent
66dd00dcfd
commit
e146d835a6
@ -38,10 +38,10 @@ QAbstractSocketEngine *ZipEngineHandler::create(const QString &fileName) const
|
||||
|
||||
|
||||
//! [2]
|
||||
QAbstractFileEngineIterator *
|
||||
QAbstractFileEngine::IteratorUniquePtr
|
||||
CustomFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
|
||||
{
|
||||
return new CustomFileEngineIterator(filters, filterNames);
|
||||
return std::make_unique<CustomFileEngineIterator>(filters, filterNames);
|
||||
}
|
||||
//! [2]
|
||||
|
||||
|
@ -890,6 +890,14 @@ bool QAbstractFileEngine::cloneTo(QAbstractFileEngine *target)
|
||||
Synonym for QAbstractFileEngineIterator.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\typedef QAbstractFileEngine::IteratorUniquePtr
|
||||
\since 6.8
|
||||
|
||||
Synonym for std::unique_ptr<Iterator> (that is a
|
||||
std::unique_ptr<QAbstractFileEngineIterator>).
|
||||
*/
|
||||
|
||||
/*!
|
||||
Constructs a QAbstractFileEngineIterator, using the entry filters \a
|
||||
filters, and wildcard name filters \a nameFilters.
|
||||
@ -1019,20 +1027,19 @@ QFileInfo QAbstractFileEngineIterator::currentFileInfo() const
|
||||
*/
|
||||
|
||||
/*!
|
||||
Returns an instance of a QAbstractFileEngineIterator using \a filters for
|
||||
entry filtering and \a filterNames for name filtering. This function is
|
||||
called by QDirListing to initiate directory iteration.
|
||||
|
||||
QDirListing takes ownership of the returned instance, and deletes it when
|
||||
it's done.
|
||||
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.
|
||||
|
||||
\sa QDirListing
|
||||
*/
|
||||
QAbstractFileEngine::Iterator *QAbstractFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
|
||||
QAbstractFileEngine::IteratorUniquePtr
|
||||
QAbstractFileEngine::beginEntryList(QDir::Filters filters,
|
||||
const QStringList &filterNames)
|
||||
{
|
||||
Q_UNUSED(filters);
|
||||
Q_UNUSED(filterNames);
|
||||
return nullptr;
|
||||
return {};
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "QtCore/qfile.h"
|
||||
#include "QtCore/qdir.h"
|
||||
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
|
||||
#ifdef open
|
||||
@ -126,8 +127,11 @@ public:
|
||||
bool unmap(uchar *ptr);
|
||||
|
||||
typedef QAbstractFileEngineIterator Iterator;
|
||||
virtual Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames);
|
||||
virtual Iterator* endEntryList() { return nullptr; }
|
||||
using IteratorUniquePtr = std::unique_ptr<Iterator>;
|
||||
|
||||
virtual IteratorUniquePtr
|
||||
beginEntryList(QDir::Filters filters, const QStringList &filterNames);
|
||||
virtual IteratorUniquePtr endEntryList() { return {}; }
|
||||
|
||||
virtual qint64 read(char *data, qint64 maxlen);
|
||||
virtual qint64 readLine(char *data, qint64 maxlen);
|
||||
|
@ -165,10 +165,9 @@ void QDirListingPrivate::pushDirectory(QDirEntryInfo &entryInfo)
|
||||
|
||||
if (engine) {
|
||||
engine->setFileName(path);
|
||||
QAbstractFileEngineIterator *it = engine->beginEntryList(filters, nameFilters);
|
||||
if (it) {
|
||||
if (auto it = engine->beginEntryList(filters, nameFilters)) {
|
||||
it->setPath(path);
|
||||
fileEngineIterators.emplace(FEngineIteratorPtr(it));
|
||||
fileEngineIterators.emplace(std::move(it));
|
||||
} else {
|
||||
// No iterator; no entry list.
|
||||
}
|
||||
|
@ -791,9 +791,10 @@ qint64 QFSFileEnginePrivate::writeFdFh(const char *data, qint64 len)
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
QAbstractFileEngine::Iterator *QFSFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
|
||||
QAbstractFileEngine::IteratorUniquePtr
|
||||
QFSFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
|
||||
{
|
||||
return new QFSFileEngineIterator(filters, filterNames);
|
||||
return std::make_unique<QFSFileEngineIterator>(filters, filterNames);
|
||||
}
|
||||
|
||||
#endif // QT_NO_FILESYSTEMITERATOR
|
||||
|
@ -10,8 +10,8 @@
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
QFSFileEngineIterator::QFSFileEngineIterator(QDir::Filters filters, const QStringList &filterNames)
|
||||
: QAbstractFileEngineIterator(filters, filterNames)
|
||||
, done(false)
|
||||
: QAbstractFileEngineIterator(filters, filterNames),
|
||||
done(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -82,7 +82,8 @@ public:
|
||||
int handle() const override;
|
||||
|
||||
#ifndef QT_NO_FILESYSTEMITERATOR
|
||||
Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override;
|
||||
IteratorUniquePtr beginEntryList(QDir::Filters filters,
|
||||
const QStringList &filterNames) override;
|
||||
#endif
|
||||
|
||||
qint64 read(char *data, qint64 maxlen) override;
|
||||
|
@ -1534,11 +1534,10 @@ QDateTime QResourceFileEngine::fileTime(FileTime time) const
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
QAbstractFileEngine::Iterator *QResourceFileEngine::beginEntryList(QDir::Filters filters,
|
||||
const QStringList &filterNames)
|
||||
QAbstractFileEngine::IteratorUniquePtr
|
||||
QResourceFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
|
||||
{
|
||||
return new QResourceFileEngineIterator(filters, filterNames);
|
||||
|
||||
return std::make_unique<QResourceFileEngineIterator>(filters, filterNames);
|
||||
}
|
||||
|
||||
bool QResourceFileEngine::extension(Extension extension, const ExtensionOption *option, ExtensionReturn *output)
|
||||
|
@ -49,7 +49,8 @@ public:
|
||||
|
||||
QDateTime fileTime(FileTime time) const override;
|
||||
|
||||
Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override;
|
||||
IteratorUniquePtr beginEntryList(QDir::Filters filters,
|
||||
const QStringList &filterNames) override;
|
||||
|
||||
bool extension(Extension extension, const ExtensionOption *option = nullptr, ExtensionReturn *output = nullptr) override;
|
||||
bool supportsExtension(Extension extension) const override;
|
||||
|
@ -248,10 +248,10 @@ QString AndroidContentFileEngine::fileName(FileName f) const
|
||||
return QString();
|
||||
}
|
||||
|
||||
QAbstractFileEngine::Iterator *AndroidContentFileEngine::beginEntryList(QDir::Filters filters,
|
||||
const QStringList &filterNames)
|
||||
QAbstractFileEngine::IteratorUniquePtr
|
||||
AndroidContentFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
|
||||
{
|
||||
return new AndroidContentFileEngineIterator(filters, filterNames);
|
||||
return std::make_unique<AndroidContentFileEngineIterator>(filters, filterNames);
|
||||
}
|
||||
|
||||
AndroidContentFileEngineHandler::AndroidContentFileEngineHandler() = default;
|
||||
|
@ -30,7 +30,8 @@ public:
|
||||
QDateTime fileTime(FileTime time) const override;
|
||||
FileFlags fileFlags(FileFlags type = FileInfoAll) const override;
|
||||
QString fileName(FileName file = DefaultName) const override;
|
||||
QAbstractFileEngine::Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override;
|
||||
IteratorUniquePtr beginEntryList(QDir::Filters filters,
|
||||
const QStringList &filterNames) override;
|
||||
|
||||
private:
|
||||
void closeNativeFileDescriptor();
|
||||
|
@ -367,10 +367,11 @@ public:
|
||||
m_assetsInfoCache.insert(m_fileName, newAssetInfoPtr);
|
||||
}
|
||||
|
||||
Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override
|
||||
IteratorUniquePtr
|
||||
beginEntryList(QDir::Filters filters, const QStringList &filterNames) override
|
||||
{
|
||||
if (m_assetInfo && m_assetInfo->type == AssetItem::Type::Folder)
|
||||
return new AndroidAbstractFileEngineIterator(filters, filterNames, m_fileName);
|
||||
return std::make_unique<AndroidAbstractFileEngineIterator>(filters, filterNames, m_fileName);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,8 @@ public:
|
||||
void setFileName(const QString &file) override;
|
||||
|
||||
#ifndef QT_NO_FILESYSTEMITERATOR
|
||||
Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override;
|
||||
IteratorUniquePtr beginEntryList(QDir::Filters filters,
|
||||
const QStringList &filterNames) override;
|
||||
#endif
|
||||
|
||||
void setError(QFile::FileError error, const QString &str) { QAbstractFileEngine::setError(error, str); }
|
||||
|
@ -440,10 +440,10 @@ void QIOSFileEngineAssetsLibrary::setFileName(const QString &file)
|
||||
|
||||
#ifndef QT_NO_FILESYSTEMITERATOR
|
||||
|
||||
QAbstractFileEngine::Iterator *QIOSFileEngineAssetsLibrary::beginEntryList(
|
||||
QDir::Filters filters, const QStringList &filterNames)
|
||||
QAbstractFileEngine::IteratorUniquePtr
|
||||
QIOSFileEngineAssetsLibrary::beginEntryList(QDir::Filters filters, const QStringList &filterNames)
|
||||
{
|
||||
return new QIOSFileEngineIteratorAssetsLibrary(filters, filterNames);
|
||||
return std::make_unique<QIOSFileEngineIteratorAssetsLibrary>(filters, filterNames);
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -459,9 +459,11 @@ public:
|
||||
: QFSFileEngine(fileName)
|
||||
{
|
||||
}
|
||||
Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override
|
||||
|
||||
IteratorUniquePtr
|
||||
beginEntryList(QDir::Filters filters, const QStringList &filterNames) override
|
||||
{
|
||||
return new Iterator(filters, filterNames);
|
||||
return std::make_unique<Iterator>(filters, filterNames);
|
||||
}
|
||||
FileFlags fileFlags(FileFlags type) const override
|
||||
{
|
||||
|
@ -436,8 +436,9 @@ public:
|
||||
: QFSFileEngine(fileName)
|
||||
{ }
|
||||
|
||||
QAbstractFileEngineIterator *beginEntryList(QDir::Filters, const QStringList &) override
|
||||
{ return 0; }
|
||||
IteratorUniquePtr
|
||||
beginEntryList(QDir::Filters, const QStringList &) override
|
||||
{ return nullptr; }
|
||||
};
|
||||
|
||||
class EngineWithNoIteratorHandler : public QAbstractFileEngineHandler
|
||||
|
@ -421,8 +421,8 @@ public:
|
||||
: QFSFileEngine(fileName)
|
||||
{ }
|
||||
|
||||
QAbstractFileEngineIterator *beginEntryList(QDir::Filters, const QStringList &) override
|
||||
{ return 0; }
|
||||
IteratorUniquePtr beginEntryList(QDir::Filters, const QStringList &) override
|
||||
{ return nullptr; }
|
||||
};
|
||||
|
||||
class EngineWithNoIteratorHandler : public QAbstractFileEngineHandler
|
||||
|
Loading…
x
Reference in New Issue
Block a user