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