4#ifndef QMLINTEGRATION_H
5#define QMLINTEGRATION_H
7#include <QtCore/qglobal.h>
12 template<
typename,
typename>
struct QmlSingleton;
13 template<
class,
class,
bool>
struct QmlAttached;
14 template<
class>
struct QmlAttachedAccessor;
15 template<
class,
class>
struct QmlExtended;
16 template<
typename,
typename>
struct QmlInterface;
17 template<
class,
class>
18 struct QmlExtendedNamespace;
19 template<
class,
class>
20 struct QmlUncreatable;
21 template<
class,
class>
23 template<
class,
class>
25 template<
class,
class>
29template <
typename T>
class QList;
31template<
typename... Args>
33 QList<int> *qmlTypeIds =
nullptr);
38#define QML_PRIVATE_NAMESPACE \
39 QT_PREPEND_NAMESPACE(QQmlPrivate)
41#define QML_REGISTER_TYPES_AND_REVISIONS \
42 QT_PREPEND_NAMESPACE(qmlRegisterTypesAndRevisions)
46 Q_CLASSINFO("QML.Element", "auto")
49#define QML_ANONYMOUS \
50 Q_CLASSINFO("QML.Element", "anonymous") \
51 enum class QmlIsAnonymous{yes = true}; \
52 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlAnonymous; \
54 QT_WARNING_DISABLE_GCC("-Wredundant-decls") \
55 template<typename... Args> \
56 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); \
58 inline constexpr void qt_qmlMarker_anonymous() {}
60#define QML_NAMED_ELEMENT(NAME) \
61 Q_CLASSINFO("QML.Element", #NAME)
63#define QML_UNCREATABLE(REASON) \
64 Q_CLASSINFO("QML.Creatable", "false") \
65 Q_CLASSINFO("QML.UncreatableReason", REASON) \
66 enum class QmlIsUncreatable {yes = true}; \
67 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlUncreatable; \
69 QT_WARNING_DISABLE_GCC("-Wredundant-decls") \
70 template<typename... Args> \
71 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); \
73 inline constexpr void qt_qmlMarker_uncreatable() {}
75#define QML_VALUE_TYPE(NAME) \
76 Q_CLASSINFO("QML.Element", #NAME)
78#define QML_CONSTRUCTIBLE_VALUE \
79 Q_CLASSINFO("QML.Creatable", "true") \
80 Q_CLASSINFO("QML.CreationMethod", "construct")
82#define QML_STRUCTURED_VALUE \
83 Q_CLASSINFO("QML.Creatable", "true") \
84 Q_CLASSINFO("QML.CreationMethod", "structured")
86#define QML_SINGLETON \
87 Q_CLASSINFO("QML.Singleton", "true") \
88 enum class QmlIsSingleton {yes = true}; \
89 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlSingleton; \
91 QT_WARNING_DISABLE_GCC("-Wredundant-decls") \
92 template<typename... Args> \
93 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); \
95 inline constexpr void qt_qmlMarker_singleton() {}
97#define QML_ADDED_IN_MINOR_VERSION(VERSION) \
98 Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(VERSION))
100#define QML_ADDED_IN_VERSION(MAJOR, MINOR) \
101 Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(MAJOR, MINOR))
103#define QML_EXTRA_VERSION(MAJOR, MINOR) \
104 Q_CLASSINFO("QML.ExtraVersion", Q_REVISION(MAJOR, MINOR))
106#define QML_REMOVED_IN_MINOR_VERSION(VERSION) \
107 Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(VERSION))
109#define QML_REMOVED_IN_VERSION(MAJOR, MINOR) \
110 Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(MAJOR, MINOR))
112#define QML_ATTACHED(ATTACHED_TYPE) \
113 Q_CLASSINFO("QML.Attached", #ATTACHED_TYPE) \
114 using QmlAttachedType = ATTACHED_TYPE; \
115 template<class, class, bool> friend struct QML_PRIVATE_NAMESPACE::QmlAttached; \
116 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlAttachedAccessor; \
117 inline constexpr void qt_qmlMarker_attached() {}
119#define QML_EXTENDED(EXTENDED_TYPE) \
120 Q_CLASSINFO("QML.Extended", #EXTENDED_TYPE) \
121 using QmlExtendedType = EXTENDED_TYPE; \
122 template<class, class> friend struct QML_PRIVATE_NAMESPACE::QmlExtended; \
124 QT_WARNING_DISABLE_GCC("-Wredundant-decls") \
125 template<typename... Args> \
126 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); \
128 inline constexpr void qt_qmlMarker_extended() {}
130#define QML_EXTENDED_NAMESPACE(EXTENDED_NAMESPACE) \
131 Q_CLASSINFO("QML.Extended", #EXTENDED_NAMESPACE) \
132 Q_CLASSINFO("QML.ExtensionIsNamespace", "true") \
133 static constexpr const QMetaObject *qmlExtendedNamespace() { return &EXTENDED_NAMESPACE::staticMetaObject; } \
134 template<class, class> friend struct QML_PRIVATE_NAMESPACE::QmlExtendedNamespace; \
136 QT_WARNING_DISABLE_GCC("-Wredundant-decls") \
137 template<typename... Args> \
138 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); \
140 inline constexpr void qt_qmlMarker_extendedNamespace() {}
142#define QML_NAMESPACE_EXTENDED(EXTENDED_NAMESPACE) \
143 Q_CLASSINFO("QML.Extended", #EXTENDED_NAMESPACE)
145#define QML_INTERFACE \
146 Q_CLASSINFO("QML.Element", "anonymous") \
147 enum class QmlIsInterface {yes = true}; \
148 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface; \
150 QT_WARNING_DISABLE_GCC("-Wredundant-decls") \
151 template<typename... Args> \
152 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); \
154 inline constexpr void qt_qmlMarker_interface() {}
156#define QML_IMPLEMENTS_INTERFACES(INTERFACES) \
157 Q_INTERFACES(INTERFACES) \
158 enum class QmlIsInterface {yes = false}; \
159 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface;
161#define QML_SEQUENTIAL_CONTAINER(VALUE_TYPE) \
162 Q_CLASSINFO("QML.Sequence", #VALUE_TYPE) \
163 using QmlSequenceValueType = VALUE_TYPE; \
164 enum class QmlIsSequence {yes = true}; \
165 template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlSequence; \
167 QT_WARNING_DISABLE_GCC("-Wredundant-decls") \
168 template<typename... Args> \
169 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); \
171 inline constexpr void qt_qmlMarker_sequence() {}
173#define QML_UNAVAILABLE \
174 QML_FOREIGN(QQmlTypeNotAvailable)
176#define QML_FOREIGN(FOREIGN_TYPE) \
177 Q_CLASSINFO("QML.Foreign", #FOREIGN_TYPE) \
178 using QmlForeignType = FOREIGN_TYPE; \
179 template<class, class> friend struct QML_PRIVATE_NAMESPACE::QmlResolved; \
181 QT_WARNING_DISABLE_GCC("-Wredundant-decls") \
182 template<typename... Args> \
183 friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); \
185 inline constexpr void qt_qmlMarker_foreign() {}
187#define QML_FOREIGN_NAMESPACE(FOREIGN_NAMESPACE) \
188 Q_CLASSINFO("QML.Foreign", #FOREIGN_NAMESPACE) \
189 Q_CLASSINFO("QML.ForeignIsNamespace", "true") \
190 inline constexpr void qt_qmlMarker_foreign() {}
192#define QML_CUSTOMPARSER \
193 Q_CLASSINFO("QML.HasCustomParser", "true")
Combined button and popup list for selecting options.
void qmlRegisterTypesAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds=nullptr)