42 ReadOwnerPerm = 0x4000, WriteOwnerPerm = 0x2000, ExeOwnerPerm = 0x1000,
43 ReadUserPerm = 0x0400, WriteUserPerm = 0x0200, ExeUserPerm = 0x0100,
44 ReadGroupPerm = 0x0040, WriteGroupPerm = 0x0020, ExeGroupPerm = 0x0010,
45 ReadOtherPerm = 0x0004, WriteOtherPerm = 0x0002, ExeOtherPerm = 0x0001,
50 DirectoryType = 0x40000,
54 HiddenFlag = 0x0100000,
55 LocalDiskFlag = 0x0200000,
56 ExistsFlag = 0x0400000,
61 PermsMask = 0x0000FFFF,
62 TypesMask = 0x000F0000,
63 FlagsMask = 0x0FF00000,
64 FileInfoAll = FlagsMask | PermsMask | TypesMask
66 Q_DECLARE_FLAGS(FileFlags, FileFlag)
87 enum class TriStateResult : qint8 {
93 virtual ~QAbstractFileEngine();
95 virtual bool open(QIODevice::OpenMode openMode,
96 std::optional<QFile::Permissions> permissions = std::nullopt);
99 virtual bool syncToDisk();
100 virtual qint64 size()
const;
101 virtual qint64 pos()
const;
102 virtual bool seek(qint64 pos);
103 virtual bool isSequential()
const;
104 virtual bool remove();
105 virtual bool copy(
const QString &newName);
106 virtual bool rename(
const QString &newName);
107 virtual bool renameOverwrite(
const QString &newName);
108 virtual bool link(
const QString &newName);
109 virtual bool mkdir(
const QString &dirName,
bool createParentDirectories,
110 std::optional<QFile::Permissions> permissions = std::nullopt)
const;
111 virtual bool rmdir(
const QString &dirName,
bool recurseParentDirectories)
const;
112 virtual bool setSize(qint64 size);
113 virtual bool caseSensitive()
const;
114 virtual bool isRelativePath()
const;
115 virtual FileFlags fileFlags(FileFlags type=FileInfoAll)
const;
116 virtual bool setPermissions(uint perms);
117 virtual QByteArray id()
const;
118 virtual QString fileName(FileName file=DefaultName)
const;
119 virtual uint ownerId(FileOwner)
const;
120 virtual QString owner(FileOwner)
const;
121 virtual bool setFileTime(
const QDateTime &newDate, QFile::FileTime time);
122 virtual QDateTime fileTime(QFile::FileTime time)
const;
123 virtual void setFileName(
const QString &file);
124 virtual int handle()
const;
125 virtual TriStateResult cloneTo(QAbstractFileEngine *target);
127 uchar *map(qint64 offset, qint64 size, QFile::MemoryMapFlags flags);
128 bool unmap(uchar *ptr);
130 typedef QAbstractFileEngineIterator Iterator;
131 using IteratorUniquePtr = std::unique_ptr<Iterator>;
133 virtual IteratorUniquePtr endEntryList() {
return {}; }
134 virtual IteratorUniquePtr
135 beginEntryList(
const QString &path, QDirListing::IteratorFlags filters,
136 const QStringList &filterNames);
138 virtual qint64 read(
char *data, qint64 maxlen);
139 virtual qint64 readLine(
char *data, qint64 maxlen);
140 virtual qint64 write(
const char *data, qint64 len);
142 QFile::FileError error()
const;
143 QString errorString()
const;
147 FastReadLineExtension,
151 class ExtensionOption
153 class ExtensionReturn
156 class MapExtensionOption :
public ExtensionOption {
157 Q_DISABLE_COPY_MOVE(MapExtensionOption)
161 QFile::MemoryMapFlags flags;
162 constexpr MapExtensionOption(qint64 off, qint64 sz, QFile::MemoryMapFlags f)
163 : offset(off), size(sz), flags(f) {}
165 class MapExtensionReturn :
public ExtensionReturn {
166 Q_DISABLE_COPY_MOVE(MapExtensionReturn)
168 MapExtensionReturn() =
default;
169 uchar *address =
nullptr;
172 class UnMapExtensionOption :
public ExtensionOption {
173 Q_DISABLE_COPY_MOVE(UnMapExtensionOption)
175 uchar *address =
nullptr;
176 constexpr UnMapExtensionOption(uchar *p) : address(p) {}
179 virtual bool extension(Extension extension,
const ExtensionOption *option =
nullptr, ExtensionReturn *output =
nullptr);
180 virtual bool supportsExtension(Extension extension)
const;
183 static std::unique_ptr<QAbstractFileEngine> create(
const QString &fileName);
186 void setError(QFile::FileError error,
const QString &str);
188 QAbstractFileEngine();
189 QAbstractFileEngine(QAbstractFileEnginePrivate &);
191 QScopedPointer<QAbstractFileEnginePrivate> d_ptr;
193 Q_DECLARE_PRIVATE(QAbstractFileEngine)
194 Q_DISABLE_COPY_MOVE(QAbstractFileEngine)
199class Q_CORE_EXPORT QAbstractFileEngineHandler
201 Q_DISABLE_COPY_MOVE(QAbstractFileEngineHandler)
203 QAbstractFileEngineHandler();
204 virtual ~QAbstractFileEngineHandler();
205 virtual std::unique_ptr<QAbstractFileEngine> create(
const QString &fileName)
const = 0;
211 QAbstractFileEngineIterator(
const QString &path, QDir::Filters filters,
212 const QStringList &nameFilters);
213 QAbstractFileEngineIterator(
const QString &path, QDirListing::IteratorFlags filters,
214 const QStringList &nameFilters);
215 virtual ~QAbstractFileEngineIterator();
217 virtual bool advance() = 0;
219 QString path()
const;
220 QStringList nameFilters()
const;
221 QDir::Filters filters()
const;
223 virtual QString currentFileName()
const = 0;
224 virtual QFileInfo currentFileInfo()
const;
225 virtual QString currentFilePath()
const;
228 mutable QFileInfo m_fileInfo;
231 Q_DISABLE_COPY_MOVE(QAbstractFileEngineIterator)
232 friend class QDirIterator;
233 friend class QDirIteratorPrivate;
234 friend class QDirListingPrivate;
236 QDir::Filters m_filters;
237 QDirListing::IteratorFlags m_listingFilters;
238 QStringList m_nameFilters;