From 7bbe79fe5f54ed7542d935600036d3c8b401505f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Fri, 17 Feb 2012 20:09:17 +0100 Subject: Drop file-engine abstraction from public API This abstraction imposed serious performance penalties and is being dropped from the public API. In particular, by allowing file names to be arbitrarily hijacked by different file engines, and requiring engines to be instantiated in order to decide, it imposed unnecessary overhead on all file operations. Another flaw in the design with direct impact on performance is how engines have no way to provide (or retain) additional information obtained when querying the filesystem. In many places this has meant repeated operations on the file system, where useful information is immediately discarded to be queried again subsequently. For Qt 4.8 a major refactoring of the code base took place to allow bypassing the file-engine abstraction in select places, with considerable performance gains observed. In Qt 5 it is expected we'll be able to take this further, reaping even more benefits, but the abstraction has to go. [Dropping this now does not preclude that virtual file systems make an appearance in Qt at a later point in Qt 5's lifecycle. Hopefully with a new and improved abstraction.] Forward declarations for QFileExtension(Result) were dropped, as the classes were never used or defined. Tests using "internalized" classes will only fully run on developer builds. QFSFileEngine was removed altogether from exception safety test, as it isn't its intent to test internal API. Change-Id: Ie910e6c2628be202ea9e05366b091d6d529b246b Reviewed-by: Thiago Macieira Reviewed-by: Lars Knoll --- dist/changes-5.0.0 | 5 + qmake/qmake.pri | 2 +- src/corelib/io/io.pri | 2 - src/corelib/io/qabstractfileengine.cpp | 6 +- src/corelib/io/qabstractfileengine.h | 247 --------------------- src/corelib/io/qabstractfileengine_p.h | 191 +++++++++++++++- src/corelib/io/qdir.cpp | 4 +- src/corelib/io/qdiriterator.cpp | 4 +- src/corelib/io/qfile.cpp | 6 +- src/corelib/io/qfile_p.h | 2 +- src/corelib/io/qfileinfo_p.h | 2 +- src/corelib/io/qfilesystemengine_unix.cpp | 5 +- src/corelib/io/qfilesystemengine_win.cpp | 2 +- src/corelib/io/qfilesystemmetadata_p.h | 2 +- src/corelib/io/qfsfileengine.cpp | 1 + src/corelib/io/qfsfileengine.h | 122 ---------- src/corelib/io/qfsfileengine_iterator_p.h | 2 +- src/corelib/io/qfsfileengine_p.h | 65 +++++- src/corelib/io/qfsfileengine_unix.cpp | 2 +- src/corelib/io/qfsfileengine_win.cpp | 2 +- src/corelib/io/qresource_iterator_p.h | 2 +- src/corelib/io/qresource_p.h | 2 +- src/network/access/qnetworkreplyfileimpl_p.h | 2 +- src/tools/uic/qclass_lib_map.h | 4 - src/widgets/dialogs/qfileinfogatherer.cpp | 1 - tests/auto/corelib/io/io.pro | 1 + .../io/qabstractfileengine/qabstractfileengine.pro | 2 +- .../tst_qabstractfileengine.cpp | 4 +- tests/auto/corelib/io/qdir/qdir.pro | 2 +- tests/auto/corelib/io/qdir/tst_qdir.cpp | 3 + .../auto/corelib/io/qdiriterator/qdiriterator.pro | 2 +- .../corelib/io/qdiriterator/tst_qdiriterator.cpp | 8 + tests/auto/corelib/io/qfile/test/test.pro | 2 +- tests/auto/corelib/io/qfile/tst_qfile.cpp | 18 +- .../tst_exceptionsafety_objects.cpp | 1 - tests/benchmarks/corelib/io/qfile/main.cpp | 46 +++- tests/benchmarks/corelib/io/qfile/qfile.pro | 2 +- 37 files changed, 357 insertions(+), 419 deletions(-) delete mode 100644 src/corelib/io/qabstractfileengine.h delete mode 100644 src/corelib/io/qfsfileengine.h diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0 index 2f34ca5d20..292f5ffba0 100644 --- a/dist/changes-5.0.0 +++ b/dist/changes-5.0.0 @@ -207,6 +207,11 @@ information about a particular change. - QDir::NoDotAndDotDot is QDir::NoDot|QDir::NoDotDot therefore there is no need to use or check both. +- QFSFileEngine, QAbstractFileEngine, QAbstractFileEngineIterator and + QAbstractFileEngineHandler were removed from public API and are no longer + exported. They may temporarily live as private implementation details, but + they may be altogether dropped or otherwise changed at will in the future. + - QLocale * toShort(), toUShort(), toInt(), toUInt(), toLongLong() and toULongLong() no longer take a parameter for base, they will only perform localised base 10 diff --git a/qmake/qmake.pri b/qmake/qmake.pri index ba6ab383c7..abb073c48e 100644 --- a/qmake/qmake.pri +++ b/qmake/qmake.pri @@ -92,7 +92,7 @@ bootstrap { #Qt code qdir_p.h \ qdiriterator.h \ qfile.h \ - qabstractfileengine.h \ + qabstractfileengine_p.h \ qfileinfo.h \ qglobal.h \ qnumeric.h \ diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri index 2df862e360..29599295ad 100644 --- a/src/corelib/io/io.pri +++ b/src/corelib/io/io.pri @@ -1,7 +1,6 @@ # Qt core io module HEADERS += \ - io/qabstractfileengine.h \ io/qabstractfileengine_p.h \ io/qbuffer.h \ io/qdatastream.h \ @@ -30,7 +29,6 @@ HEADERS += \ io/qtldurl_p.h \ io/qsettings.h \ io/qsettings_p.h \ - io/qfsfileengine.h \ io/qfsfileengine_p.h \ io/qfsfileengine_iterator_p.h \ io/qfilesystemwatcher.h \ diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp index fb18809e48..021698115c 100644 --- a/src/corelib/io/qabstractfileengine.cpp +++ b/src/corelib/io/qabstractfileengine.cpp @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#include "qabstractfileengine.h" #include "private/qabstractfileengine_p.h" +#include "private/qfsfileengine_p.h" #ifdef QT_BUILD_CORE_LIB #include "private/qresource_p.h" #endif @@ -48,7 +48,6 @@ #include "qreadwritelock.h" #include "qvariant.h" // built-in handlers -#include "qfsfileengine.h" #include "qdiriterator.h" #include "qstringbuilder.h" @@ -61,6 +60,7 @@ QT_BEGIN_NAMESPACE /*! \class QAbstractFileEngineHandler \reentrant + \internal \brief The QAbstractFileEngineHandler class provides a way to register custom file engines with your application. @@ -220,6 +220,7 @@ QAbstractFileEngine *QAbstractFileEngine::create(const QString &fileName) /*! \class QAbstractFileEngine \reentrant + \internal \brief The QAbstractFileEngine class provides an abstraction for accessing the filesystem. @@ -804,6 +805,7 @@ bool QAbstractFileEngine::unmap(uchar *address) \class QAbstractFileEngineIterator \brief The QAbstractFileEngineIterator class provides an iterator interface for custom file engines. + \internal If all you want is to iterate over entries in a directory, see QDirIterator instead. This class is only for custom file engine authors. diff --git a/src/corelib/io/qabstractfileengine.h b/src/corelib/io/qabstractfileengine.h deleted file mode 100644 index 6ea5a2b94e..0000000000 --- a/src/corelib/io/qabstractfileengine.h +++ /dev/null @@ -1,247 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QABSTRACTFILEENGINE_H -#define QABSTRACTFILEENGINE_H - -#include - -#ifdef open -#error qabstractfileengine.h must be included before any header file that defines open -#endif - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - - -class QFileExtension; -class QFileExtensionResult; -class QVariant; -class QAbstractFileEngineIterator; -class QAbstractFileEnginePrivate; - -class Q_CORE_EXPORT QAbstractFileEngine -{ -public: - enum FileFlag { - //perms (overlaps the QFile::Permission) - ReadOwnerPerm = 0x4000, WriteOwnerPerm = 0x2000, ExeOwnerPerm = 0x1000, - ReadUserPerm = 0x0400, WriteUserPerm = 0x0200, ExeUserPerm = 0x0100, - ReadGroupPerm = 0x0040, WriteGroupPerm = 0x0020, ExeGroupPerm = 0x0010, - ReadOtherPerm = 0x0004, WriteOtherPerm = 0x0002, ExeOtherPerm = 0x0001, - - //types - LinkType = 0x10000, - FileType = 0x20000, - DirectoryType = 0x40000, - BundleType = 0x80000, - - //flags - HiddenFlag = 0x0100000, - LocalDiskFlag = 0x0200000, - ExistsFlag = 0x0400000, - RootFlag = 0x0800000, - Refresh = 0x1000000, - - //masks - PermsMask = 0x0000FFFF, - TypesMask = 0x000F0000, - FlagsMask = 0x0FF00000, - FileInfoAll = FlagsMask | PermsMask | TypesMask - }; - Q_DECLARE_FLAGS(FileFlags, FileFlag) - - enum FileName { - DefaultName, - BaseName, - PathName, - AbsoluteName, - AbsolutePathName, - LinkName, - CanonicalName, - CanonicalPathName, - BundleName, - NFileNames = 9 - }; - enum FileOwner { - OwnerUser, - OwnerGroup - }; - enum FileTime { - CreationTime, - ModificationTime, - AccessTime - }; - - virtual ~QAbstractFileEngine(); - - virtual bool open(QIODevice::OpenMode openMode); - virtual bool close(); - virtual bool flush(); - virtual qint64 size() const; - virtual qint64 pos() const; - virtual bool seek(qint64 pos); - virtual bool isSequential() const; - virtual bool remove(); - virtual bool copy(const QString &newName); - virtual bool rename(const QString &newName); - virtual bool link(const QString &newName); - virtual bool mkdir(const QString &dirName, bool createParentDirectories) const; - virtual bool rmdir(const QString &dirName, bool recurseParentDirectories) const; - virtual bool setSize(qint64 size); - virtual bool caseSensitive() const; - virtual bool isRelativePath() const; - virtual QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const; - virtual FileFlags fileFlags(FileFlags type=FileInfoAll) const; - virtual bool setPermissions(uint perms); - virtual QString fileName(FileName file=DefaultName) const; - virtual uint ownerId(FileOwner) const; - virtual QString owner(FileOwner) const; - virtual QDateTime fileTime(FileTime time) const; - virtual void setFileName(const QString &file); - virtual int handle() const; - bool atEnd() const; - uchar *map(qint64 offset, qint64 size, QFile::MemoryMapFlags flags); - bool unmap(uchar *ptr); - - typedef QAbstractFileEngineIterator Iterator; - virtual Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames); - virtual Iterator *endEntryList(); - - virtual qint64 read(char *data, qint64 maxlen); - virtual qint64 readLine(char *data, qint64 maxlen); - virtual qint64 write(const char *data, qint64 len); - - QFile::FileError error() const; - QString errorString() const; - - enum Extension { - AtEndExtension, - FastReadLineExtension, - MapExtension, - UnMapExtension - }; - class ExtensionOption - {}; - class ExtensionReturn - {}; - - class MapExtensionOption : public ExtensionOption { - public: - qint64 offset; - qint64 size; - QFile::MemoryMapFlags flags; - }; - class MapExtensionReturn : public ExtensionReturn { - public: - uchar *address; - }; - - class UnMapExtensionOption : public ExtensionOption { - public: - uchar *address; - }; - - virtual bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0); - virtual bool supportsExtension(Extension extension) const; - - // Factory - static QAbstractFileEngine *create(const QString &fileName); - -protected: - void setError(QFile::FileError error, const QString &str); - - QAbstractFileEngine(); - QAbstractFileEngine(QAbstractFileEnginePrivate &); - - QScopedPointer d_ptr; -private: - Q_DECLARE_PRIVATE(QAbstractFileEngine) - Q_DISABLE_COPY(QAbstractFileEngine) -}; - -Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractFileEngine::FileFlags) - -class Q_CORE_EXPORT QAbstractFileEngineHandler -{ -public: - QAbstractFileEngineHandler(); - virtual ~QAbstractFileEngineHandler(); - virtual QAbstractFileEngine *create(const QString &fileName) const = 0; -}; - -class QAbstractFileEngineIteratorPrivate; -class Q_CORE_EXPORT QAbstractFileEngineIterator -{ -public: - QAbstractFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters); - virtual ~QAbstractFileEngineIterator(); - - virtual QString next() = 0; - virtual bool hasNext() const = 0; - - QString path() const; - QStringList nameFilters() const; - QDir::Filters filters() const; - - virtual QString currentFileName() const = 0; - virtual QFileInfo currentFileInfo() const; - QString currentFilePath() const; - -protected: - enum EntryInfoType { - }; - virtual QVariant entryInfo(EntryInfoType type) const; - -private: - Q_DISABLE_COPY(QAbstractFileEngineIterator) - friend class QDirIterator; - friend class QDirIteratorPrivate; - void setPath(const QString &path); - QScopedPointer d; -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // QABSTRACTFILEENGINE_H diff --git a/src/corelib/io/qabstractfileengine_p.h b/src/corelib/io/qabstractfileengine_p.h index 08bb7fb097..ae7f56e2d7 100644 --- a/src/corelib/io/qabstractfileengine_p.h +++ b/src/corelib/io/qabstractfileengine_p.h @@ -53,11 +53,200 @@ // We mean it. // -#include "QtCore/qabstractfileengine.h" #include "QtCore/qfile.h" +#include "QtCore/qdir.h" + +#ifdef open +#error qabstractfileengine_p.h must be included before any header file that defines open +#endif QT_BEGIN_NAMESPACE +class QVariant; +class QAbstractFileEngineIterator; +class QAbstractFileEnginePrivate; + +class Q_AUTOTEST_EXPORT QAbstractFileEngine +{ +public: + enum FileFlag { + //perms (overlaps the QFile::Permission) + ReadOwnerPerm = 0x4000, WriteOwnerPerm = 0x2000, ExeOwnerPerm = 0x1000, + ReadUserPerm = 0x0400, WriteUserPerm = 0x0200, ExeUserPerm = 0x0100, + ReadGroupPerm = 0x0040, WriteGroupPerm = 0x0020, ExeGroupPerm = 0x0010, + ReadOtherPerm = 0x0004, WriteOtherPerm = 0x0002, ExeOtherPerm = 0x0001, + + //types + LinkType = 0x10000, + FileType = 0x20000, + DirectoryType = 0x40000, + BundleType = 0x80000, + + //flags + HiddenFlag = 0x0100000, + LocalDiskFlag = 0x0200000, + ExistsFlag = 0x0400000, + RootFlag = 0x0800000, + Refresh = 0x1000000, + + //masks + PermsMask = 0x0000FFFF, + TypesMask = 0x000F0000, + FlagsMask = 0x0FF00000, + FileInfoAll = FlagsMask | PermsMask | TypesMask + }; + Q_DECLARE_FLAGS(FileFlags, FileFlag) + + enum FileName { + DefaultName, + BaseName, + PathName, + AbsoluteName, + AbsolutePathName, + LinkName, + CanonicalName, + CanonicalPathName, + BundleName, + NFileNames = 9 + }; + enum FileOwner { + OwnerUser, + OwnerGroup + }; + enum FileTime { + CreationTime, + ModificationTime, + AccessTime + }; + + virtual ~QAbstractFileEngine(); + + virtual bool open(QIODevice::OpenMode openMode); + virtual bool close(); + virtual bool flush(); + virtual qint64 size() const; + virtual qint64 pos() const; + virtual bool seek(qint64 pos); + virtual bool isSequential() const; + virtual bool remove(); + virtual bool copy(const QString &newName); + virtual bool rename(const QString &newName); + virtual bool link(const QString &newName); + virtual bool mkdir(const QString &dirName, bool createParentDirectories) const; + virtual bool rmdir(const QString &dirName, bool recurseParentDirectories) const; + virtual bool setSize(qint64 size); + virtual bool caseSensitive() const; + virtual bool isRelativePath() const; + virtual QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const; + virtual FileFlags fileFlags(FileFlags type=FileInfoAll) const; + virtual bool setPermissions(uint perms); + virtual QString fileName(FileName file=DefaultName) const; + virtual uint ownerId(FileOwner) const; + virtual QString owner(FileOwner) const; + virtual QDateTime fileTime(FileTime time) const; + virtual void setFileName(const QString &file); + virtual int handle() const; + bool atEnd() const; + uchar *map(qint64 offset, qint64 size, QFile::MemoryMapFlags flags); + bool unmap(uchar *ptr); + + typedef QAbstractFileEngineIterator Iterator; + virtual Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames); + virtual Iterator *endEntryList(); + + virtual qint64 read(char *data, qint64 maxlen); + virtual qint64 readLine(char *data, qint64 maxlen); + virtual qint64 write(const char *data, qint64 len); + + QFile::FileError error() const; + QString errorString() const; + + enum Extension { + AtEndExtension, + FastReadLineExtension, + MapExtension, + UnMapExtension + }; + class ExtensionOption + {}; + class ExtensionReturn + {}; + + class MapExtensionOption : public ExtensionOption { + public: + qint64 offset; + qint64 size; + QFile::MemoryMapFlags flags; + }; + class MapExtensionReturn : public ExtensionReturn { + public: + uchar *address; + }; + + class UnMapExtensionOption : public ExtensionOption { + public: + uchar *address; + }; + + virtual bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0); + virtual bool supportsExtension(Extension extension) const; + + // Factory + static QAbstractFileEngine *create(const QString &fileName); + +protected: + void setError(QFile::FileError error, const QString &str); + + QAbstractFileEngine(); + QAbstractFileEngine(QAbstractFileEnginePrivate &); + + QScopedPointer d_ptr; +private: + Q_DECLARE_PRIVATE(QAbstractFileEngine) + Q_DISABLE_COPY(QAbstractFileEngine) +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractFileEngine::FileFlags) + +class Q_AUTOTEST_EXPORT QAbstractFileEngineHandler +{ +public: + QAbstractFileEngineHandler(); + virtual ~QAbstractFileEngineHandler(); + virtual QAbstractFileEngine *create(const QString &fileName) const = 0; +}; + +class QAbstractFileEngineIteratorPrivate; +class Q_AUTOTEST_EXPORT QAbstractFileEngineIterator +{ +public: + QAbstractFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters); + virtual ~QAbstractFileEngineIterator(); + + virtual QString next() = 0; + virtual bool hasNext() const = 0; + + QString path() const; + QStringList nameFilters() const; + QDir::Filters filters() const; + + virtual QString currentFileName() const = 0; + virtual QFileInfo currentFileInfo() const; + QString currentFilePath() const; + +protected: + enum EntryInfoType { + }; + virtual QVariant entryInfo(EntryInfoType type) const; + +private: + Q_DISABLE_COPY(QAbstractFileEngineIterator) + friend class QDirIterator; + friend class QDirIteratorPrivate; + void setPath(const QString &path); + QScopedPointer d; +}; + class QAbstractFileEnginePrivate { public: diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp index 220fc43b92..afd402d019 100644 --- a/src/corelib/io/qdir.cpp +++ b/src/corelib/io/qdir.cpp @@ -42,12 +42,12 @@ #include "qplatformdefs.h" #include "qdir.h" #include "qdir_p.h" -#include "qabstractfileengine.h" +#include "qabstractfileengine_p.h" +#include "qfsfileengine_p.h" #ifndef QT_NO_DEBUG_STREAM #include "qdebug.h" #endif #include "qdiriterator.h" -#include "qfsfileengine.h" #include "qdatetime.h" #include "qstring.h" #include "qregexp.h" diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp index c5f24071aa..b8536a8dce 100644 --- a/src/corelib/io/qdiriterator.cpp +++ b/src/corelib/io/qdiriterator.cpp @@ -91,8 +91,7 @@ #include "qdiriterator.h" #include "qdir_p.h" - -#include "qabstractfileengine.h" +#include "qabstractfileengine_p.h" #include #include @@ -102,7 +101,6 @@ #include #include #include -#include #include QT_BEGIN_NAMESPACE diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp index 1879e8b36a..fc0c90cf69 100644 --- a/src/corelib/io/qfile.cpp +++ b/src/corelib/io/qfile.cpp @@ -42,7 +42,7 @@ #include "qplatformdefs.h" #include "qdebug.h" #include "qfile.h" -#include "qfsfileengine.h" +#include "qfsfileengine_p.h" #include "qtemporaryfile.h" #include "qlist.h" #include "qfileinfo.h" @@ -1197,7 +1197,7 @@ QFile::handle() const \note On Windows CE 5.0 the file will be closed before mapping occurs. - \sa unmap(), QAbstractFileEngine::supportsExtension() + \sa unmap() */ uchar *QFile::map(qint64 offset, qint64 size, MemoryMapFlags flags) { @@ -1219,7 +1219,7 @@ uchar *QFile::map(qint64 offset, qint64 size, MemoryMapFlags flags) Returns true if the unmap succeeds; false otherwise. - \sa map(), QAbstractFileEngine::supportsExtension() + \sa map() */ bool QFile::unmap(uchar *address) { diff --git a/src/corelib/io/qfile_p.h b/src/corelib/io/qfile_p.h index 4a637d44a8..3d2d3d678b 100644 --- a/src/corelib/io/qfile_p.h +++ b/src/corelib/io/qfile_p.h @@ -53,7 +53,7 @@ // We mean it. // -#include "QtCore/qabstractfileengine.h" +#include "private/qabstractfileengine_p.h" #include "private/qiodevice_p.h" #include "private/qringbuffer_p.h" diff --git a/src/corelib/io/qfileinfo_p.h b/src/corelib/io/qfileinfo_p.h index aa1d88665c..4c7c9ffea8 100644 --- a/src/corelib/io/qfileinfo_p.h +++ b/src/corelib/io/qfileinfo_p.h @@ -54,12 +54,12 @@ // #include "qfileinfo.h" -#include "qabstractfileengine.h" #include "qdatetime.h" #include "qatomic.h" #include "qshareddata.h" #include "qfilesystemengine_p.h" +#include #include #include diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 8d08bb5944..5e466e480d 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -42,7 +42,6 @@ #include "qplatformdefs.h" #include "qfilesystemengine_p.h" #include "qplatformdefs.h" -#include "qfsfileengine.h" #include "qfile.h" #include @@ -645,12 +644,12 @@ QFileSystemEntry QFileSystemEngine::currentPath() result = QFileSystemEntry(QByteArray(currentName), QFileSystemEntry::FromNativePath()); # if defined(QT_DEBUG) if (result.isEmpty()) - qWarning("QFSFileEngine::currentPath: getcwd() failed"); + qWarning("QFileSystemEngine::currentPath: getcwd() failed"); # endif #endif } else { # if defined(QT_DEBUG) - qWarning("QFSFileEngine::currentPath: stat(\".\") failed"); + qWarning("QFileSystemEngine::currentPath: stat(\".\") failed"); # endif } return result; diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp index b04018ca0f..294affce53 100644 --- a/src/corelib/io/qfilesystemengine_win.cpp +++ b/src/corelib/io/qfilesystemengine_win.cpp @@ -43,7 +43,7 @@ #define _POSIX_ #include "qplatformdefs.h" -#include "qabstractfileengine.h" +#include "private/qabstractfileengine_p.h" #include "private/qfsfileengine_p.h" #include #include diff --git a/src/corelib/io/qfilesystemmetadata_p.h b/src/corelib/io/qfilesystemmetadata_p.h index 792ee0e714..6053b16752 100644 --- a/src/corelib/io/qfilesystemmetadata_p.h +++ b/src/corelib/io/qfilesystemmetadata_p.h @@ -56,7 +56,7 @@ #include "qplatformdefs.h" #include #include -#include +#include // Platform-specific includes #ifdef Q_OS_WIN diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp index 4bf2e530a3..dde854e903 100644 --- a/src/corelib/io/qfsfileengine.cpp +++ b/src/corelib/io/qfsfileengine.cpp @@ -84,6 +84,7 @@ QT_BEGIN_NAMESPACE /*! \class QFSFileEngine \brief The QFSFileEngine class implements Qt's default file engine. \since 4.1 + \internal This class is part of the file engine framework in Qt. If you only want to access files or directories, use QFile, QFileInfo or QDir instead. diff --git a/src/corelib/io/qfsfileengine.h b/src/corelib/io/qfsfileengine.h deleted file mode 100644 index 63659e709a..0000000000 --- a/src/corelib/io/qfsfileengine.h +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtCore module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QFSFILEENGINE_H -#define QFSFILEENGINE_H - -#include - -#ifndef QT_NO_FSFILEENGINE - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - - -class QFSFileEnginePrivate; - -class Q_CORE_EXPORT QFSFileEngine : public QAbstractFileEngine -{ - Q_DECLARE_PRIVATE(QFSFileEngine) -public: - QFSFileEngine(); - explicit QFSFileEngine(const QString &file); - ~QFSFileEngine(); - - bool open(QIODevice::OpenMode openMode); - bool open(QIODevice::OpenMode flags, FILE *fh); - bool close(); - bool flush(); - qint64 size() const; - qint64 pos() const; - bool seek(qint64); - bool isSequential() const; - bool remove(); - bool copy(const QString &newName); - bool rename(const QString &newName); - bool link(const QString &newName); - bool mkdir(const QString &dirName, bool createParentDirectories) const; - bool rmdir(const QString &dirName, bool recurseParentDirectories) const; - bool setSize(qint64 size); - bool caseSensitive() const; - bool isRelativePath() const; - QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const; - FileFlags fileFlags(FileFlags type) const; - bool setPermissions(uint perms); - QString fileName(FileName file) const; - uint ownerId(FileOwner) const; - QString owner(FileOwner) const; - QDateTime fileTime(FileTime time) const; - void setFileName(const QString &file); - int handle() const; - - Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames); - Iterator *endEntryList(); - - qint64 read(char *data, qint64 maxlen); - qint64 readLine(char *data, qint64 maxlen); - qint64 write(const char *data, qint64 len); - - bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0); - bool supportsExtension(Extension extension) const; - - //FS only!! - bool open(QIODevice::OpenMode flags, int fd); - bool open(QIODevice::OpenMode flags, int fd, QFile::FileHandleFlags handleFlags); - bool open(QIODevice::OpenMode flags, FILE *fh, QFile::FileHandleFlags handleFlags); - static bool setCurrentPath(const QString &path); - static QString currentPath(const QString &path = QString()); - static QString homePath(); - static QString rootPath(); - static QString tempPath(); - static QFileInfoList drives(); - -protected: - QFSFileEngine(QFSFileEnginePrivate &dd); -}; - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // QT_NO_FSFILEENGINE - -#endif // QFSFILEENGINE_H diff --git a/src/corelib/io/qfsfileengine_iterator_p.h b/src/corelib/io/qfsfileengine_iterator_p.h index 477e0ecd73..b0f47ea19d 100644 --- a/src/corelib/io/qfsfileengine_iterator_p.h +++ b/src/corelib/io/qfsfileengine_iterator_p.h @@ -53,7 +53,7 @@ // We mean it. // -#include "qabstractfileengine.h" +#include "private/qabstractfileengine_p.h" #include "qfilesystemiterator_p.h" #include "qdir.h" diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h index c06f662380..f403706479 100644 --- a/src/corelib/io/qfsfileengine_p.h +++ b/src/corelib/io/qfsfileengine_p.h @@ -54,8 +54,7 @@ // #include "qplatformdefs.h" -#include "QtCore/qfsfileengine.h" -#include "private/qabstractfileengine_p.h" +#include "QtCore/private/qabstractfileengine_p.h" #include #include #include @@ -68,6 +67,68 @@ QT_BEGIN_NAMESPACE #define Q_USE_DEPRECATED_MAP_API 1 #endif +class QFSFileEnginePrivate; + +class Q_AUTOTEST_EXPORT QFSFileEngine : public QAbstractFileEngine +{ + Q_DECLARE_PRIVATE(QFSFileEngine) +public: + QFSFileEngine(); + explicit QFSFileEngine(const QString &file); + ~QFSFileEngine(); + + bool open(QIODevice::OpenMode openMode); + bool open(QIODevice::OpenMode flags, FILE *fh); + bool close(); + bool flush(); + qint64 size() const; + qint64 pos() const; + bool seek(qint64); + bool isSequential() const; + bool remove(); + bool copy(const QString &newName); + bool rename(const QString &newName); + bool link(const QString &newName); + bool mkdir(const QString &dirName, bool createParentDirectories) const; + bool rmdir(const QString &dirName, bool recurseParentDirectories) const; + bool setSize(qint64 size); + bool caseSensitive() const; + bool isRelativePath() const; + QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const; + FileFlags fileFlags(FileFlags type) const; + bool setPermissions(uint perms); + QString fileName(FileName file) const; + uint ownerId(FileOwner) const; + QString owner(FileOwner) const; + QDateTime fileTime(FileTime time) const; + void setFileName(const QString &file); + int handle() const; + + Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames); + Iterator *endEntryList(); + + qint64 read(char *data, qint64 maxlen); + qint64 readLine(char *data, qint64 maxlen); + qint64 write(const char *data, qint64 len); + + bool extension(Extension extension, const ExtensionOption *option = 0, ExtensionReturn *output = 0); + bool supportsExtension(Extension extension) const; + + //FS only!! + bool open(QIODevice::OpenMode flags, int fd); + bool open(QIODevice::OpenMode flags, int fd, QFile::FileHandleFlags handleFlags); + bool open(QIODevice::OpenMode flags, FILE *fh, QFile::FileHandleFlags handleFlags); + static bool setCurrentPath(const QString &path); + static QString currentPath(const QString &path = QString()); + static QString homePath(); + static QString rootPath(); + static QString tempPath(); + static QFileInfoList drives(); + +protected: + QFSFileEngine(QFSFileEnginePrivate &dd); +}; + class Q_AUTOTEST_EXPORT QFSFileEnginePrivate : public QAbstractFileEnginePrivate { Q_DECLARE_PUBLIC(QFSFileEngine) diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp index 805c4b5989..561e950217 100644 --- a/src/corelib/io/qfsfileengine_unix.cpp +++ b/src/corelib/io/qfsfileengine_unix.cpp @@ -40,7 +40,7 @@ ****************************************************************************/ #include "qplatformdefs.h" -#include "qabstractfileengine.h" +#include "private/qabstractfileengine_p.h" #include "private/qfsfileengine_p.h" #include "private/qcore_unix_p.h" #include "qfilesystementry_p.h" diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp index cc78664275..347ce8429e 100644 --- a/src/corelib/io/qfsfileengine_win.cpp +++ b/src/corelib/io/qfsfileengine_win.cpp @@ -41,7 +41,7 @@ #define _POSIX_ #include "qplatformdefs.h" -#include "qabstractfileengine.h" +#include "private/qabstractfileengine_p.h" #include "private/qfsfileengine_p.h" #include "qfilesystemengine_p.h" #include diff --git a/src/corelib/io/qresource_iterator_p.h b/src/corelib/io/qresource_iterator_p.h index e01b5d3e5f..763c0b72e2 100644 --- a/src/corelib/io/qresource_iterator_p.h +++ b/src/corelib/io/qresource_iterator_p.h @@ -53,7 +53,7 @@ // We mean it. // -#include "qabstractfileengine.h" +#include "qabstractfileengine_p.h" #include "qdir.h" QT_BEGIN_NAMESPACE diff --git a/src/corelib/io/qresource_p.h b/src/corelib/io/qresource_p.h index 73046888a5..b7c0a5fcb6 100644 --- a/src/corelib/io/qresource_p.h +++ b/src/corelib/io/qresource_p.h @@ -53,7 +53,7 @@ // We mean it. // -#include "QtCore/qabstractfileengine.h" +#include "qabstractfileengine_p.h" QT_BEGIN_NAMESPACE diff --git a/src/network/access/qnetworkreplyfileimpl_p.h b/src/network/access/qnetworkreplyfileimpl_p.h index c7c2bba671..ff3d6288d5 100644 --- a/src/network/access/qnetworkreplyfileimpl_p.h +++ b/src/network/access/qnetworkreplyfileimpl_p.h @@ -57,7 +57,7 @@ #include "qnetworkreply_p.h" #include "qnetworkaccessmanager.h" #include -#include +#include QT_BEGIN_NAMESPACE diff --git a/src/tools/uic/qclass_lib_map.h b/src/tools/uic/qclass_lib_map.h index 11be47ce64..fb181e27f7 100644 --- a/src/tools/uic/qclass_lib_map.h +++ b/src/tools/uic/qclass_lib_map.h @@ -53,9 +53,6 @@ QT_CLASS_LIB(Qt, QtCore, qnamespace.h) QT_CLASS_LIB(QInternal, QtCore, qnamespace.h) QT_CLASS_LIB(QCOORD, QtCore, qnamespace.h) QT_CLASS_LIB(QtConfig, QtCore, qconfig.h) -QT_CLASS_LIB(QAbstractFileEngine, QtCore, qabstractfileengine.h) -QT_CLASS_LIB(QAbstractFileEngineHandler, QtCore, qabstractfileengine.h) -QT_CLASS_LIB(QAbstractFileEngineIterator, QtCore, qabstractfileengine.h) QT_CLASS_LIB(QBuffer, QtCore, qbuffer.h) QT_CLASS_LIB(QDataStream, QtCore, qdatastream.h) QT_CLASS_LIB(QtDebug, QtCore, qdebug.h) @@ -68,7 +65,6 @@ QT_CLASS_LIB(QFileInfo, QtCore, qfileinfo.h) QT_CLASS_LIB(QFileInfoList, QtCore, qfileinfo.h) QT_CLASS_LIB(QFileInfoListIterator, QtCore, qfileinfo.h) QT_CLASS_LIB(QFileSystemWatcher, QtCore, qfilesystemwatcher.h) -QT_CLASS_LIB(QFSFileEngine, QtCore, qfsfileengine.h) QT_CLASS_LIB(QIODevice, QtCore, qiodevice.h) QT_CLASS_LIB(Q_PID, QtCore, qprocess.h) QT_CLASS_LIB(QProcessEnvironment, QtCore, qprocess.h) diff --git a/src/widgets/dialogs/qfileinfogatherer.cpp b/src/widgets/dialogs/qfileinfogatherer.cpp index 451376b3c7..03935654b8 100644 --- a/src/widgets/dialogs/qfileinfogatherer.cpp +++ b/src/widgets/dialogs/qfileinfogatherer.cpp @@ -41,7 +41,6 @@ #include "qfileinfogatherer_p.h" #include -#include #include #ifndef Q_OS_WIN # include diff --git a/tests/auto/corelib/io/io.pro b/tests/auto/corelib/io/io.pro index 095aa7a77d..84a885f5b6 100644 --- a/tests/auto/corelib/io/io.pro +++ b/tests/auto/corelib/io/io.pro @@ -30,6 +30,7 @@ SUBDIRS=\ } !contains(QT_CONFIG, private_tests): SUBDIRS -= \ + qabstractfileengine \ qfileinfo win32:!contains(QT_CONFIG, private_tests): SUBDIRS -= \ diff --git a/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro index d7565b5429..641bb7341b 100644 --- a/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro +++ b/tests/auto/corelib/io/qabstractfileengine/qabstractfileengine.pro @@ -1,5 +1,5 @@ CONFIG += testcase TARGET = tst_qabstractfileengine -QT = core testlib +QT = core-private core testlib SOURCES = tst_qabstractfileengine.cpp RESOURCES += qabstractfileengine.qrc diff --git a/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp index 776ad4d0a7..c6ccc9308a 100644 --- a/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp +++ b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#include -#include +#include +#include #include #include diff --git a/tests/auto/corelib/io/qdir/qdir.pro b/tests/auto/corelib/io/qdir/qdir.pro index 14f2d8812a..94ee14b51e 100644 --- a/tests/auto/corelib/io/qdir/qdir.pro +++ b/tests/auto/corelib/io/qdir/qdir.pro @@ -1,6 +1,6 @@ CONFIG += testcase parallel_test TARGET = tst_qdir -QT = core testlib +QT = core core-private testlib SOURCES = tst_qdir.cpp RESOURCES += qdir.qrc diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp index 6a48d7e60f..04967d8313 100644 --- a/tests/auto/corelib/io/qdir/tst_qdir.cpp +++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp @@ -49,6 +49,7 @@ #include #if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) +#include #include "../../../network-settings.h" #endif @@ -471,6 +472,7 @@ void tst_QDir::exists_data() #if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) QTest::newRow("This drive should exist") << "C:/" << true; // find a non-existing drive and check if it does not exist +#ifdef QT_BUILD_INTERNAL QFileInfoList drives = QFSFileEngine::drives(); QStringList driveLetters; for (int i = 0; i < drives.count(); ++i) { @@ -487,6 +489,7 @@ void tst_QDir::exists_data() QTest::newRow("This drive should not exist") << driv << false; } #endif +#endif } void tst_QDir::exists() diff --git a/tests/auto/corelib/io/qdiriterator/qdiriterator.pro b/tests/auto/corelib/io/qdiriterator/qdiriterator.pro index cfb3201c43..ef59fc48e3 100644 --- a/tests/auto/corelib/io/qdiriterator/qdiriterator.pro +++ b/tests/auto/corelib/io/qdiriterator/qdiriterator.pro @@ -1,6 +1,6 @@ CONFIG += testcase parallel_test TARGET = tst_qdiriterator -QT = core testlib +QT = core-private core testlib SOURCES = tst_qdiriterator.cpp RESOURCES += qdiriterator.qrc diff --git a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp index d5d490dc29..37d3e1ab68 100644 --- a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp +++ b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp @@ -48,6 +48,8 @@ #include #include +#include + #if defined(Q_OS_VXWORKS) #define Q_NO_SYMLINKS #endif @@ -454,6 +456,7 @@ void tst_QDirIterator::stopLinkLoop() // The goal of this test is only to ensure that the test above don't malfunction } +#ifdef QT_BUILD_INTERNAL class EngineWithNoIterator : public QFSFileEngine { public: @@ -473,13 +476,18 @@ public: return new EngineWithNoIterator(fileName); } }; +#endif void tst_QDirIterator::engineWithNoIterator() { +#ifdef QT_BUILD_INTERNAL EngineWithNoIteratorHandler handler; QDir("entrylist").entryList(); QVERIFY(true); // test that the above line doesn't crash +#else + QSKIP("This test requires -developer-build."); +#endif } void tst_QDirIterator::absoluteFilePathsFromRelativeIteratorPath() diff --git a/tests/auto/corelib/io/qfile/test/test.pro b/tests/auto/corelib/io/qfile/test/test.pro index 2611ff39bd..dab5e4a3a5 100644 --- a/tests/auto/corelib/io/qfile/test/test.pro +++ b/tests/auto/corelib/io/qfile/test/test.pro @@ -1,5 +1,5 @@ CONFIG += testcase -QT = core network testlib +QT = core-private core network testlib TARGET = ../tst_qfile SOURCES = ../tst_qfile.cpp RESOURCES += ../qfile.qrc ../rename-fallback.qrc ../copy-fallback.qrc diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp index d1a0debf4d..87d2cf83f7 100644 --- a/tests/auto/corelib/io/qfile/tst_qfile.cpp +++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp @@ -42,13 +42,15 @@ #include #include -#include -#include #include #include #include #include #include + +#include +#include + #if !defined(Q_OS_WINCE) #include #endif @@ -70,7 +72,6 @@ # include #elif defined(Q_OS_WINCE) # include -# include #endif #include @@ -1943,6 +1944,7 @@ void tst_QFile::longFileName() QVERIFY(QFile::remove(newName)); } +#ifdef QT_BUILD_INTERNAL class MyEngine : public QAbstractFileEngine { public: @@ -1998,6 +2000,7 @@ public: return new MyEngine(2); } }; +#endif void tst_QFile::fileEngineHandler() { @@ -2006,6 +2009,7 @@ void tst_QFile::fileEngineHandler() QFile file("ole.bull"); QCOMPARE(file.size(), qint64(0)); +#ifdef QT_BUILD_INTERNAL // Instantiating our handler will enable the new engine. MyHandler handler; file.setFileName("ole.bull"); @@ -2015,9 +2019,10 @@ void tst_QFile::fileEngineHandler() MyHandler2 handler2; file.setFileName("ole.bull"); QCOMPARE(file.size(), qint64(125)); - +#endif } +#ifdef QT_BUILD_INTERNAL class MyRecursiveHandler : public QAbstractFileEngineHandler { public: @@ -2032,13 +2037,18 @@ public: return 0; } }; +#endif void tst_QFile::useQFileInAFileHandler() { +#ifdef QT_BUILD_INTERNAL // This test should not dead-lock MyRecursiveHandler handler; QFile file(":!tst_qfile.cpp"); QVERIFY(file.exists()); +#else + QSKIP("This test requires -developer-build."); +#endif } void tst_QFile::getCharFF() diff --git a/tests/auto/other/exceptionsafety_objects/tst_exceptionsafety_objects.cpp b/tests/auto/other/exceptionsafety_objects/tst_exceptionsafety_objects.cpp index 71a70384fc..a426a90976 100644 --- a/tests/auto/other/exceptionsafety_objects/tst_exceptionsafety_objects.cpp +++ b/tests/auto/other/exceptionsafety_objects/tst_exceptionsafety_objects.cpp @@ -166,7 +166,6 @@ void tst_ExceptionSafety_Objects::objects_data() NEWROW(QObject); NEWROW(QBuffer); NEWROW(QFile); - NEWROW(QFSFileEngine); NEWROW(QProcess); NEWROW(QSettings); NEWROW(QThread); diff --git a/tests/benchmarks/corelib/io/qfile/main.cpp b/tests/benchmarks/corelib/io/qfile/main.cpp index 3d16921b7f..02922e0bbd 100644 --- a/tests/benchmarks/corelib/io/qfile/main.cpp +++ b/tests/benchmarks/corelib/io/qfile/main.cpp @@ -41,10 +41,11 @@ #include #include -#include #include #include +#include + #include #include @@ -79,7 +80,9 @@ Q_OBJECT public: enum BenchmarkType { QFileBenchmark = 1, +#ifdef QT_BUILD_INTERNAL QFSFileEngineBenchmark, +#endif Win32Benchmark, PosixBenchmark, QFileFromPosixBenchmark @@ -173,7 +176,14 @@ void tst_qfile::cleanupTestCase() } void tst_qfile::readBigFile_QFile() { readBigFile(); } -void tst_qfile::readBigFile_QFSFileEngine() { readBigFile(); } +void tst_qfile::readBigFile_QFSFileEngine() +{ +#ifdef QT_BUILD_INTERNAL + readBigFile(); +#else + QSKIP("This test requires -developer-build."); +#endif +} void tst_qfile::readBigFile_posix() { readBigFile(); @@ -191,10 +201,15 @@ void tst_qfile::readBigFile_QFile_data() void tst_qfile::readBigFile_QFSFileEngine_data() { +#ifdef QT_BUILD_INTERNAL readBigFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); readBigFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); readBigFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::NotOpen); readBigFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered); +#else + QTest::addColumn("dummy"); + QTest::newRow("Test will be skipped") << -1; +#endif } void tst_qfile::readBigFile_posix_data() @@ -255,6 +270,7 @@ void tst_qfile::readBigFile() file.close(); } break; +#ifdef QT_BUILD_INTERNAL case(QFSFileEngineBenchmark): { QFSFileEngine fse(filename); fse.open(QIODevice::ReadOnly|textMode|bufferedMode); @@ -266,6 +282,7 @@ void tst_qfile::readBigFile() fse.close(); } break; +#endif case(PosixBenchmark): { QByteArray data = filename.toLocal8Bit(); const char* cfilename = data.constData(); @@ -317,7 +334,9 @@ void tst_qfile::seek_data() { QTest::addColumn("testType"); QTest::newRow("QFile") << QFileBenchmark; +#ifdef QT_BUILD_INTERNAL QTest::newRow("QFSFileEngine") << QFSFileEngineBenchmark; +#endif QTest::newRow("Posix FILE*") << PosixBenchmark; #ifdef Q_OS_WIN QTest::newRow("Win32 API") << Win32Benchmark; @@ -343,6 +362,7 @@ void tst_qfile::seek() file.close(); } break; +#ifdef QT_BUILD_INTERNAL case(QFSFileEngineBenchmark): { QFSFileEngine fse(filename); fse.open(QIODevice::ReadOnly); @@ -353,6 +373,7 @@ void tst_qfile::seek() fse.close(); } break; +#endif case(PosixBenchmark): { QByteArray data = filename.toLocal8Bit(); const char* cfilename = data.constData(); @@ -396,7 +417,9 @@ void tst_qfile::open_data() { QTest::addColumn("testType"); QTest::newRow("QFile") << QFileBenchmark; +#ifdef QT_BUILD_INTERNAL QTest::newRow("QFSFileEngine") << QFSFileEngineBenchmark; +#endif QTest::newRow("Posix FILE*") << PosixBenchmark; QTest::newRow("QFile from FILE*") << QFileFromPosixBenchmark; #ifdef Q_OS_WIN @@ -419,6 +442,7 @@ void tst_qfile::open() } } break; +#ifdef QT_BUILD_INTERNAL case(QFSFileEngineBenchmark): { QBENCHMARK { QFSFileEngine fse(filename); @@ -427,7 +451,7 @@ void tst_qfile::open() } } break; - +#endif case(PosixBenchmark): { // ensure we don't account toLocal8Bit() QByteArray data = filename.toLocal8Bit(); @@ -477,7 +501,14 @@ void tst_qfile::open() void tst_qfile::readSmallFiles_QFile() { readSmallFiles(); } -void tst_qfile::readSmallFiles_QFSFileEngine() { readSmallFiles(); } +void tst_qfile::readSmallFiles_QFSFileEngine() +{ +#ifdef QT_BUILD_INTERNAL + readSmallFiles(); +#else + QSKIP("This test requires -developer-build."); +#endif +} void tst_qfile::readSmallFiles_posix() { readSmallFiles(); @@ -498,10 +529,15 @@ void tst_qfile::readSmallFiles_QFile_data() void tst_qfile::readSmallFiles_QFSFileEngine_data() { +#ifdef QT_BUILD_INTERNAL readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::NotOpen); readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered); readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::NotOpen); readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered); +#else + QTest::addColumn("dummy"); + QTest::newRow("Test will be skipped") << -1; +#endif } void tst_qfile::readSmallFiles_posix_data() @@ -606,6 +642,7 @@ void tst_qfile::readSmallFiles() } } break; +#ifdef QT_BUILD_INTERNAL case(QFSFileEngineBenchmark): { QList fileList; Q_FOREACH(QString file, files) { @@ -626,6 +663,7 @@ void tst_qfile::readSmallFiles() } } break; +#endif case(PosixBenchmark): { QList fileList; Q_FOREACH(QString file, files) { diff --git a/tests/benchmarks/corelib/io/qfile/qfile.pro b/tests/benchmarks/corelib/io/qfile/qfile.pro index 933469071d..5f7b9af73f 100644 --- a/tests/benchmarks/corelib/io/qfile/qfile.pro +++ b/tests/benchmarks/corelib/io/qfile/qfile.pro @@ -1,6 +1,6 @@ TEMPLATE = app TARGET = tst_bench_qfile -QT = core testlib +QT = core core-private testlib win32: DEFINES+= _CRT_SECURE_NO_WARNINGS SOURCES += main.cpp -- cgit v1.2.3