- 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
qdir_p.h \
qdiriterator.h \
qfile.h \
- qabstractfileengine.h \
+ qabstractfileengine_p.h \
qfileinfo.h \
qglobal.h \
qnumeric.h \
# Qt core io module
HEADERS += \
- io/qabstractfileengine.h \
io/qabstractfileengine_p.h \
io/qbuffer.h \
io/qdatastream.h \
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 \
**
****************************************************************************/
-#include "qabstractfileengine.h"
#include "private/qabstractfileengine_p.h"
+#include "private/qfsfileengine_p.h"
#ifdef QT_BUILD_CORE_LIB
#include "private/qresource_p.h"
#endif
#include "qreadwritelock.h"
#include "qvariant.h"
// built-in handlers
-#include "qfsfileengine.h"
#include "qdiriterator.h"
#include "qstringbuilder.h"
/*!
\class QAbstractFileEngineHandler
\reentrant
+ \internal
\brief The QAbstractFileEngineHandler class provides a way to register
custom file engines with your application.
/*!
\class QAbstractFileEngine
\reentrant
+ \internal
\brief The QAbstractFileEngine class provides an abstraction for accessing
the filesystem.
\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.
+++ /dev/null
-/****************************************************************************
-**
-** 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 <QtCore/qdir.h>
-
-#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<QAbstractFileEnginePrivate> 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<QAbstractFileEngineIteratorPrivate> d;
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QABSTRACTFILEENGINE_H
// 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<QAbstractFileEnginePrivate> 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<QAbstractFileEngineIteratorPrivate> d;
+};
+
class QAbstractFileEnginePrivate
{
public:
#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"
#include "qdiriterator.h"
#include "qdir_p.h"
-
-#include "qabstractfileengine.h"
+#include "qabstractfileengine_p.h"
#include <QtCore/qset.h>
#include <QtCore/qstack.h>
#include <QtCore/private/qfilesystementry_p.h>
#include <QtCore/private/qfilesystemmetadata_p.h>
#include <QtCore/private/qfilesystemengine_p.h>
-#include <QtCore/qfsfileengine.h>
#include <QtCore/private/qfileinfo_p.h>
QT_BEGIN_NAMESPACE
#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"
\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)
{
Returns true if the unmap succeeds; false otherwise.
- \sa map(), QAbstractFileEngine::supportsExtension()
+ \sa map()
*/
bool QFile::unmap(uchar *address)
{
// We mean it.
//
-#include "QtCore/qabstractfileengine.h"
+#include "private/qabstractfileengine_p.h"
#include "private/qiodevice_p.h"
#include "private/qringbuffer_p.h"
//
#include "qfileinfo.h"
-#include "qabstractfileengine.h"
#include "qdatetime.h"
#include "qatomic.h"
#include "qshareddata.h"
#include "qfilesystemengine_p.h"
+#include <QtCore/private/qabstractfileengine_p.h>
#include <QtCore/private/qfilesystementry_p.h>
#include <QtCore/private/qfilesystemmetadata_p.h>
#include "qplatformdefs.h"
#include "qfilesystemengine_p.h"
#include "qplatformdefs.h"
-#include "qfsfileengine.h"
#include "qfile.h"
#include <QtCore/qvarlengtharray.h>
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;
#define _POSIX_
#include "qplatformdefs.h"
-#include "qabstractfileengine.h"
+#include "private/qabstractfileengine_p.h"
#include "private/qfsfileengine_p.h"
#include <private/qsystemlibrary_p.h>
#include <qdebug.h>
#include "qplatformdefs.h"
#include <QtCore/qglobal.h>
#include <QtCore/qdatetime.h>
-#include <QtCore/qabstractfileengine.h>
+#include <QtCore/private/qabstractfileengine_p.h>
// Platform-specific includes
#ifdef Q_OS_WIN
/*! \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.
+++ /dev/null
-/****************************************************************************
-**
-** 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 <QtCore/qabstractfileengine.h>
-
-#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
// We mean it.
//
-#include "qabstractfileengine.h"
+#include "private/qabstractfileengine_p.h"
#include "qfilesystemiterator_p.h"
#include "qdir.h"
//
#include "qplatformdefs.h"
-#include "QtCore/qfsfileengine.h"
-#include "private/qabstractfileengine_p.h"
+#include "QtCore/private/qabstractfileengine_p.h"
#include <QtCore/private/qfilesystementry_p.h>
#include <QtCore/private/qfilesystemmetadata_p.h>
#include <qhash.h>
#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)
****************************************************************************/
#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"
#define _POSIX_
#include "qplatformdefs.h"
-#include "qabstractfileengine.h"
+#include "private/qabstractfileengine_p.h"
#include "private/qfsfileengine_p.h"
#include "qfilesystemengine_p.h"
#include <qdebug.h>
// We mean it.
//
-#include "qabstractfileengine.h"
+#include "qabstractfileengine_p.h"
#include "qdir.h"
QT_BEGIN_NAMESPACE
// We mean it.
//
-#include "QtCore/qabstractfileengine.h"
+#include "qabstractfileengine_p.h"
QT_BEGIN_NAMESPACE
#include "qnetworkreply_p.h"
#include "qnetworkaccessmanager.h"
#include <QFile>
-#include <QAbstractFileEngine>
+#include <private/qabstractfileengine_p.h>
QT_BEGIN_NAMESPACE
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)
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)
#include "qfileinfogatherer_p.h"
#include <qdebug.h>
-#include <qfsfileengine.h>
#include <qdiriterator.h>
#ifndef Q_OS_WIN
# include <unistd.h>
}
!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qabstractfileengine \
qfileinfo
win32:!contains(QT_CONFIG, private_tests): SUBDIRS -= \
CONFIG += testcase
TARGET = tst_qabstractfileengine
-QT = core testlib
+QT = core-private core testlib
SOURCES = tst_qabstractfileengine.cpp
RESOURCES += qabstractfileengine.qrc
**
****************************************************************************/
-#include <QtCore/QAbstractFileEngine>
-#include <QtCore/QFSFileEngine>
+#include <QtCore/private/qabstractfileengine_p.h>
+#include <QtCore/private/qfsfileengine_p.h>
#include <QtCore/QMutex>
#include <QtCore/QMutexLocker>
CONFIG += testcase parallel_test
TARGET = tst_qdir
-QT = core testlib
+QT = core core-private testlib
SOURCES = tst_qdir.cpp
RESOURCES += qdir.qrc
#include <qstringlist.h>
#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE))
+#include <QtCore/private/qfsfileengine_p.h>
#include "../../../network-settings.h"
#endif
#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) {
QTest::newRow("This drive should not exist") << driv << false;
}
#endif
+#endif
}
void tst_QDir::exists()
CONFIG += testcase parallel_test
TARGET = tst_qdiriterator
-QT = core testlib
+QT = core-private core testlib
SOURCES = tst_qdiriterator.cpp
RESOURCES += qdiriterator.qrc
#include <qfileinfo.h>
#include <qstringlist.h>
+#include <QtCore/private/qfsfileengine_p.h>
+
#if defined(Q_OS_VXWORKS)
#define Q_NO_SYMLINKS
#endif
// 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:
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()
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
#include <QtTest/QtTest>
#include <qplatformdefs.h>
-#include <QAbstractFileEngine>
-#include <QFSFileEngine>
#include <QCoreApplication>
#include <QDebug>
#include <QDir>
#include <QFile>
#include <QFileInfo>
+
+#include <private/qabstractfileengine_p.h>
+#include <private/qfsfileengine_p.h>
+
#if !defined(Q_OS_WINCE)
#include <QHostInfo>
#endif
# include <sys/statfs.h>
#elif defined(Q_OS_WINCE)
# include <qplatformdefs.h>
-# include <private/qfsfileengine_p.h>
#endif
#include <stdio.h>
QVERIFY(QFile::remove(newName));
}
+#ifdef QT_BUILD_INTERNAL
class MyEngine : public QAbstractFileEngine
{
public:
return new MyEngine(2);
}
};
+#endif
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");
MyHandler2 handler2;
file.setFileName("ole.bull");
QCOMPARE(file.size(), qint64(125));
-
+#endif
}
+#ifdef QT_BUILD_INTERNAL
class MyRecursiveHandler : public QAbstractFileEngineHandler
{
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()
NEWROW(QObject);
NEWROW(QBuffer);
NEWROW(QFile);
- NEWROW(QFSFileEngine);
NEWROW(QProcess);
NEWROW(QSettings);
NEWROW(QThread);
#include <QDebug>
#include <QTemporaryFile>
-#include <QFSFileEngine>
#include <QString>
#include <QDirIterator>
+#include <private/qfsfileengine_p.h>
+
#include <qtest.h>
#include <stdio.h>
public:
enum BenchmarkType {
QFileBenchmark = 1,
+#ifdef QT_BUILD_INTERNAL
QFSFileEngineBenchmark,
+#endif
Win32Benchmark,
PosixBenchmark,
QFileFromPosixBenchmark
}
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();
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<int>("dummy");
+ QTest::newRow("Test will be skipped") << -1;
+#endif
}
void tst_qfile::readBigFile_posix_data()
file.close();
}
break;
+#ifdef QT_BUILD_INTERNAL
case(QFSFileEngineBenchmark): {
QFSFileEngine fse(filename);
fse.open(QIODevice::ReadOnly|textMode|bufferedMode);
fse.close();
}
break;
+#endif
case(PosixBenchmark): {
QByteArray data = filename.toLocal8Bit();
const char* cfilename = data.constData();
{
QTest::addColumn<tst_qfile::BenchmarkType>("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;
file.close();
}
break;
+#ifdef QT_BUILD_INTERNAL
case(QFSFileEngineBenchmark): {
QFSFileEngine fse(filename);
fse.open(QIODevice::ReadOnly);
fse.close();
}
break;
+#endif
case(PosixBenchmark): {
QByteArray data = filename.toLocal8Bit();
const char* cfilename = data.constData();
{
QTest::addColumn<tst_qfile::BenchmarkType>("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
}
}
break;
+#ifdef QT_BUILD_INTERNAL
case(QFSFileEngineBenchmark): {
QBENCHMARK {
QFSFileEngine fse(filename);
}
}
break;
-
+#endif
case(PosixBenchmark): {
// ensure we don't account toLocal8Bit()
QByteArray data = filename.toLocal8Bit();
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();
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<int>("dummy");
+ QTest::newRow("Test will be skipped") << -1;
+#endif
}
void tst_qfile::readSmallFiles_posix_data()
}
}
break;
+#ifdef QT_BUILD_INTERNAL
case(QFSFileEngineBenchmark): {
QList<QFSFileEngine*> fileList;
Q_FOREACH(QString file, files) {
}
}
break;
+#endif
case(PosixBenchmark): {
QList<FILE*> fileList;
Q_FOREACH(QString file, files) {
TEMPLATE = app
TARGET = tst_bench_qfile
-QT = core testlib
+QT = core core-private testlib
win32: DEFINES+= _CRT_SECURE_NO_WARNINGS
SOURCES += main.cpp