diff options
author | Morten Johan Sørvig <morten.sorvig@nokia.com> | 2011-02-25 10:22:00 (GMT) |
---|---|---|
committer | Morten Sorvig <msorvig@trolltech.com> | 2011-03-16 09:49:59 (GMT) |
commit | f0fc5b8a9ab3f4bca0022771e576722d63a78ca2 (patch) | |
tree | 1df0f1316970c77d84609f198fe86a91a2be506a /src | |
parent | 468142db15fe99c70505f507f6c2941706172853 (diff) | |
download | Qt-f0fc5b8a9ab3f4bca0022771e576722d63a78ca2.zip Qt-f0fc5b8a9ab3f4bca0022771e576722d63a78ca2.tar.gz Qt-f0fc5b8a9ab3f4bca0022771e576722d63a78ca2.tar.bz2 |
Add QT_NO_FILESYSTEMITERATOR.
This makes it possible to use the file-related classes
on platforms that does not have a native QFileSystemIterator
implementation.
One use case is that we want to use the Qt
resource system even if the platform file system
support is limited.
Reviewed-by: joao
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/global/qfeatures.h | 3 | ||||
-rw-r--r-- | src/corelib/global/qfeatures.txt | 8 | ||||
-rw-r--r-- | src/corelib/io/qdiriterator.cpp | 10 | ||||
-rw-r--r-- | src/corelib/io/qfilesystemiterator_p.h | 5 | ||||
-rw-r--r-- | src/corelib/io/qfilesystemiterator_unix.cpp | 4 |
5 files changed, 30 insertions, 0 deletions
diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h index d1a73a6..604d08a 100644 --- a/src/corelib/global/qfeatures.h +++ b/src/corelib/global/qfeatures.h @@ -79,6 +79,9 @@ // Effects //#define QT_NO_EFFECTS +// QFileSystemIterator +//#define QT_NO_FILESYSTEMITERATOR + // QFileSystemWatcher //#define QT_NO_FILESYSTEMWATCHER diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt index 4d938a9..6b861d4 100644 --- a/src/corelib/global/qfeatures.txt +++ b/src/corelib/global/qfeatures.txt @@ -242,6 +242,14 @@ Requires: Name: QFileSystemWatcher SeeAlso: ??? +Feature: FILESYSTEMITERATOR +Description: Provides fast file-system iteration. +for modications. +Section: File I/O +Requires: +Name: QFileSystemIterator +SeeAlso: ??? + # Widgets Feature: TREEWIDGET diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp index d293791..c7e56bd 100644 --- a/src/corelib/io/qdiriterator.cpp +++ b/src/corelib/io/qdiriterator.cpp @@ -142,7 +142,9 @@ public: #endif QDirIteratorPrivateIteratorStack<QAbstractFileEngineIterator> fileEngineIterators; +#ifndef QT_NO_FILESYSTEMITERATOR QDirIteratorPrivateIteratorStack<QFileSystemIterator> nativeIterators; +#endif QFileInfo currentFileInfo; QFileInfo nextFileInfo; @@ -204,9 +206,11 @@ void QDirIteratorPrivate::pushDirectory(const QFileInfo &fileInfo) // No iterator; no entry list. } } else { +#ifndef QT_NO_FILESYSTEMITERATOR QFileSystemIterator *it = new QFileSystemIterator(fileInfo.d_ptr->fileEntry, filters, nameFilters, iteratorFlags); nativeIterators << it; +#endif } } @@ -244,6 +248,7 @@ void QDirIteratorPrivate::advance() delete it; } } else { +#ifndef QT_NO_FILESYSTEMITERATOR QFileSystemEntry nextEntry; QFileSystemMetaData nextMetaData; @@ -260,6 +265,7 @@ void QDirIteratorPrivate::advance() nativeIterators.pop(); delete it; } +#endif } currentFileInfo = nextFileInfo; @@ -500,7 +506,11 @@ bool QDirIterator::hasNext() const if (d->engine) return !d->fileEngineIterators.isEmpty(); else +#ifndef QT_NO_FILESYSTEMITERATOR return !d->nativeIterators.isEmpty(); +#else + return false; +#endif } /*! diff --git a/src/corelib/io/qfilesystemiterator_p.h b/src/corelib/io/qfilesystemiterator_p.h index 66f4b1e..3477242 100644 --- a/src/corelib/io/qfilesystemiterator_p.h +++ b/src/corelib/io/qfilesystemiterator_p.h @@ -54,6 +54,9 @@ // #include <QtCore/qglobal.h> + +#ifndef QT_NO_FILESYSTEMITERATOR + #include <QtCore/qdir.h> #include <QtCore/qdiriterator.h> #include <QtCore/qstringlist.h> @@ -112,4 +115,6 @@ private: QT_END_NAMESPACE +#endif // QT_NO_FILESYSTEMITERATOR + #endif // include guard diff --git a/src/corelib/io/qfilesystemiterator_unix.cpp b/src/corelib/io/qfilesystemiterator_unix.cpp index 00ccd41..7c5fc29 100644 --- a/src/corelib/io/qfilesystemiterator_unix.cpp +++ b/src/corelib/io/qfilesystemiterator_unix.cpp @@ -42,6 +42,8 @@ #include "qplatformdefs.h" #include "qfilesystemiterator_p.h" +#ifndef QT_NO_FILESYSTEMITERATOR + #include <stdlib.h> #include <errno.h> @@ -111,3 +113,5 @@ bool QFileSystemIterator::advance(QFileSystemEntry &fileEntry, QFileSystemMetaDa } QT_END_NAMESPACE + +#endif // QT_NO_FILESYSTEMITERATOR |