Qt 6.x
The Qt SDK
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_PRIVATE_EXPORT QQmlType
44{
45public:
49 QQmlType &operator =(const QQmlType &other);
50 QQmlType &operator =(QQmlType &&other);
51 explicit QQmlType(const QQmlTypePrivate *priv);
53
54 bool operator ==(const QQmlType &other) const {
55 return d.data() == other.d.data();
56 }
57
58 bool isValid() const { return !d.isNull(); }
59
60 QByteArray typeName() const;
61 QString qmlTypeName() const;
62 QString elementName() const;
63
64 QHashedString module() const;
65 QTypeRevision version() const;
66
67 bool availableInVersion(QTypeRevision version) const;
68 bool availableInVersion(const QHashedStringRef &module, QTypeRevision version) const;
69
70 typedef QVariant (*CreateValueTypeFunc)(const QJSValue &);
71 CreateValueTypeFunc createValueTypeFunction() const;
72
73 bool canConstructValueType() const;
74 bool canPopulateValueType() const;
75
76 QObject *create() const;
77 QObject *create(void **, size_t) const;
78 QObject *createWithQQmlData() const;
79
80 typedef void (*CreateFunc)(void *, void *);
81 CreateFunc createFunction() const;
82
83 QQmlCustomParser *customParser() const;
84
85 bool isCreatable() const;
86 typedef QObject *(*ExtensionFunc)(QObject *);
87 ExtensionFunc extensionFunction() const;
88 const QMetaObject *extensionMetaObject() const;
89 bool isExtendedType() const;
90 QString noCreationReason() const;
91
92 bool isSingleton() const;
93 bool isInterface() const;
94 bool isComposite() const;
95 bool isCompositeSingleton() const;
96 bool isQObjectSingleton() const;
97 bool isQJSValueSingleton() const;
98 bool isSequentialContainer() const;
99
100 QMetaType typeId() const;
101 QMetaType qListTypeId() const;
102 QMetaSequence listMetaSequence() const;
103
104 const QMetaObject *metaObject() const;
105 const QMetaObject *baseMetaObject() const;
106 QTypeRevision metaObjectRevision() const;
107 bool containsRevisionedAttributes() const;
108
109 QQmlAttachedPropertiesFunc attachedPropertiesFunction(QQmlEnginePrivate *engine) const;
110 const QMetaObject *attachedPropertiesType(QQmlEnginePrivate *engine) const;
111
112 int parserStatusCast() const;
113 const char *interfaceIId() const;
114 int propertyValueSourceCast() const;
115 int propertyValueInterceptorCast() const;
116 int finalizerCast() const;
117
118 int index() const;
119
120 bool isInlineComponentType() const;
121
122 struct Q_QML_PRIVATE_EXPORT SingletonInstanceInfo
123 {
124 std::function<QJSValue(QQmlEngine *, QJSEngine *)> scriptCallback = {};
125 std::function<QObject *(QQmlEngine *, QJSEngine *)> qobjectCallback = {};
126 const QMetaObject *instanceMetaObject = nullptr;
128 QUrl url; // used by composite singletons
129 };
130 SingletonInstanceInfo *singletonInstanceInfo() const;
131
132 QUrl sourceUrl() const;
133
134 int enumValue(QQmlEnginePrivate *engine, const QHashedStringRef &, bool *ok) const;
135 int enumValue(QQmlEnginePrivate *engine, const QHashedCStringRef &, bool *ok) const;
136 int enumValue(QQmlEnginePrivate *engine, const QV4::String *, bool *ok) const;
137
138 int scopedEnumIndex(QQmlEnginePrivate *engine, const QV4::String *, bool *ok) const;
139 int scopedEnumIndex(QQmlEnginePrivate *engine, const QString &, bool *ok) const;
140 int scopedEnumValue(QQmlEnginePrivate *engine, int index, const QV4::String *, bool *ok) const;
141 int scopedEnumValue(QQmlEnginePrivate *engine, int index, const QString &, bool *ok) const;
142 int scopedEnumValue(QQmlEnginePrivate *engine, const QByteArray &, const QByteArray &, bool *ok) const;
143 int scopedEnumValue(QQmlEnginePrivate *engine, QStringView, QStringView, bool *ok) const;
144
145 const QQmlTypePrivate *priv() const { return d.data(); }
146 static void refHandle(const QQmlTypePrivate *priv);
147 static void derefHandle(const QQmlTypePrivate *priv);
148 static int refCount(const QQmlTypePrivate *priv);
149
151 CppType = 0,
152 SingletonType = 1,
153 InterfaceType = 2,
154 CompositeType = 3,
155 CompositeSingletonType = 4,
156 InlineComponentType = 5,
157 SequentialContainerType = 6,
158 AnyRegistrationType = 255
159 };
160
161 void createProxy(QObject *instance) const;
162
163private:
164 friend class QQmlTypePrivate;
165 friend size_t qHash(const QQmlType &t, size_t seed);
167};
168
169inline size_t qHash(const QQmlType &t, size_t seed = 0)
170{
171 return qHash(reinterpret_cast<quintptr>(t.d.data()), seed);
172}
173
175
176#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:320
\inmodule QtCore
Definition qobject.h:90
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)
QQmlType(const QQmlType &other)
const QQmlTypePrivate * priv() const
Definition qqmltype_p.h:145
bool isValid() const
Definition qqmltype_p.h:58
\inmodule QtCore
Definition qstringview.h:76
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
\inmodule QtCore
\inmodule QtCore
Definition qurl.h:94
\inmodule QtCore
Definition qvariant.h:64
Combined button and popup list for selecting options.
\qmltype Particle \inqmlmodule QtQuick.Particles
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
GLuint index
[2]
GLdouble GLdouble t
Definition qopenglext.h:243
static bool isComposite(const QQmlJSScope::ConstPtr &scope)
QQmlPrivate::QQmlAttachedPropertiesFunc< QObject > QQmlAttachedPropertiesFunc
Definition qqmlprivate.h:62
size_t qHash(const QQmlType &t, size_t seed=0)
Definition qqmltype_p.h:169
static const char * qmlTypeName(const QObject *object)
static Q_CONSTINIT QBasicAtomicInteger< unsigned > seed
Definition qrandom.cpp:196
bool operator==(const QRandomGenerator &rng1, const QRandomGenerator &rng2)
Definition qrandom.cpp:1219
size_t quintptr
Definition qtypes.h:72
obj metaObject() -> className()
QSharedPointer< T > other(t)
[5]
view create()
QJSEngine engine
[0]
\inmodule QtCore