Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qabstractfileengine_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QABSTRACTFILEENGINE_P_H
5#define QABSTRACTFILEENGINE_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtCore/private/qglobal_p.h>
19#include "QtCore/qfile.h"
20#include "QtCore/qdir.h"
21
22#include <memory>
23#include <optional>
24
25#ifdef open
26#error qabstractfileengine_p.h must be included before any header file that defines open
27#endif
28
30
31class QVariant;
34
35class Q_CORE_EXPORT QAbstractFileEngine
36{
37public:
38 enum FileFlag {
39 //perms (overlaps the QFile::Permission)
40 ReadOwnerPerm = 0x4000, WriteOwnerPerm = 0x2000, ExeOwnerPerm = 0x1000,
41 ReadUserPerm = 0x0400, WriteUserPerm = 0x0200, ExeUserPerm = 0x0100,
42 ReadGroupPerm = 0x0040, WriteGroupPerm = 0x0020, ExeGroupPerm = 0x0010,
43 ReadOtherPerm = 0x0004, WriteOtherPerm = 0x0002, ExeOtherPerm = 0x0001,
44
45 //types
46 LinkType = 0x10000,
47 FileType = 0x20000,
48 DirectoryType = 0x40000,
49 BundleType = 0x80000,
50
51 //flags
52 HiddenFlag = 0x0100000,
53 LocalDiskFlag = 0x0200000,
54 ExistsFlag = 0x0400000,
55 RootFlag = 0x0800000,
56 Refresh = 0x1000000,
57
58 //masks
59 PermsMask = 0x0000FFFF,
60 TypesMask = 0x000F0000,
61 FlagsMask = 0x0FF00000,
62 FileInfoAll = FlagsMask | PermsMask | TypesMask
63 };
64 Q_DECLARE_FLAGS(FileFlags, FileFlag)
65
80 enum FileOwner {
82 OwnerGroup
83 };
84
85
86 virtual ~QAbstractFileEngine();
87
88 virtual bool open(QIODevice::OpenMode openMode,
89 std::optional<QFile::Permissions> permissions = std::nullopt);
90 virtual bool close();
91 virtual bool flush();
92 virtual bool syncToDisk();
93 virtual qint64 size() const;
94 virtual qint64 pos() const;
95 virtual bool seek(qint64 pos);
96 virtual bool isSequential() const;
97 virtual bool remove();
98 virtual bool copy(const QString &newName);
99 virtual bool rename(const QString &newName);
100 virtual bool renameOverwrite(const QString &newName);
101 virtual bool link(const QString &newName);
102 virtual bool mkdir(const QString &dirName, bool createParentDirectories,
103 std::optional<QFile::Permissions> permissions = std::nullopt) const;
104 virtual bool rmdir(const QString &dirName, bool recurseParentDirectories) const;
105 virtual bool setSize(qint64 size);
106 virtual bool caseSensitive() const;
107 virtual bool isRelativePath() const;
108 virtual QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const;
109 virtual FileFlags fileFlags(FileFlags type=FileInfoAll) const;
110 virtual bool setPermissions(uint perms);
111 virtual QByteArray id() const;
112 virtual QString fileName(FileName file=DefaultName) const;
113 virtual uint ownerId(FileOwner) const;
114 virtual QString owner(FileOwner) const;
115 virtual bool setFileTime(const QDateTime &newDate, QFile::FileTime time);
116 virtual QDateTime fileTime(QFile::FileTime time) const;
117 virtual void setFileName(const QString &file);
118 virtual int handle() const;
119 virtual bool cloneTo(QAbstractFileEngine *target);
120 bool atEnd() const;
121 uchar *map(qint64 offset, qint64 size, QFile::MemoryMapFlags flags);
122 bool unmap(uchar *ptr);
123
125 using IteratorUniquePtr = std::unique_ptr<Iterator>;
126
127 virtual IteratorUniquePtr
128 beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames);
129 virtual IteratorUniquePtr endEntryList() { return {}; }
130
131 virtual qint64 read(char *data, qint64 maxlen);
132 virtual qint64 readLine(char *data, qint64 maxlen);
133 virtual qint64 write(const char *data, qint64 len);
134
135 QFile::FileError error() const;
136 QString errorString() const;
137
145 {};
147 {};
148
150 Q_DISABLE_COPY_MOVE(MapExtensionOption)
151 public:
154 QFile::MemoryMapFlags flags;
155 constexpr MapExtensionOption(qint64 off, qint64 sz, QFile::MemoryMapFlags f)
156 : offset(off), size(sz), flags(f) {}
157 };
159 Q_DISABLE_COPY_MOVE(MapExtensionReturn)
160 public:
162 uchar *address = nullptr;
163 };
164
166 Q_DISABLE_COPY_MOVE(UnMapExtensionOption)
167 public:
168 uchar *address = nullptr;
170 };
171
172 virtual bool extension(Extension extension, const ExtensionOption *option = nullptr, ExtensionReturn *output = nullptr);
173 virtual bool supportsExtension(Extension extension) const;
174
175 // Factory
176 static std::unique_ptr<QAbstractFileEngine> create(const QString &fileName);
177
178protected:
180
183
184 QScopedPointer<QAbstractFileEnginePrivate> d_ptr;
185private:
186 Q_DECLARE_PRIVATE(QAbstractFileEngine)
187 Q_DISABLE_COPY_MOVE(QAbstractFileEngine)
188};
189
190Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractFileEngine::FileFlags)
191
192class Q_CORE_EXPORT QAbstractFileEngineHandler
193{
194 Q_DISABLE_COPY_MOVE(QAbstractFileEngineHandler)
195public:
198 virtual std::unique_ptr<QAbstractFileEngine> create(const QString &fileName) const = 0;
199};
200
202{
203public:
204 QAbstractFileEngineIterator(const QString &path, QDir::Filters filters,
205 const QStringList &nameFilters);
207
208 virtual bool advance() = 0;
209
210 QString path() const;
211 QStringList nameFilters() const;
212 QDir::Filters filters() const;
213
214 virtual QString currentFileName() const = 0;
215 virtual QFileInfo currentFileInfo() const;
216 virtual QString currentFilePath() const;
217
218protected:
220
221private:
222 Q_DISABLE_COPY_MOVE(QAbstractFileEngineIterator)
223 friend class QDirIterator;
225 friend class QDirListingPrivate;
226
227 QDir::Filters m_filters;
228 QStringList m_nameFilters;
229 QString m_path;
230};
231
233{
234public:
236 : fileError(QFile::UnspecifiedError)
237 {
238 }
239 inline virtual ~QAbstractFileEnginePrivate() { }
240
243
245 Q_DECLARE_PUBLIC(QAbstractFileEngine)
246};
247
248std::unique_ptr<QAbstractFileEngine> qt_custom_file_engine_handler_create(const QString &path);
249
251
252#endif // QABSTRACTFILEENGINE_P_H
\inmodule QtCore \reentrant
virtual std::unique_ptr< QAbstractFileEngine > create(const QString &fileName) const =0
If this file handler can handle fileName, this method creates a file engine and returns it wrapped in...
The QAbstractFileEngineIterator class provides an iterator interface for custom file engines.
virtual QString currentFileName() const =0
This pure virtual function returns the name of the current directory entry, excluding the path.
virtual bool advance()=0
This pure virtual function advances the iterator to the next directory entry; if the operation was su...
constexpr MapExtensionOption(qint64 off, qint64 sz, QFile::MemoryMapFlags f)
\inmodule QtCore \reentrant
QAbstractFileEngineIterator Iterator
virtual IteratorUniquePtr endEntryList()
QScopedPointer< QAbstractFileEnginePrivate > d_ptr
FileOwner
\value OwnerUser The user who owns the file.
FileFlag
The permissions and types of a file, suitable for OR'ing together.
std::unique_ptr< Iterator > IteratorUniquePtr
FileName
These values are used to request a file name in a particular format.
\inmodule QtCore
Definition qbytearray.h:57
\inmodule QtCore\reentrant
Definition qdatetime.h:283
The QDirIterator class provides an iterator for directory entrylists.
\inmodule QtCore
Definition qdir.h:20
FileError
This enum describes the errors that may be returned by the error() function.
Definition qfiledevice.h:39
\inmodule QtCore
Definition qfile.h:93
\inmodule QtCore
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qvariant.h:65
void extension()
[6]
Definition dialogs.cpp:230
QString str
[2]
QMap< QString, QString > map
[6]
Combined button and popup list for selecting options.
std::unique_ptr< QAbstractFileEngine > qt_custom_file_engine_handler_create(const QString &path)
static jboolean copy(JNIEnv *, jobject)
DBusConnection const char DBusError * error
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
static ControlElement< T > * ptr(QWidget *widget)
GLuint64 GLenum void * handle
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLuint id
[7]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLfloat GLfloat f
GLenum type
GLenum target
GLbitfield flags
GLenum GLuint GLintptr offset
GLuint GLuint64EXT address
GLsizei const GLchar *const * path
GLfloat GLfloat p
[1]
GLuint GLenum option
GLenum GLsizei len
static void setError(QJsonObject *response, const QString &msg)
unsigned char uchar
Definition qtypes.h:32
unsigned int uint
Definition qtypes.h:34
long long qint64
Definition qtypes.h:60
ReturnedValue read(const char *data)
QT_BEGIN_NAMESPACE typedef uchar * output
QFile file
[0]
file setFileName("readme.txt")
file open(QIODevice::ReadOnly)
gzip write("uncompressed data")
settings remove("monkey")
const QStringList filters({"Image files (*.png *.xpm *.jpg)", "Text files (*.txt)", "Any files (*)" })
[6]
view create()