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
12namespace QQmlPrivate {
13 template<typename> struct QmlSingleton;
14 template<class, class, bool> struct QmlAttached;
15 template<class> struct QmlAttachedAccessor;
16 template<class> struct QmlExtended;
17 template<typename> struct QmlInterface;
18 template<class>
20 template<class>
21 struct QmlUncreatable;
22 template<class>
23 struct QmlAnonymous;
24 template<class>
25 struct QmlSequence;
26 template<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#if QT_DEPRECATED_SINCE(6, 12)
43QT_BEGIN_NAMESPACE
44template <typename... Args>
45QT_DEPRECATED_VERSION_X_6_12("You don't need this.")
46void qmlDeprecatedRegisterTypesAndRevisions(const char *uri, int versionMajor,
47 QList<int> *qmlTypeIds = nullptr)
48{
49 qmlRegisterTypesAndRevisions(uri, versionMajor, qmlTypeIds);
50}
51QT_END_NAMESPACE
52# define QML_REGISTER_TYPES_AND_REVISIONS
53 QT_PREPEND_NAMESPACE(qmlDeprecatedRegisterTypesAndRevisions)
54#endif
55
56#define QML_ELEMENT
57 Q_CLASSINFO("QML.Element", "auto")
58
59
60#define QML_ANONYMOUS
61 Q_CLASSINFO("QML.Element", "anonymous")
62 enum class QmlIsAnonymous{yes = true};
63 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlAnonymous;
64 inline constexpr void qt_qmlMarker_anonymous() {}
65
66#define QML_NAMED_ELEMENT(NAME)
67 Q_CLASSINFO("QML.Element", #NAME)
68
69#define QML_UNCREATABLE(REASON)
70 Q_CLASSINFO("QML.Creatable", "false")
71 Q_CLASSINFO("QML.UncreatableReason", REASON)
72 enum class QmlIsUncreatable {yes = true};
73 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlUncreatable;
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> friend struct QML_PRIVATE_NAMESPACE::QmlSingleton;
91 inline constexpr void qt_qmlMarker_singleton() {}
92
93#define QML_ADDED_IN_MINOR_VERSION(VERSION)
94 Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(VERSION))
95
96#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
97 Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(MAJOR, MINOR))
98
99#define QML_EXTRA_VERSION(MAJOR, MINOR)
100 Q_CLASSINFO("QML.ExtraVersion", Q_REVISION(MAJOR, MINOR))
101
102#define QML_REMOVED_IN_MINOR_VERSION(VERSION)
103 Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(VERSION))
104
105#define QML_REMOVED_IN_VERSION(MAJOR, MINOR)
106 Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(MAJOR, MINOR))
107
108#define QML_ATTACHED(ATTACHED_TYPE)
109 Q_CLASSINFO("QML.Attached", #ATTACHED_TYPE)
110 using QmlAttachedType = ATTACHED_TYPE;
111 template<class, class, bool> friend struct QML_PRIVATE_NAMESPACE::QmlAttached;
112 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlAttachedAccessor;
113 inline constexpr void qt_qmlMarker_attached() {}
114
115#define QML_EXTENDED(EXTENDED_TYPE)
116 Q_CLASSINFO("QML.Extended", #EXTENDED_TYPE)
117 using QmlExtendedType = EXTENDED_TYPE;
118 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlExtended;
119 inline constexpr void qt_qmlMarker_extended() {}
120
121#define QML_EXTENDED_NAMESPACE(EXTENDED_NAMESPACE)
122 Q_CLASSINFO("QML.Extended", #EXTENDED_NAMESPACE)
123 Q_CLASSINFO("QML.ExtensionIsNamespace", "true")
124 static constexpr const QMetaObject *qmlExtendedNamespace() { return &EXTENDED_NAMESPACE::staticMetaObject; }
125 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlExtendedNamespace;
126 inline constexpr void qt_qmlMarker_extendedNamespace() {}
127
128#define QML_NAMESPACE_EXTENDED(EXTENDED_NAMESPACE)
129 Q_CLASSINFO("QML.Extended", #EXTENDED_NAMESPACE)
130
131#define QML_INTERFACE
132 Q_CLASSINFO("QML.Element", "anonymous")
133 enum class QmlIsInterface {yes = true};
134 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface;
135 inline constexpr void qt_qmlMarker_interface() {}
136
137#define QML_IMPLEMENTS_INTERFACES(INTERFACES)
138 Q_INTERFACES(INTERFACES)
139 enum class QmlIsInterface {yes = false};
140 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface;
141
142#define QML_SEQUENTIAL_CONTAINER(VALUE_TYPE)
143 Q_CLASSINFO("QML.Sequence", #VALUE_TYPE)
144 using QmlSequenceValueType = VALUE_TYPE;
145 enum class QmlIsSequence {yes = true};
146 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlSequence;
147 inline constexpr void qt_qmlMarker_sequence() {}
148
149#define QML_UNAVAILABLE
150 QML_FOREIGN(QQmlTypeNotAvailable)
151
152#define QML_FOREIGN(FOREIGN_TYPE)
153 Q_CLASSINFO("QML.Foreign", #FOREIGN_TYPE)
154 using QmlForeignType = FOREIGN_TYPE;
155 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlResolved;
156 inline constexpr void qt_qmlMarker_foreign() {}
157
158#define QML_FOREIGN_NAMESPACE(FOREIGN_NAMESPACE)
159 Q_CLASSINFO("QML.Foreign", #FOREIGN_NAMESPACE)
160 Q_CLASSINFO("QML.ForeignIsNamespace", "true")
161 inline constexpr void qt_qmlMarker_foreign() {}
162
163#define QML_CUSTOMPARSER
164 Q_CLASSINFO("QML.HasCustomParser", "true")
165
166#define QML_USING(ORIGINAL)
167 using QmlUsing ## ORIGINAL = ORIGINAL;
168 Q_CLASSINFO("QML.Using", #ORIGINAL)
169
170#endif
Definition qlist.h:82
Combined button and popup list for selecting options.
#define QML_UNCREATABLE(REASON)
#define QML_PRIVATE_NAMESPACE
#define QML_NAMED_ELEMENT(NAME)
void qmlRegisterTypesAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds=nullptr)
Definition qqml.h:939
#define QML_FOREIGN(FOREIGN_TYPE)
#define QT_BEGIN_NAMESPACE
#define QT_END_NAMESPACE
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_REVISION(...)
#define Q_CLASSINFO(name, value)
#define Q_INTERFACES(x)
#define signals
#define emit