Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qqmltype_p.h
Go to the documentation of this file.
1// Copyright (C) 2019 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
4#ifndef QQMLTYPE_P_H
5#define QQMLTYPE_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <functional>
19
20#include <private/qtqmlglobal_p.h>
21#include <private/qqmlrefcount_p.h>
22
23#include <QtQml/qqmlprivate.h>
24#include <QtQml/qjsvalue.h>
25
26#include <QtCore/qobject.h>
27#include <QtCore/qversionnumber.h>
28
30
32class QQmlTypePrivate;
33class QHashedString;
38
39namespace QV4 {
40struct String;
41}
42
43class Q_QML_EXPORT QQmlType
44{
45public:
49 QQmlType &operator =(const QQmlType &other);
50 QQmlType &operator =(QQmlType &&other);
51 explicit QQmlType(const QQmlTypePrivate *priv);
53
54 bool isValid() const { return !d.isNull(); }
55
56 QByteArray typeName() const;
57 QString qmlTypeName() const;
58 QString elementName() const;
59
60 QHashedString module() const;
61 QTypeRevision version() const;
62
63 bool availableInVersion(QTypeRevision version) const;
64 bool availableInVersion(const QHashedStringRef &module, QTypeRevision version) const;
65
66 typedef QVariant (*CreateValueTypeFunc)(const QJSValue &);
67 CreateValueTypeFunc createValueTypeFunction() const;
68
69 bool canConstructValueType() const;
70 bool canPopulateValueType() const;
71
72 QObject *create() const;
73 QObject *create(void **, size_t) const;
74 QObject *createWithQQmlData() const;
75
76 typedef void (*CreateFunc)(void *, void *);
77 CreateFunc createFunction() const;
78
79 QQmlCustomParser *customParser() const;
80
81 bool isCreatable() const;
82 typedef QObject *(*ExtensionFunc)(QObject *);
83 ExtensionFunc extensionFunction() const;
84 const QMetaObject *extensionMetaObject() const;
85 bool isExtendedType() const;
86 QString noCreationReason() const;
87
88 bool isSingleton() const;
89 bool isInterface() const;
90 bool isComposite() const;
91 bool isCompositeSingleton() const;
92 bool isQObjectSingleton() const;
93 bool isQJSValueSingleton() const;
94 bool isSequentialContainer() const;
95 bool isValueType() const;
96
97 QMetaType typeId() const;
98 QMetaType qListTypeId() const;
99 QMetaSequence listMetaSequence() const;
100
101 const QMetaObject *metaObject() const;
102
103 // Precondition: The type is actually a value type!
104 const QMetaObject *metaObjectForValueType() const;
105
106 const QMetaObject *baseMetaObject() const;
107 QTypeRevision metaObjectRevision() const;
108 bool containsRevisionedAttributes() const;
109
110 QQmlAttachedPropertiesFunc attachedPropertiesFunction(QQmlEnginePrivate *engine) const;
111 const QMetaObject *attachedPropertiesType(QQmlEnginePrivate *engine) const;
112
113 int parserStatusCast() const;
114 const char *interfaceIId() const;
115 int propertyValueSourceCast() const;
116 int propertyValueInterceptorCast() const;
117 int finalizerCast() const;
118
119 int index() const;
120
121 bool isInlineComponentType() const;
122
123 struct Q_QML_EXPORT SingletonInstanceInfo final
124 : public QQmlRefCounted<SingletonInstanceInfo>
125 {
126 using Ptr = QQmlRefPointer<SingletonInstanceInfo>;
127 using ConstPtr = QQmlRefPointer<const SingletonInstanceInfo>;
128
129 static Ptr create() { return Ptr(new SingletonInstanceInfo, Ptr::Adopt); }
130
131 std::function<QJSValue(QQmlEngine *, QJSEngine *)> scriptCallback = {};
132 std::function<QObject *(QQmlEngine *, QJSEngine *)> qobjectCallback = {};
134 QUrl url; // used by composite singletons
135
136 private:
137 Q_DISABLE_COPY_MOVE(SingletonInstanceInfo)
138 SingletonInstanceInfo() = default;
139 };
141
142 QUrl sourceUrl() const;
143
144 int enumValue(QQmlEnginePrivate *engine, const QHashedStringRef &, bool *ok) const;
145 int enumValue(QQmlEnginePrivate *engine, const QHashedCStringRef &, bool *ok) const;
146 int enumValue(QQmlEnginePrivate *engine, const QV4::String *, bool *ok) const;
147
148 int scopedEnumIndex(QQmlEnginePrivate *engine, const QV4::String *, bool *ok) const;
149 int scopedEnumIndex(QQmlEnginePrivate *engine, const QString &, bool *ok) const;
150 int scopedEnumValue(QQmlEnginePrivate *engine, int index, const QV4::String *, bool *ok) const;
151 int scopedEnumValue(QQmlEnginePrivate *engine, int index, const QString &, bool *ok) const;
152 int scopedEnumValue(QQmlEnginePrivate *engine, const QHashedStringRef &, const QHashedStringRef &, bool *ok) const;
153
154 const QQmlTypePrivate *priv() const { return d.data(); }
155 static void refHandle(const QQmlTypePrivate *priv);
156 static void derefHandle(const QQmlTypePrivate *priv);
157 static int refCount(const QQmlTypePrivate *priv);
158
160 CppType = 0,
161 SingletonType = 1,
162 InterfaceType = 2,
163 CompositeType = 3,
164 CompositeSingletonType = 4,
165 InlineComponentType = 5,
166 SequentialContainerType = 6,
167 AnyRegistrationType = 255
168 };
169
170 void createProxy(QObject *instance) const;
171
172private:
173 friend class QQmlTypePrivate;
174 friend size_t qHash(const QQmlType &t, size_t seed);
175 friend bool operator==(const QQmlType &a, const QQmlType &b) noexcept
176 {
177 return a.d.data() == b.d.data();
178 }
179 friend bool operator!=(const QQmlType &a, const QQmlType &b) noexcept
180 {
181 return !(a == b);
182 }
183
184 QQmlRefPointer<const QQmlTypePrivate> d;
185};
186
187inline size_t qHash(const QQmlType &t, size_t seed = 0)
188{
189 return qHash(reinterpret_cast<quintptr>(t.d.data()), seed);
190}
191
193
194#endif // QQMLTYPE_P_H
\inmodule QtCore
Definition qbytearray.h:57
The QJSEngine class provides an environment for evaluating JavaScript code.
Definition qjsengine.h:26
The QJSValue class acts as a container for Qt/JavaScript data types.
Definition qjsvalue.h:31
\inmodule QtCore
\inmodule QtCore
Definition qmetatype.h:341
\inmodule QtCore
Definition qobject.h:103
The QQmlCustomParser class allows you to add new arbitrary types to QML.
The QQmlEngine class provides an environment for instantiating QML components.
Definition qqmlengine.h:57
QQmlType(QQmlType &&other)
friend bool operator!=(const QQmlType &a, const QQmlType &b) noexcept
Definition qqmltype_p.h:179
QQmlType(const QQmlType &other)
const QQmlTypePrivate * priv() const
Definition qqmltype_p.h:154
friend bool operator==(const QQmlType &a, const QQmlType &b) noexcept
Definition qqmltype_p.h:175
bool isValid() const
Definition qqmltype_p.h:54
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
\inmodule QtCore
Definition qurl.h:94
\inmodule QtCore
Definition qvariant.h:65
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
size_t qHash(const QFileSystemWatcherPathKey &key, size_t seed=0)
static const QMetaObjectPrivate * priv(const uint *data)
const char * typeName
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLuint index
[2]
GLdouble GLdouble t
Definition qopenglext.h:243
static QQmlType::SingletonInstanceInfo::ConstPtr singletonInstanceInfo(const QQmlPrivate::RegisterSingletonType &type)
Definition qqml.cpp:499
static bool isComposite(const QQmlJSScope::ConstPtr &scope)
QQmlPrivate::QQmlAttachedPropertiesFunc< QObject > QQmlAttachedPropertiesFunc
Definition qqmlprivate.h:63
size_t qHash(const QQmlType &t, size_t seed=0)
Definition qqmltype_p.h:187
static const char * qmlTypeName(const QObject *object)
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
Definition qrandom.cpp:196
size_t quintptr
Definition qtypes.h:167
obj metaObject() -> className()
QSharedPointer< T > other(t)
[5]
view create()
QJSEngine engine
[0]
\inmodule QtCore
QQmlRefPointer< SingletonInstanceInfo > Ptr
Definition qqmltype_p.h:126