diff options
Diffstat (limited to 'src/qml/qml/qqmltype_p.h')
-rw-r--r-- | src/qml/qml/qqmltype_p.h | 53 |
1 files changed, 29 insertions, 24 deletions
diff --git a/src/qml/qml/qqmltype_p.h b/src/qml/qml/qqmltype_p.h index c2c85c9c2e..622e91a4b2 100644 --- a/src/qml/qml/qqmltype_p.h +++ b/src/qml/qml/qqmltype_p.h @@ -39,9 +39,8 @@ class QQmlPropertyCache; namespace QV4 { struct String; } -struct CompositeMetaTypeIds; -class Q_QML_PRIVATE_EXPORT QQmlType +class Q_QML_EXPORT QQmlType { public: QQmlType(); @@ -52,10 +51,6 @@ public: explicit QQmlType(const QQmlTypePrivate *priv); ~QQmlType(); - bool operator ==(const QQmlType &other) const { - return d.data() == other.d.data(); - } - bool isValid() const { return !d.isNull(); } QByteArray typeName() const; @@ -97,12 +92,17 @@ public: bool isQObjectSingleton() const; bool isQJSValueSingleton() const; bool isSequentialContainer() const; + bool isValueType() const; QMetaType typeId() const; QMetaType qListTypeId() const; QMetaSequence listMetaSequence() const; const QMetaObject *metaObject() const; + + // Precondition: The type is actually a value type! + const QMetaObject *metaObjectForValueType() const; + const QMetaObject *baseMetaObject() const; QTypeRevision metaObjectRevision() const; bool containsRevisionedAttributes() const; @@ -119,17 +119,25 @@ public: int index() const; bool isInlineComponentType() const; - int inlineComponentId() const; - struct Q_QML_PRIVATE_EXPORT SingletonInstanceInfo + struct Q_QML_EXPORT SingletonInstanceInfo final + : public QQmlRefCounted<SingletonInstanceInfo> { + using Ptr = QQmlRefPointer<SingletonInstanceInfo>; + using ConstPtr = QQmlRefPointer<const SingletonInstanceInfo>; + + static Ptr create() { return Ptr(new SingletonInstanceInfo, Ptr::Adopt); } + std::function<QJSValue(QQmlEngine *, QJSEngine *)> scriptCallback = {}; std::function<QObject *(QQmlEngine *, QJSEngine *)> qobjectCallback = {}; - const QMetaObject *instanceMetaObject = nullptr; - QString typeName; + QByteArray typeName; QUrl url; // used by composite singletons + + private: + Q_DISABLE_COPY_MOVE(SingletonInstanceInfo) + SingletonInstanceInfo() = default; }; - SingletonInstanceInfo *singletonInstanceInfo() const; + SingletonInstanceInfo::ConstPtr singletonInstanceInfo() const; QUrl sourceUrl() const; @@ -141,10 +149,7 @@ public: int scopedEnumIndex(QQmlEnginePrivate *engine, const QString &, bool *ok) const; int scopedEnumValue(QQmlEnginePrivate *engine, int index, const QV4::String *, bool *ok) const; int scopedEnumValue(QQmlEnginePrivate *engine, int index, const QString &, bool *ok) const; - int scopedEnumValue(QQmlEnginePrivate *engine, const QByteArray &, const QByteArray &, bool *ok) const; - int scopedEnumValue(QQmlEnginePrivate *engine, QStringView, QStringView, bool *ok) const; - int inlineComponentObjectId() const; - void setInlineComponentObjectId(int id) const; // TODO: const setters are BAD + int scopedEnumValue(QQmlEnginePrivate *engine, const QHashedStringRef &, const QHashedStringRef &, bool *ok) const; const QQmlTypePrivate *priv() const { return d.data(); } static void refHandle(const QQmlTypePrivate *priv); @@ -162,20 +167,20 @@ public: AnyRegistrationType = 255 }; - QQmlType containingType() const; - int lookupInlineComponentIdByName(const QString &name) const; - QQmlType lookupInlineComponentById(int objectid) const; - int generatePlaceHolderICId() const; - - void associateInlineComponent(const QString &name, int objectID, const CompositeMetaTypeIds &metaTypeIds, QQmlType existingType); - void setPendingResolutionName(const QString &name); - QString pendingResolutionName() const; - void createProxy(QObject *instance) const; private: friend class QQmlTypePrivate; friend size_t qHash(const QQmlType &t, size_t seed); + friend bool operator==(const QQmlType &a, const QQmlType &b) noexcept + { + return a.d.data() == b.d.data(); + } + friend bool operator!=(const QQmlType &a, const QQmlType &b) noexcept + { + return !(a == b); + } + QQmlRefPointer<const QQmlTypePrivate> d; }; |