diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2021-03-31 10:21:47 +0200 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2021-03-31 22:49:46 +0200 |
commit | bdf5c379657c651a97247ccdeb8b6f92c83eeef4 (patch) | |
tree | 339ac2cf6fd8638b45593c49f088b6e4754e1d77 /src/qml/qml/qqml.h | |
parent | f8fc2d11a9cb2c55f4efc4a089663967ff78cc0b (diff) |
Move type registration into their own header
For now, this simply gives us a more lightweight header than qqml.h. In
the future, we could move this completely out of QML, to ease optional
QML integration in libraries that do not want to directly depend on
QtQml.
Task-number: QTBUG-92258
Change-Id: I3583ce85905ed8fa0a45abb360728178c774d679
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/qml/qqml.h')
-rw-r--r-- | src/qml/qml/qqml.h | 98 |
1 files changed, 2 insertions, 96 deletions
diff --git a/src/qml/qml/qqml.h b/src/qml/qml/qqml.h index 078bd93d25..d485b5367d 100644 --- a/src/qml/qml/qqml.h +++ b/src/qml/qml/qqml.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtQml module of the Qt Toolkit. @@ -42,6 +42,7 @@ #include <QtQml/qqmlprivate.h> #include <QtQml/qjsvalue.h> +#include <QtQml/qqmlregistration.h> #include <QtCore/qbytearray.h> #include <QtCore/qmetaobject.h> @@ -51,12 +52,6 @@ #define QML_VERSION 0x020000 #define QML_VERSION_STR "2.0" -#define QML_PRIVATE_NAMESPACE \ - QT_PREPEND_NAMESPACE(QQmlPrivate) - -#define QML_REGISTER_TYPES_AND_REVISIONS \ - QT_PREPEND_NAMESPACE(qmlRegisterTypesAndRevisions) - #define QML_DECLARE_TYPE(TYPE) \ Q_DECLARE_METATYPE(TYPE *) \ Q_DECLARE_METATYPE(QQmlListProperty<TYPE>) @@ -70,95 +65,6 @@ #define QML_DECLARE_INTERFACE_HASMETATYPE(INTERFACE) \ QML_DECLARE_TYPE_HASMETATYPE(INTERFACE) -#define QML_ELEMENT \ - Q_CLASSINFO("QML.Element", "auto") - -#define QML_ANONYMOUS \ - Q_CLASSINFO("QML.Element", "anonymous") - -#define QML_NAMED_ELEMENT(NAME) \ - Q_CLASSINFO("QML.Element", #NAME) - -#define QML_VALUE_TYPE(NAME) \ - Q_CLASSINFO("QML.Element", #NAME) \ - QML_UNCREATABLE("Value types cannot be created.") - -#define QML_UNCREATABLE(REASON) \ - Q_CLASSINFO("QML.Creatable", "false") \ - Q_CLASSINFO("QML.UncreatableReason", REASON) - -#define QML_SINGLETON \ - Q_CLASSINFO("QML.Singleton", "true") \ - enum class QmlIsSingleton {yes = true}; \ - template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlSingleton; \ - template<typename T, typename... Args> \ - friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); - -#define QML_SEQUENTIAL_CONTAINER(VALUE_TYPE) \ - Q_CLASSINFO("QML.Sequence", #VALUE_TYPE) \ - using QmlSequenceValueType = VALUE_TYPE; \ - enum class QmlIsSequence {yes = true}; \ - template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlSequence; \ - template<typename T, typename... Args> \ - friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); - -#define QML_ADDED_IN_MINOR_VERSION(VERSION) \ - Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(VERSION)) - -#define QML_ADDED_IN_VERSION(MAJOR, MINOR) \ - Q_CLASSINFO("QML.AddedInVersion", Q_REVISION(MAJOR, MINOR)) - -#define QML_REMOVED_IN_MINOR_VERSION(VERSION) \ - Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(VERSION)) - -#define QML_REMOVED_IN_VERSION(MAJOR, MINOR) \ - Q_CLASSINFO("QML.RemovedInVersion", Q_REVISION(MAJOR, MINOR)) - -#define QML_ATTACHED(ATTACHED_TYPE) \ - Q_CLASSINFO("QML.Attached", #ATTACHED_TYPE) \ - using QmlAttachedType = ATTACHED_TYPE; \ - template<class, class, bool> friend struct QML_PRIVATE_NAMESPACE::QmlAttached; \ - template<class> friend struct QML_PRIVATE_NAMESPACE::QmlAttachedAccessor; - -#define QML_EXTENDED(EXTENDED_TYPE) \ - Q_CLASSINFO("QML.Extended", #EXTENDED_TYPE) \ - using QmlExtendedType = EXTENDED_TYPE; \ - template<class, class> friend struct QML_PRIVATE_NAMESPACE::QmlExtended; \ - template<typename T, typename... Args> \ - friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); - -#define QML_EXTENDED_NAMESPACE(EXTENDED_NAMESPACE) \ - Q_CLASSINFO("QML.Extended", #EXTENDED_NAMESPACE) \ - static constexpr const QMetaObject *qmlExtendedNamespace() { return &EXTENDED_NAMESPACE::staticMetaObject; } \ - template<class, class> friend struct QML_PRIVATE_NAMESPACE::QmlExtendedNamespace; \ - template<typename T, typename... Args> \ - friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); - -#define QML_FOREIGN(FOREIGN_TYPE) \ - Q_CLASSINFO("QML.Foreign", #FOREIGN_TYPE) \ - using QmlForeignType = FOREIGN_TYPE; \ - template<class, class> friend struct QML_PRIVATE_NAMESPACE::QmlResolved; \ - template<typename T, typename... Args> \ - friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); - -#define QML_FOREIGN_NAMESPACE(FOREIGN_NAMESPACE) \ - Q_CLASSINFO("QML.Foreign", #FOREIGN_NAMESPACE) - -#define QML_INTERFACE \ - Q_CLASSINFO("QML.Element", "anonymous") \ - enum class QmlIsInterface {yes = true}; \ - template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface; \ - template<typename T, typename... Args> \ - friend void QML_REGISTER_TYPES_AND_REVISIONS(const char *uri, int versionMajor, QList<int> *); - -#define QML_IMPLEMENTS_INTERFACES(INTERFACES) \ - Q_INTERFACES(INTERFACES) \ - enum class QmlIsInterface {yes = false}; \ - template<typename, typename> friend struct QML_PRIVATE_NAMESPACE::QmlInterface; - -#define QML_UNAVAILABLE \ - QML_FOREIGN(QQmlTypeNotAvailable) - enum { /* TYPEINFO flags */ QML_HAS_ATTACHED_PROPERTIES = 0x01 }; |