aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqml.h
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2021-03-31 10:21:47 +0200
committerFabian Kosmale <fabian.kosmale@qt.io>2021-03-31 22:49:46 +0200
commitbdf5c379657c651a97247ccdeb8b6f92c83eeef4 (patch)
tree339ac2cf6fd8638b45593c49f088b6e4754e1d77 /src/qml/qml/qqml.h
parentf8fc2d11a9cb2c55f4efc4a089663967ff78cc0b (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.h98
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
};