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
qqmlintegration.h
Go to the documentation of this file.
1// Copyright (C) 2021 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// Qt-Security score:insignificant
4
5#ifndef QMLINTEGRATION_H
6#define QMLINTEGRATION_H
7
8#include <QtCore/qglobal.h>
9
10// forward declarations of structs and functions defined in QtQml
11QT_BEGIN_NAMESPACE
12namespace QQmlPrivate {
13 template<typename, typename> struct QmlSingleton;
14 template<class, class, bool> struct QmlAttached;
15 template<class> struct QmlAttachedAccessor;
16 template<class, class> struct QmlExtended;
17 template<typename, typename> struct QmlInterface;
18 template<class, class>
20 template<class, class>
21 struct QmlUncreatable;
22 template<class, class>
23 struct QmlAnonymous;
24 template<class, class>
25 struct QmlSequence;
26 template<class, class>
27 struct QmlResolved;
28}
29
30template <typename T> class QList;
31
32template<typename... Args>
33void qmlRegisterTypesAndRevisions(const char *uri, int versionMajor,
34 QList<int> *qmlTypeIds = nullptr);
35
36QT_END_NAMESPACE
37
38
39#define QML_PRIVATE_NAMESPACE
40 QT_PREPEND_NAMESPACE(QQmlPrivate)
41
42#define QML_REGISTER_TYPES_AND_REVISIONS
43 QT_PREPEND_NAMESPACE(qmlRegisterTypesAndRevisions)
44
45
46#define QML_ELEMENT
47 Q_CLASSINFO("QML.Element", "auto")
48
49
50#define QML_ANONYMOUS
51 Q_CLASSINFO("QML.Element", "anonymous")
52 enum class QmlIsAnonymous{yes = true};
53 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlAnonymous;
54 QT_WARNING_PUSH
55 QT_WARNING_DISABLE_GCC("-Wredundant-decls")
56 template<typename... Args>
57 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *);
58 QT_WARNING_POP
59 inline constexpr void qt_qmlMarker_anonymous() {}
60
61#define QML_NAMED_ELEMENT(NAME)
62 Q_CLASSINFO("QML.Element", #NAME)
63
64#define QML_UNCREATABLE(REASON)
65 Q_CLASSINFO("QML.Creatable", "false")
66 Q_CLASSINFO("QML.UncreatableReason", REASON)
67 enum class QmlIsUncreatable {yes = true};
68 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlUncreatable;
69 QT_WARNING_PUSH
70 QT_WARNING_DISABLE_GCC("-Wredundant-decls")
71 template<typename... Args>
72 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *);
73 QT_WARNING_POP
74 inline constexpr void qt_qmlMarker_uncreatable() {}
75
76#define QML_VALUE_TYPE(NAME)
77 Q_CLASSINFO("QML.Element", #NAME)
78
79#define QML_CONSTRUCTIBLE_VALUE
80 Q_CLASSINFO("QML.Creatable", "true")
81 Q_CLASSINFO("QML.CreationMethod", "construct")
82
83#define QML_STRUCTURED_VALUE
84 Q_CLASSINFO("QML.Creatable", "true")
85 Q_CLASSINFO("QML.CreationMethod", "structured")
86
87#define QML_SINGLETON
88 Q_CLASSINFO("QML.Singleton", "true")
89 enum class QmlIsSingleton {yes = true};
90 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlSingleton;
91 QT_WARNING_PUSH
92 QT_WARNING_DISABLE_GCC("-Wredundant-decls")
93 template<typename... Args>
94 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *);
95 QT_WARNING_POP
96 inline constexpr void qt_qmlMarker_singleton() {}
97
98#define QML_ADDED_IN_MINOR_VERSION(VERSION)
99 Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(VERSION))
100
101#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
102 Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(MAJOR, MINOR))
103
104#define QML_EXTRA_VERSION(MAJOR, MINOR)
105 Q_CLASSINFO("QML.ExtraVersion", Q_REVISION(MAJOR, MINOR))
106
107#define QML_REMOVED_IN_MINOR_VERSION(VERSION)
108 Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(VERSION))
109
110#define QML_REMOVED_IN_VERSION(MAJOR, MINOR)
111 Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(MAJOR, MINOR))
112
113#define QML_ATTACHED(ATTACHED_TYPE)
114 Q_CLASSINFO("QML.Attached", #ATTACHED_TYPE)
115 using QmlAttachedType = ATTACHED_TYPE;
116 template<class, class, bool> friend struct QML_PRIVATE_NAMESPACE::QmlAttached;
117 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlAttachedAccessor;
118 inline constexpr void qt_qmlMarker_attached() {}
119
120#define QML_EXTENDED(EXTENDED_TYPE)
121 Q_CLASSINFO("QML.Extended", #EXTENDED_TYPE)
122 using QmlExtendedType = EXTENDED_TYPE;
123 template<class, class> friend struct QML_PRIVATE_NAMESPACE::QmlExtended;
124 QT_WARNING_PUSH
125 QT_WARNING_DISABLE_GCC("-Wredundant-decls")
126 template<typename... Args>
127 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *);
128 QT_WARNING_POP
129 inline constexpr void qt_qmlMarker_extended() {}
130
131#define QML_EXTENDED_NAMESPACE(EXTENDED_NAMESPACE)
132 Q_CLASSINFO("QML.Extended", #EXTENDED_NAMESPACE)
133 Q_CLASSINFO("QML.ExtensionIsNamespace", "true")
134 static constexpr const QMetaObject *qmlExtendedNamespace() { return &EXTENDED_NAMESPACE::staticMetaObject; }
135 template<class, class> friend struct QML_PRIVATE_NAMESPACE::QmlExtendedNamespace;
136 QT_WARNING_PUSH
137 QT_WARNING_DISABLE_GCC("-Wredundant-decls")
138 template<typename... Args>
139 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *);
140 QT_WARNING_POP
141 inline constexpr void qt_qmlMarker_extendedNamespace() {}
142
143#define QML_NAMESPACE_EXTENDED(EXTENDED_NAMESPACE)
144 Q_CLASSINFO("QML.Extended", #EXTENDED_NAMESPACE)
145
146#define QML_INTERFACE
147 Q_CLASSINFO("QML.Element", "anonymous")
148 enum class QmlIsInterface {yes = true};
149 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface;
150 QT_WARNING_PUSH
151 QT_WARNING_DISABLE_GCC("-Wredundant-decls")
152 template<typename... Args>
153 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *);
154 QT_WARNING_POP
155 inline constexpr void qt_qmlMarker_interface() {}
156
157#define QML_IMPLEMENTS_INTERFACES(INTERFACES)
158 Q_INTERFACES(INTERFACES)
159 enum class QmlIsInterface {yes = false};
160 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface;
161
162#define QML_SEQUENTIAL_CONTAINER(VALUE_TYPE)
163 Q_CLASSINFO("QML.Sequence", #VALUE_TYPE)
164 using QmlSequenceValueType = VALUE_TYPE;
165 enum class QmlIsSequence {yes = true};
166 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlSequence;
167 QT_WARNING_PUSH
168 QT_WARNING_DISABLE_GCC("-Wredundant-decls")
169 template<typename... Args>
170 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *);
171 QT_WARNING_POP
172 inline constexpr void qt_qmlMarker_sequence() {}
173
174#define QML_UNAVAILABLE
175 QML_FOREIGN(QQmlTypeNotAvailable)
176
177#define QML_FOREIGN(FOREIGN_TYPE)
178 Q_CLASSINFO("QML.Foreign", #FOREIGN_TYPE)
179 using QmlForeignType = FOREIGN_TYPE;
180 template<class, class> friend struct QML_PRIVATE_NAMESPACE::QmlResolved;
181 QT_WARNING_PUSH
182 QT_WARNING_DISABLE_GCC("-Wredundant-decls")
183 template<typename... Args>
184 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *);
185 QT_WARNING_POP
186 inline constexpr void qt_qmlMarker_foreign() {}
187
188#define QML_FOREIGN_NAMESPACE(FOREIGN_NAMESPACE)
189 Q_CLASSINFO("QML.Foreign", #FOREIGN_NAMESPACE)
190 Q_CLASSINFO("QML.ForeignIsNamespace", "true")
191 inline constexpr void qt_qmlMarker_foreign() {}
192
193#define QML_CUSTOMPARSER
194 Q_CLASSINFO("QML.HasCustomParser", "true")
195
196#define QML_USING(ORIGINAL)
197 using QmlUsing ## ORIGINAL = ORIGINAL;
198 Q_CLASSINFO("QML.Using", #ORIGINAL)
199
200#endif
Definition qlist.h:80
#define QML_REGISTER_TYPES_AND_REVISIONS
#define QML_PRIVATE_NAMESPACE
void qmlRegisterTypesAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds=nullptr)
Definition qqml.h:935
#define QML_FOREIGN(FOREIGN_TYPE)