Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qfile.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// Copyright (C) 2016 Intel Corporation.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4// Qt-Security score:significant reason:default
5
6#ifndef QFILE_H
7#define QFILE_H
8
9#include <QtCore/qfiledevice.h>
10#include <QtCore/qstring.h>
11
12#include <stdio.h>
13#include <optional>
14
15#ifdef open
16#error qfile.h must be included before any header file that defines open
17#endif
18
20
21#if defined(Q_OS_WIN) || defined(Q_QDOC)
22
23#if QT_DEPRECATED_SINCE(6,6)
24QT_DEPRECATED_VERSION_X_6_6("Use QNtfsPermissionCheckGuard RAII class instead.")
25Q_CORE_EXPORT extern int qt_ntfs_permission_lookup; // defined in qfilesystemengine_win.cpp
26#endif
27
28Q_CORE_EXPORT bool qEnableNtfsPermissionChecks() noexcept;
29Q_CORE_EXPORT bool qDisableNtfsPermissionChecks() noexcept;
30Q_CORE_EXPORT bool qAreNtfsPermissionChecksEnabled() noexcept;
31
32class QNtfsPermissionCheckGuard
33{
34 Q_DISABLE_COPY_MOVE(QNtfsPermissionCheckGuard)
35public:
36 Q_NODISCARD_CTOR
37 QNtfsPermissionCheckGuard()
38 {
39 qEnableNtfsPermissionChecks();
40 }
41
42 ~QNtfsPermissionCheckGuard()
43 {
44 qDisableNtfsPermissionChecks();
45 }
46};
47#endif // Q_OS_WIN
48
49#if QT_CONFIG(cxx17_filesystem)
50namespace QtPrivate {
51// Both std::filesystem::path and QString (without QT_NO_CAST_FROM_ASCII) can be implicitly
52// constructed from string literals so we force the std::fs::path parameter to only
53// accept std::fs::path with no implicit conversions.
54// ### Qt7: use Q_WEAK_OVERLOAD
55template<typename T>
56using ForceFilesystemPath = typename std::enable_if_t<std::is_same_v<std::filesystem::path, T>, int>;
57}
58#endif // QT_CONFIG(cxx17_filesystem)
59
60class QTemporaryFile;
61class QFilePrivate;
62
63// ### Qt 7: remove this, and make constructors always explicit.
64#if (QT_VERSION >= QT_VERSION_CHECK(6, 9, 0)) || defined(QT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH)
65# define QFILE_MAYBE_EXPLICIT explicit
66#else
67# define QFILE_MAYBE_EXPLICIT Q_IMPLICIT
68#endif
69
70class Q_CORE_EXPORT QFile : public QFileDevice
71{
72#ifndef QT_NO_QOBJECT
73 Q_OBJECT
74#endif
75 Q_DECLARE_PRIVATE(QFile)
76
77public:
78 QFile();
79 QFILE_MAYBE_EXPLICIT QFile(const QString &name);
80#ifdef Q_QDOC
81 QFILE_MAYBE_EXPLICIT QFile(const std::filesystem::path &name);
82#elif QT_CONFIG(cxx17_filesystem)
83 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
84 QFILE_MAYBE_EXPLICIT QFile(const T &name) : QFile(QtPrivate::fromFilesystemPath(name))
85 {
86 }
87#endif // QT_CONFIG(cxx17_filesystem)
88
89#ifndef QT_NO_QOBJECT
90 explicit QFile(QObject *parent);
91 QFile(const QString &name, QObject *parent);
92
93#ifdef Q_QDOC
94 QFile(const std::filesystem::path &path, QObject *parent);
95#elif QT_CONFIG(cxx17_filesystem)
96 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
97 QFile(const T &path, QObject *parent) : QFile(QtPrivate::fromFilesystemPath(path), parent)
98 {
99 }
100#endif // QT_CONFIG(cxx17_filesystem)
101#endif // !QT_NO_QOBJECT
102 ~QFile();
103
104 QString fileName() const override;
105#if QT_CONFIG(cxx17_filesystem) || defined(Q_QDOC)
106 std::filesystem::path filesystemFileName() const
107 { return QtPrivate::toFilesystemPath(fileName()); }
108#endif
109 void setFileName(const QString &name);
110#ifdef Q_QDOC
111 void setFileName(const std::filesystem::path &name);
112#elif QT_CONFIG(cxx17_filesystem)
113 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
114 void setFileName(const T &name)
115 {
116 setFileName(QtPrivate::fromFilesystemPath(name));
117 }
118#endif // QT_CONFIG(cxx17_filesystem)
119
120#if defined(Q_OS_DARWIN)
121 // Mac always expects filenames in UTF-8... and decomposed...
122 static inline QByteArray encodeName(const QString &fileName)
123 {
124 return fileName.normalized(QString::NormalizationForm_D).toUtf8();
125 }
126 static QString decodeName(const QByteArray &localFileName)
127 {
128 // note: duplicated in qglobal.cpp (qEnvironmentVariable)
129 return QString::fromUtf8(localFileName).normalized(QString::NormalizationForm_C);
130 }
131 static inline QString decodeName(const char *localFileName)
132 {
133 return QString::fromUtf8(localFileName).normalized(QString::NormalizationForm_C);
134 }
135#else
136 static inline QByteArray encodeName(const QString &fileName)
137 {
138 return fileName.toLocal8Bit();
139 }
140 static QString decodeName(const QByteArray &localFileName)
141 {
142 return QString::fromLocal8Bit(localFileName);
143 }
144 static inline QString decodeName(const char *localFileName)
145 {
146 return QString::fromLocal8Bit(localFileName);
147 }
148#endif
149
150 bool exists() const;
151 static bool exists(const QString &fileName);
152#ifdef Q_QDOC
153 static bool exists(const std::filesystem::path &fileName);
154#elif QT_CONFIG(cxx17_filesystem)
155 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
156 static bool exists(const T &fileName)
157 {
158 return exists(QtPrivate::fromFilesystemPath(fileName));
159 }
160#endif // QT_CONFIG(cxx17_filesystem)
161
162 QString symLinkTarget() const;
163 static QString symLinkTarget(const QString &fileName);
164#ifdef Q_QDOC
165 std::filesystem::path filesystemSymLinkTarget() const;
166 static std::filesystem::path filesystemSymLinkTarget(const std::filesystem::path &fileName);
167#elif QT_CONFIG(cxx17_filesystem)
168 std::filesystem::path filesystemSymLinkTarget() const
169 {
170 return QtPrivate::toFilesystemPath(symLinkTarget());
171 }
172 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
173 static std::filesystem::path filesystemSymLinkTarget(const T &fileName)
174 {
175 return QtPrivate::toFilesystemPath(symLinkTarget(QtPrivate::fromFilesystemPath(fileName)));
176 }
177#endif // QT_CONFIG(cxx17_filesystem)
178
179 bool remove();
180 static bool remove(const QString &fileName);
181#ifdef Q_QDOC
182 static bool remove(const std::filesystem::path &fileName);
183#elif QT_CONFIG(cxx17_filesystem)
184 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
185 static bool remove(const T &fileName)
186 {
187 return remove(QtPrivate::fromFilesystemPath(fileName));
188 }
189#endif // QT_CONFIG(cxx17_filesystem)
190
191 Q_DECL_PURE_FUNCTION static bool supportsMoveToTrash();
192 bool moveToTrash();
193 static bool moveToTrash(const QString &fileName, QString *pathInTrash = nullptr);
194#ifdef Q_QDOC
195 static bool moveToTrash(const std::filesystem::path &fileName, QString *pathInTrash = nullptr);
196#elif QT_CONFIG(cxx17_filesystem)
197 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
198 static bool moveToTrash(const T &fileName, QString *pathInTrash = nullptr)
199 {
200 return moveToTrash(QtPrivate::fromFilesystemPath(fileName), pathInTrash);
201 }
202#endif // QT_CONFIG(cxx17_filesystem)
203
204 bool rename(const QString &newName);
205 static bool rename(const QString &oldName, const QString &newName);
206#ifdef Q_QDOC
207 bool rename(const std::filesystem::path &newName);
208 static bool rename(const std::filesystem::path &oldName,
209 const std::filesystem::path &newName);
210#elif QT_CONFIG(cxx17_filesystem)
211 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
212 bool rename(const T &newName)
213 {
214 return rename(QtPrivate::fromFilesystemPath(newName));
215 }
216 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
217 static bool rename(const T &oldName, const T &newName)
218 {
219 return rename(QtPrivate::fromFilesystemPath(oldName),
220 QtPrivate::fromFilesystemPath(newName));
221 }
222#endif // QT_CONFIG(cxx17_filesystem)
223
224 bool link(const QString &newName);
225 static bool link(const QString &fileName, const QString &newName);
226#ifdef Q_QDOC
227 bool link(const std::filesystem::path &newName);
228 static bool link(const std::filesystem::path &fileName,
229 const std::filesystem::path &newName);
230#elif QT_CONFIG(cxx17_filesystem)
231 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
232 bool link(const T &newName)
233 {
234 return link(QtPrivate::fromFilesystemPath(newName));
235 }
236 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
237 static bool link(const T &fileName, const T &newName)
238 {
239 return link(QtPrivate::fromFilesystemPath(fileName),
240 QtPrivate::fromFilesystemPath(newName));
241 }
242#endif // QT_CONFIG(cxx17_filesystem)
243
244#if QT_CONFIG(temporaryfile)
245 bool copy(const QString &newName, std::optional<QFileDevice::Permissions> perm = std::nullopt);
246 static bool copy(const QString &fileName, const QString &newName,
247 std::optional<QFileDevice::Permissions> perm = std::nullopt);
248# if QT_CORE_REMOVED_SINCE(6, 12)
249 bool copy(const QString &newName);
250 static bool copy(const QString &fileName, const QString &newName);
251# endif
252#endif
253#ifdef Q_QDOC
254 bool copy(const std::filesystem::path &newName);
255 static bool copy(const std::filesystem::path &fileName,
256 const std::filesystem::path &newName);
257#elif QT_CONFIG(cxx17_filesystem) && QT_CONFIG(temporaryfile)
258 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
259 bool copy(const T &newName)
260 {
261 return copy(QtPrivate::fromFilesystemPath(newName));
262 }
263 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
264 static bool copy(const T &fileName, const T &newName)
265 {
266 return copy(QtPrivate::fromFilesystemPath(fileName),
267 QtPrivate::fromFilesystemPath(newName));
268 }
269#endif // QT_CONFIG(cxx17_filesystem)
270
271 QFILE_MAYBE_NODISCARD bool open(OpenMode flags) override;
272 QFILE_MAYBE_NODISCARD bool open(OpenMode flags, Permissions permissions);
273 QFILE_MAYBE_NODISCARD bool open(FILE *f, OpenMode ioFlags, FileHandleFlags handleFlags=DontCloseHandle);
274 QFILE_MAYBE_NODISCARD bool open(int fd, OpenMode ioFlags, FileHandleFlags handleFlags=DontCloseHandle);
275
276 qint64 size() const override;
277
278 bool resize(qint64 sz) override;
279 static bool resize(const QString &filename, qint64 sz);
280
281 Permissions permissions() const override;
282 static Permissions permissions(const QString &filename);
283 bool setPermissions(Permissions permissionSpec) override;
284 static bool setPermissions(const QString &filename, Permissions permissionSpec);
285#ifdef Q_QDOC
286 static Permissions permissions(const std::filesystem::path &filename);
287 static bool setPermissions(const std::filesystem::path &filename, Permissions permissionSpec);
288#elif QT_CONFIG(cxx17_filesystem)
289 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
290 static Permissions permissions(const T &filename)
291 {
292 return permissions(QtPrivate::fromFilesystemPath(filename));
293 }
294 template<typename T, QtPrivate::ForceFilesystemPath<T> = 0>
295 static bool setPermissions(const T &filename, Permissions permissionSpec)
296 {
297 return setPermissions(QtPrivate::fromFilesystemPath(filename), permissionSpec);
298 }
299#endif // QT_CONFIG(cxx17_filesystem)
300
301protected:
302#ifdef QT_NO_QOBJECT
303 QFile(QFilePrivate &dd);
304#else
305 QFile(QFilePrivate &dd, QObject *parent = nullptr);
306#endif
307
308private:
309 friend class QTemporaryFile;
310 Q_DISABLE_COPY(QFile)
311};
312
313QT_END_NAMESPACE
314
315#endif // QFILE_H
Definition moc.h:234
bool testFunctionAttribute(Token tok, FunctionDef *def)
Definition moc.cpp:359
void parseEnumOrFlag(BaseDef *def, QtMocConstants::EnumFlags flags)
Definition moc.cpp:1876
bool hasGlobalModuleFragment
Definition moc.h:262
void checkSuperClasses(ClassDef *def)
Definition moc.cpp:2144
Moc()
Definition moc.h:238
void parse()
Definition moc.cpp:775
bool inPrivateModuleFragment
Definition moc.h:261
bool parseEnum(EnumDef *def, ClassDef *containingClass)
Definition moc.cpp:250
void parseProperty(ClassDef *def, PropertyMode mode)
Definition moc.cpp:1771
QByteArray lexemUntil(Token)
Definition moc.cpp:2044
EncounteredQmlMacro parseClassInfo(BaseDef *def)
Definition moc.cpp:1915
bool until(Token)
Definition moc.cpp:2064
QList< QByteArray > includeFiles
Definition moc.h:248
QList< QByteArray > moduleFragmentIncludes
Definition moc.h:273
bool requireCompleteTypes
Definition moc.h:246
QHash< QByteArray, QByteArray > knownQObjectClasses
Definition moc.h:253
void createPropertyDef(PropertyDef &def, int propertyIndex, PropertyMode mode)
Definition moc.cpp:1571
void parseClassInfo(ClassDef *def)
Definition moc.cpp:1942
QByteArrayView strippedFileName() const
Definition moc.cpp:1266
bool parseClassHead(ClassDef *def)
Definition moc.cpp:39
void parsePrivateProperty(ClassDef *def, PropertyMode mode)
Definition moc.cpp:1863
QByteArray includePath
Definition moc.h:247
QByteArray filename
Definition moc.h:242
void parseFlag(BaseDef *def)
Definition moc.cpp:1891
void parsePrivateModuleFragment(qsizetype rewind)
Definition moc.cpp:754
void parseSignals(ClassDef *def)
Definition moc.cpp:1527
void parseDeclareMetatype()
Definition moc.cpp:2004
void parsePropertyAttributes(PropertyDef &propDef)
Definition moc.cpp:1610
void parseInterfaces(ClassDef *def)
Definition moc.cpp:1948
bool testFunctionRevision(FunctionDef *def)
Definition moc.cpp:422
bool testFunctionAttribute(FunctionDef *def)
Definition moc.cpp:350
void prependNamespaces(BaseDef &def, const QList< NamespaceDef > &namespaceList) const
Definition moc.cpp:656
QHash< QByteArray, QByteArray > knownGadgets
Definition moc.h:254
QList< QByteArray > metaTypes
Definition moc.h:251
bool parseFunction(FunctionDef *def, bool inMacro=false)
Definition moc.cpp:434
QByteArray parsePropertyAccessor()
Definition moc.cpp:1845
QMap< QString, QJsonArray > metaArgs
Definition moc.h:255
bool testForFunctionModifiers(FunctionDef *def)
Definition moc.cpp:538
const QByteArray & toFullyQualified(const QByteArray &name) const noexcept
Definition moc.cpp:30
void parseSlots(ClassDef *def, FunctionDef::Access access)
Definition moc.cpp:1485
void parseDeclareInterface()
Definition moc.cpp:1981
void checkListSizes(const ClassDef &def)
Definition moc.cpp:666
QTypeRevision parseRevision()
Definition moc.cpp:391
void parseMocInclude()
Definition moc.cpp:2013
QList< QString > parsedPluginMetadataFiles
Definition moc.h:256
bool skipCxxAttributes()
Definition moc.cpp:382
qsizetype firstSourceSymbolIndex
Definition moc.h:267
PropertyMode
Definition moc.h:236
@ Anonymous
Definition moc.h:236
@ Named
Definition moc.h:236
ModuleUnitKind moduleUnitKind
Definition moc.h:258
bool mustIncludeQPluginH
Definition moc.h:245
bool parseMaybeFunction(const ClassDef *cdef, FunctionDef *def)
Definition moc.cpp:546
void checkProperties(ClassDef *cdef)
Definition moc.cpp:2202
Type parseType()
Definition moc.cpp:130
void parseModuleDeclaration(qsizetype rewind, bool exported)
Definition moc.cpp:702
void parseFunctionArguments(FunctionDef *def)
Definition moc.cpp:310
void parseSlotInPrivate(ClassDef *def, FunctionDef::Access access)
Definition moc.cpp:2023
bool inClass(const ClassDef *def) const
Definition moc.h:283
void parsePluginData(ClassDef *def)
Definition moc.cpp:1781
QByteArray modulePartitionName
Definition moc.h:260
void generate(FILE *out, FILE *jsonOutput)
Definition moc.cpp:1343
QMap< QByteArray, QByteArray > interface2IdMap
Definition moc.h:250
bool noInclude
Definition moc.h:244
EncounteredQmlMacro
Definition moc.h:312
bool inNamespace(const NamespaceDef *def) const
Definition moc.h:287
QList< ClassDef > classList
Definition moc.h:249
QByteArray moduleName
Definition moc.h:259
QByteArray resolveIncludeNext(const QByteArray &filename, qsizetype startIndex, qsizetype *foundIndex=nullptr)
void setDebugIncludes(bool value)
void parseDefineArguments(Macro *m)
void skipUntilEndif()
Symbols preprocessed(const QByteArray &filename, QFile *device)
void substituteUntilNewline(Symbols &substituted)
QList< QByteArray > frameworks
QHash< QByteArray, IncludeResolution > nonlocalIncludePathResolutionCache
static bool preprocessOnly
QByteArray resolveInclude(const QByteArray &filename, const QByteArray &relativeTo, qsizetype *foundIndex=nullptr)
static Symbols macroExpandIdentifier(Preprocessor *that, SymbolStack &symbols, int lineNum, QByteArray *macroName)
static Symbols tokenize(const QByteArray &input, int lineNum=1, TokenizeMode mode=TokenizeCpp)
static void macroExpand(Symbols *into, Preprocessor *that, const Symbols &toExpand, qsizetype &index, int lineNum, bool one, const QSet< QByteArray > &excludeSymbols=QSet< QByteArray >())
@ PreparePreprocessorStatement
@ TokenizePreprocessorStatement
The QCommandLineOption class defines a possible command-line option. \inmodule QtCore.
The QCommandLineParser class provides a means for handling the command line options.
\inmodule QtCore\reentrant
Definition qdatastream.h:50
Definition qfile.h:71
\inmodule QtCore\reentrant
Definition qjsonarray.h:19
\inmodule QtCore\reentrant
Definition qlist.h:82
Definition qmap.h:295
std::map< Key, T > toStdMap() const &
Definition qmap.h:333
QMap()=default
friend size_t qHash(const M &key, size_t seed=0) noexcept(QHashPrivate::noexceptPairHash< typename M::key_type, typename M::mapped_type >())
Definition qmap.h:968
T mapped_type
Definition qmap.h:304
QMap(std::map< Key, T > &&other)
Definition qmap.h:328
Key key_type
Definition qmap.h:303
std::map< Key, T > toStdMap() &&
Definition qmap.h:340
QMap(const std::map< Key, T > &other)
Definition qmap.h:323
friend bool comparesEqual(const QMap &lhs, const QMap &rhs)
Definition qmap.h:356
QMap(std::initializer_list< std::pair< Key, T > > list)
Definition qmap.h:317
void swap(QMap< Key, T > &other) noexcept
Definition qmap.h:312
\inmodule QtSql
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:177
\inmodule QtCore
constexpr Integer toEncodedVersion() const
Transforms the revision into an integer value, encoding the minor version into the least significant ...
constexpr QTypeRevision()=default
Produces an invalid revision.
constexpr quint8 majorVersion() const
Returns the major version encoded in the revision.
static constexpr QTypeRevision fromMajorVersion(Major majorVersion)
Produces a QTypeRevision from the given majorVersion with an invalid minor version.
static constexpr bool isValidSegment(Integer segment)
Returns true if the given number can be used as either major or minor version in a QTypeRevision.
static constexpr QTypeRevision zero()
Produces a QTypeRevision with major and minor version {0}.
static constexpr QTypeRevision fromEncodedVersion(Integer value)
Produces a QTypeRevision from the given value.
constexpr bool hasMajorVersion() const
Returns true if the major version is known, otherwise false.
static constexpr QTypeRevision fromMinorVersion(Minor minorVersion)
Produces a QTypeRevision from the given minorVersion with an invalid major version.
constexpr bool isValid() const
Returns true if the major version or the minor version is known, otherwise false.
friend constexpr Qt::strong_ordering compareThreeWay(const QTypeRevision &lhs, const QTypeRevision &rhs) noexcept
constexpr quint8 minorVersion() const
Returns the minor version encoded in the revision.
static constexpr QTypeRevision fromVersion(Major majorVersion, Minor minorVersion)
Produces a QTypeRevision from the given majorVersion and minorVersion, both of which need to be a val...
friend constexpr bool comparesEqual(const QTypeRevision &lhs, const QTypeRevision &rhs) noexcept
constexpr bool hasMinorVersion() const
Returns true if the minor version is known, otherwise false.
QByteArray unquotedLexem()
Definition symbols.h:105
const Symbol & symbol() const
Definition symbols.h:102
Token token()
Definition symbols.h:103
bool dontReplaceSymbol(const QByteArray &name) const
Definition symbols.h:125
bool hasNext()
Definition symbols.h:89
QByteArray lexem() const
Definition symbols.h:104
Token next()
Definition symbols.h:94
const SafeSymbols & constTop() const
Definition symbols.h:88
bool test(Token)
Definition symbols.h:111
QT_BEGIN_NAMESPACE int collectJson(const QStringList &jsonFiles, const QString &outputFile, bool skipStdIn)
Q_DECLARE_TYPEINFO(EnumDef, Q_RELOCATABLE_TYPE)
QByteArray noRef(const QByteArray &type)
Definition moc.h:344
Q_DECLARE_TYPEINFO(PropertyDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(NamespaceDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(ClassDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(ClassInfoDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(ClassDef::Interface, Q_RELOCATABLE_TYPE)
ModuleUnitKind
Definition moc.h:225
@ InterfacePartition
Definition moc.h:228
@ InternalPartition
Definition moc.h:229
@ PrimaryInterface
Definition moc.h:227
@ ImplementationUnit
Definition moc.h:230
Q_DECLARE_TYPEINFO(SuperClass, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(ArgumentDef, Q_RELOCATABLE_TYPE)
TypeTag
Definition moc.h:23
@ HasEnum
Definition moc.h:27
@ HasClass
Definition moc.h:26
@ None
Definition moc.h:24
@ HasStruct
Definition moc.h:25
Q_DECLARE_TYPEINFO(PrivateQPropertyDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(FunctionDef, Q_RELOCATABLE_TYPE)
std::conditional_t< std::is_same_v< HashKey, q20::remove_cvref_t< KeyArgument > >, KeyArgument, HashKey > HeterogenousConstructProxy
Definition qhash.h:834
Combined button and popup list for selecting options.
constexpr PropertyFlags DefaultPropertyFlags
QString && asString(QString &&s)
Definition qstring.h:1714
constexpr QAnyStringArg qStringLikeToArg(QAnyStringView s) noexcept
Definition qstring.h:1776
const QString & asString(const QString &s)
Definition qstring.h:1713
std::is_same< Char, char32_t > IsCompatibleChar32TypeHelper
Definition qstring.h:57
constexpr bool isLatin1(QLatin1StringView s) noexcept
Definition qstring.h:77
Definition qcompare.h:111
QHash< MacroName, Macro > Macros
SubArray MacroName
#define __has_builtin(x)
Q_DECLARE_TYPEINFO(QDateTime::Data, Q_RELOCATABLE_TYPE)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2620
#define QFILE_MAYBE_EXPLICIT
Definition qfile.h:65
qsizetype erase_if(QMultiHash< Key, T > &hash, Predicate pred)
Definition qhash.h:2782
#define QT_SPECIALIZE_STD_HASH_TO_CALL_QHASH_BY_CREF(Class)
#define QT_SPECIALIZE_STD_HASH_TO_CALL_QHASH(Class, Arguments)
#define QT_SPECIALIZE_STD_HASH_TO_CALL_QHASH_BY_VALUE(Class)
#define QT_MK_QHASH_COMPAT(X)
QList< QVariant > QVariantList
Definition qjsonarray.h:16
QMultiMap< Key, T > operator+=(QMultiMap< Key, T > &lhs, const QMultiMap< Key, T > &rhs)
Definition qmap.h:1857
QSet(InputIterator, InputIterator) -> QSet< ValueType >
size_t qHash(const QSet< T > &key, size_t seed=0) noexcept(noexcept(qHashRangeCommutative(key.begin(), key.end(), seed)))
Definition qset.h:236
qsizetype erase_if(QSet< T > &set, Predicate pred)
Definition qset.h:448
QString operator+(const QString &s1, QChar s2)
Definition qstring.h:1577
QString operator+(QString &&lhs, const QString &rhs)
Definition qstring.h:1575
qsizetype erase_if(QString &s, Predicate pred)
Definition qstring.h:1814
#define QT_UNICODE_LITERAL(str)
Definition qstring.h:1848
#define qPrintable(string)
Definition qstring.h:1718
QString operator+(QString &&lhs, QChar rhs)
Definition qstring.h:1579
QString operator+(QChar s1, const QString &s2)
Definition qstring.h:1581
#define QStringLiteral(str)
Definition qstring.h:1865
QString operator+(const QString &s1, const QString &s2)
Definition qstring.h:1573
qsizetype erase(QString &s, const T &t)
Definition qstring.h:1808
static QByteArray combinePath(const QString &infile, const QString &outfile)
Definition main.cpp:40
static bool hasNext(const Symbols &symbols, int i)
Definition main.cpp:78
static const Symbol & next(const Symbols &symbols, int &i)
Definition main.cpp:81
int runMoc(int argc, char **argv)
Definition main.cpp:170
static auto openFileForWriting(const QString &name)
Definition main.cpp:62
void error(const char *msg="Invalid argument")
Definition main.cpp:56
static QStringList argumentsFromCommandLineAndFile(const QStringList &arguments, bool &hasOptionFiles)
Definition main.cpp:138
QByteArray composePreprocessorOutput(const Symbols &symbols)
Definition main.cpp:85
Q_DECLARE_TYPEINFO(QTypeRevision, Q_RELOCATABLE_TYPE)
int main(int argc, char *argv[])
[ctor_close]
QByteArray rightType
Definition moc.h:69
QByteArray normalizedType
Definition moc.h:69
QJsonObject toJson() const
Definition moc.cpp:2409
QByteArray name
Definition moc.h:69
ArgumentDef()
Definition moc.h:67
bool isDefault
Definition moc.h:70
Type type
Definition moc.h:68
Definition moc.h:162
qsizetype end
Definition moc.h:170
qsizetype begin
Definition moc.h:169
QMap< QByteArray, QByteArray > flagAliases
Definition moc.h:168
QByteArray qualified
Definition moc.h:164
qsizetype lineNumber
Definition moc.h:171
QByteArray classname
Definition moc.h:163
QList< ClassInfoDef > classInfoList
Definition moc.h:165
QList< EnumDef > enumList
Definition moc.h:167
Interface(const QByteArray &_className)
Definition moc.h:187
QByteArray className
Definition moc.h:189
QByteArray interfaceId
Definition moc.h:190
QMap< QString, QJsonArray > metaArgs
Definition moc.h:197
QJsonDocument metaData
Definition moc.h:198
QByteArray uri
Definition moc.h:196
QByteArray iid
Definition moc.h:195
bool hasQObject
Definition moc.h:208
QList< QList< Interface > > interfaceList
Definition moc.h:192
QList< FunctionDef > publicList
Definition moc.h:202
QList< FunctionDef > methodList
Definition moc.h:202
QList< PropertyDef > propertyList
Definition moc.h:204
QList< FunctionDef > constructorList
Definition moc.h:201
bool hasQGadget
Definition moc.h:209
QList< SuperClass > superclassList
Definition moc.h:182
bool isFinal
Definition moc.h:212
bool requireCompleteMethodTypes
Definition moc.h:211
bool hasQNamespace
Definition moc.h:210
QList< FunctionDef > slotList
Definition moc.h:202
QList< FunctionDef > signalList
Definition moc.h:202
int revisionedMethods
Definition moc.h:206
QJsonObject toJson() const
Definition moc.cpp:2277
QList< QByteArray > nonClassSignalList
Definition moc.h:203
QByteArray name
Definition moc.h:157
QByteArray value
Definition moc.h:158
Definition moc.h:53
QByteArray enumName
Definition moc.h:55
QFlags< QtMocConstants::EnumFlags > flags
Definition moc.h:58
QByteArray qualifiedType(const ClassDef *cdef) const
Definition moc.cpp:2488
QJsonObject toJson(const ClassDef &cdef) const
Definition moc.cpp:2466
QList< QByteArray > values
Definition moc.h:57
QByteArray name
Definition moc.h:54
QByteArray type
Definition moc.h:56
int lineNumber
Definition moc.h:61
bool isVirtual
Definition moc.h:91
bool isScriptable
Definition moc.h:100
bool wasCloned
Definition moc.h:94
QByteArray normalizedType
Definition moc.h:80
QJsonObject toJson(int index) const
Definition moc.cpp:2370
bool isCompat
Definition moc.h:98
bool inlineCode
Definition moc.h:93
Type type
Definition moc.h:78
bool isRawSlot
Definition moc.h:107
static void accessToJson(QJsonObject *obj, Access acs)
Definition moc.cpp:2400
Access access
Definition moc.h:86
bool isSignal
Definition moc.h:102
bool isSlot
Definition moc.h:101
bool isInvokable
Definition moc.h:99
QByteArray name
Definition moc.h:82
QByteArray inPrivateClass
Definition moc.h:83
bool isConst
Definition moc.h:90
QList< ArgumentDef > arguments
Definition moc.h:79
int lineNumber
Definition moc.h:88
int revision
Definition moc.h:87
bool returnTypeIsVolatile
Definition moc.h:96
bool isAbstract
Definition moc.h:106
bool isPrivateSignal
Definition moc.h:103
bool isDestructor
Definition moc.h:105
@ Public
Definition moc.h:85
@ Protected
Definition moc.h:85
@ Private
Definition moc.h:85
bool isConstructor
Definition moc.h:104
bool isStatic
Definition moc.h:92
QByteArray tag
Definition moc.h:81
qsizetype foundIndex
Simple structure used by the Doc and DocParser classes.
Symbols symbols
bool isVariadic
bool isFunction
Symbols arguments
bool doGenerate
Definition moc.h:221
bool hasQNamespace
Definition moc.h:220
QByteArray name
Definition moc.h:148
QByteArray storage
Definition moc.h:151
QByteArray accessor
Definition moc.h:150
QByteArray setter
Definition moc.h:149
QByteArray scriptable
Definition moc.h:125
QByteArray member
Definition moc.h:125
QByteArray notify
Definition moc.h:125
QByteArray write
Definition moc.h:125
int lineNumber
Definition moc.h:137
QByteArray inPrivateClass
Definition moc.h:125
int notifyId
Definition moc.h:126
bool final
Definition moc.h:132
QJsonObject toJson() const
Definition moc.cpp:2418
bool constant
Definition moc.h:131
Specification gspec
Definition moc.h:128
Specification
Definition moc.h:127
@ ReferenceSpec
Definition moc.h:127
@ ValueSpec
Definition moc.h:127
@ PointerSpec
Definition moc.h:127
bool override
Definition moc.h:134
bool stdCppSet() const
Definition moc.h:116
bool virtual_
Definition moc.h:133
QByteArray user
Definition moc.h:125
TypeTags typeTag
Definition moc.h:130
QByteArray read
Definition moc.h:125
qsizetype location
Definition moc.h:139
int revision
Definition moc.h:129
QByteArray bind
Definition moc.h:125
int relativeIndex
Definition moc.h:136
QByteArray designable
Definition moc.h:125
bool required
Definition moc.h:135
QByteArray stored
Definition moc.h:125
QByteArray name
Definition moc.h:125
QByteArray reset
Definition moc.h:125
QByteArray type
Definition moc.h:125
constexpr QAnyStringArg(QAnyStringView v) noexcept
Definition qstring.h:1760
QAnyStringView string
Definition qstring.h:1758
QLatin1StringView string
Definition qstring.h:1752
constexpr QLatin1StringArg(QLatin1StringView v) noexcept
Definition qstring.h:1754
constexpr QStringViewArg(QStringView v) noexcept
Definition qstring.h:1748
qsizetype index
Definition symbols.h:81
Symbols symbols
Definition symbols.h:78
QByteArray expandedMacro
Definition symbols.h:79
QByteArray array
Definition symbols.h:26
SubArray(const char *s)
Definition symbols.h:21
qsizetype len
Definition symbols.h:28
bool operator==(const SubArray &other) const
Definition symbols.h:29
qsizetype from
Definition symbols.h:27
SubArray()=default
SubArray(const QByteArray &a)
Definition symbols.h:20
SubArray(const QByteArray &a, qsizetype from, qsizetype len)
Definition symbols.h:22
QByteArray qualified
Definition moc.h:176
FunctionDef::Access access
Definition moc.h:177
QByteArray classname
Definition moc.h:175
qsizetype from
Definition symbols.h:70
QByteArrayView unquotedLexemView() const
Definition symbols.h:62
Symbol(int lineNum, Token token)
Definition symbols.h:48
operator SubArray() const
Definition symbols.h:64
QByteArrayView lexemView() const
Definition symbols.h:61
Token token
Definition symbols.h:58
void mergeStringLiteral(const Symbol &next)
bool operator==(const Symbol &o) const
Definition symbols.h:65
int lineNum
Definition symbols.h:57
Symbol()=default
Symbol(int lineNum, Token token, const QByteArray &lexem, qsizetype from, qsizetype len)
Definition symbols.h:53
QByteArray lexem() const
Definition symbols.h:59
QByteArray lex
Definition symbols.h:69
QByteArray unquotedLexem() const
Definition symbols.h:60
qsizetype len
Definition symbols.h:71
Symbol(int lineNum, Token token, const QByteArray &lexem)
Definition symbols.h:49
size_t qHash(const SubArray &key, size_t seed=0)
Definition symbols.h:39
Q_DECLARE_TYPEINFO(Symbol, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(SafeSymbols, Q_RELOCATABLE_TYPE)
QList< Symbol > Symbols
Definition symbols.h:75
#define FOR_ALL_TOKENS(F)
Definition token.h:11
Token PP_Token
Definition token.h:254