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> 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
43#define QML_ELEMENT
44 Q_CLASSINFO("QML.Element", "auto")
45
46
47#define QML_ANONYMOUS
48 Q_CLASSINFO("QML.Element", "anonymous")
49 enum class QmlIsAnonymous{yes = true};
50 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlAnonymous;
51 inline constexpr void qt_qmlMarker_anonymous() {}
52
53#define QML_NAMED_ELEMENT(NAME)
54 Q_CLASSINFO("QML.Element", #NAME)
55
56#define QML_UNCREATABLE(REASON)
57 Q_CLASSINFO("QML.Creatable", "false")
58 Q_CLASSINFO("QML.UncreatableReason", REASON)
59 enum class QmlIsUncreatable {yes = true};
60 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlUncreatable;
61 inline constexpr void qt_qmlMarker_uncreatable() {}
62
63#define QML_VALUE_TYPE(NAME)
64 Q_CLASSINFO("QML.Element", #NAME)
65
66#define QML_CONSTRUCTIBLE_VALUE
67 Q_CLASSINFO("QML.Creatable", "true")
68 Q_CLASSINFO("QML.CreationMethod", "construct")
69
70#define QML_STRUCTURED_VALUE
71 Q_CLASSINFO("QML.Creatable", "true")
72 Q_CLASSINFO("QML.CreationMethod", "structured")
73
74#define QML_SINGLETON
75 Q_CLASSINFO("QML.Singleton", "true")
76 enum class QmlIsSingleton {yes = true};
77 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlSingleton;
78 inline constexpr void qt_qmlMarker_singleton() {}
79
80#define QML_ADDED_IN_MINOR_VERSION(VERSION)
81 Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(VERSION))
82
83#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
84 Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(MAJOR, MINOR))
85
86#define QML_EXTRA_VERSION(MAJOR, MINOR)
87 Q_CLASSINFO("QML.ExtraVersion", Q_REVISION(MAJOR, MINOR))
88
89#define QML_REMOVED_IN_MINOR_VERSION(VERSION)
90 Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(VERSION))
91
92#define QML_REMOVED_IN_VERSION(MAJOR, MINOR)
93 Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(MAJOR, MINOR))
94
95#define QML_ATTACHED(ATTACHED_TYPE)
96 Q_CLASSINFO("QML.Attached", #ATTACHED_TYPE)
97 using QmlAttachedType = ATTACHED_TYPE;
98 template<class, class, bool> friend struct QML_PRIVATE_NAMESPACE::QmlAttached;
99 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlAttachedAccessor;
100 inline constexpr void qt_qmlMarker_attached() {}
101
102#define QML_EXTENDED(EXTENDED_TYPE)
103 Q_CLASSINFO("QML.Extended", #EXTENDED_TYPE)
104 using QmlExtendedType = EXTENDED_TYPE;
105 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlExtended;
106 inline constexpr void qt_qmlMarker_extended() {}
107
108#define QML_EXTENDED_NAMESPACE(EXTENDED_NAMESPACE)
109 Q_CLASSINFO("QML.Extended", #EXTENDED_NAMESPACE)
110 Q_CLASSINFO("QML.ExtensionIsNamespace", "true")
111 static constexpr const QMetaObject *qmlExtendedNamespace() { return &EXTENDED_NAMESPACE::staticMetaObject; }
112 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlExtendedNamespace;
113 inline constexpr void qt_qmlMarker_extendedNamespace() {}
114
115#define QML_NAMESPACE_EXTENDED(EXTENDED_NAMESPACE)
116 Q_CLASSINFO("QML.Extended", #EXTENDED_NAMESPACE)
117
118#define QML_INTERFACE
119 Q_CLASSINFO("QML.Element", "anonymous")
120 enum class QmlIsInterface {yes = true};
121 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface;
122 inline constexpr void qt_qmlMarker_interface() {}
123
124#define QML_IMPLEMENTS_INTERFACES(INTERFACES)
125 Q_INTERFACES(INTERFACES)
126 enum class QmlIsInterface {yes = false};
127 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface;
128
129#define QML_SEQUENTIAL_CONTAINER(VALUE_TYPE)
130 Q_CLASSINFO("QML.Sequence", #VALUE_TYPE)
131 using QmlSequenceValueType = VALUE_TYPE;
132 enum class QmlIsSequence {yes = true};
133 template<typename> friend struct QML_PRIVATE_NAMESPACE::QmlSequence;
134 inline constexpr void qt_qmlMarker_sequence() {}
135
136#define QML_UNAVAILABLE
137 QML_FOREIGN(QQmlTypeNotAvailable)
138
139#define QML_FOREIGN(FOREIGN_TYPE)
140 Q_CLASSINFO("QML.Foreign", #FOREIGN_TYPE)
141 using QmlForeignType = FOREIGN_TYPE;
142 template<class> friend struct QML_PRIVATE_NAMESPACE::QmlResolved;
143 inline constexpr void qt_qmlMarker_foreign() {}
144
145#define QML_FOREIGN_NAMESPACE(FOREIGN_NAMESPACE)
146 Q_CLASSINFO("QML.Foreign", #FOREIGN_NAMESPACE)
147 Q_CLASSINFO("QML.ForeignIsNamespace", "true")
148 inline constexpr void qt_qmlMarker_foreign() {}
149
150#define QML_CUSTOMPARSER
151 Q_CLASSINFO("QML.HasCustomParser", "true")
152
153#define QML_USING(ORIGINAL)
154 using QmlUsing ## ORIGINAL = ORIGINAL;
155 Q_CLASSINFO("QML.Using", #ORIGINAL)
156
157#endif
Definition qlist.h:81
#define QML_PRIVATE_NAMESPACE
void qmlRegisterTypesAndRevisions(const char *uri, int versionMajor, QList< int > *qmlTypeIds=nullptr)
Definition qqml.h:936
#define QML_FOREIGN(FOREIGN_TYPE)