diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-11-20 12:45:31 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-11-26 17:58:09 +0100 |
commit | 08abb22443078dcd69cec98ea451a0e2e190982f (patch) | |
tree | c70b150ba7faf29f9b18dcb5e97b3ad0e0678633 /src/qml/qml/qqmlpropertycache.cpp | |
parent | e6b45a2f5dad8105a8f493e2167988a95c1f08ed (diff) |
QML engine: Use QMetaType instead of metatype-id in propertydata
We don't want to convert back and forth between QMetaTypes and ids. This
change is the first step towards using QMetaType directly everywhere.
By reordering the members of QQmlPropertyData to avoid a gap caused by
alignment, we can replace the typeid int with a QMetaType without
requiring more space.
There are still a few places left using metatype ids, notably the value
type logic.
Task-number: QTBUG-82931
Change-Id: Ic38f38d10c71ed20655877976c9cb5ee3cbe2d77
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlpropertycache.cpp')
-rw-r--r-- | src/qml/qml/qqmlpropertycache.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/qml/qml/qqmlpropertycache.cpp b/src/qml/qml/qqmlpropertycache.cpp index 060437441d..18c27710c7 100644 --- a/src/qml/qml/qqmlpropertycache.cpp +++ b/src/qml/qml/qqmlpropertycache.cpp @@ -138,7 +138,7 @@ void QQmlPropertyData::load(const QMetaProperty &p) { populate(this, p); QMetaType type = p.metaType(); - setPropType(type.id()); + setPropType(type); flagsForPropertyType(type, m_flags); } @@ -147,14 +147,14 @@ void QQmlPropertyData::load(const QMetaMethod &m) setCoreIndex(m.methodIndex()); setArguments(nullptr); - setPropType(m.returnType()); + setPropType(m.returnMetaType()); m_flags.type = Flags::FunctionType; if (m.methodType() == QMetaMethod::Signal) { m_flags.setIsSignal(true); } else if (m.methodType() == QMetaMethod::Constructor) { m_flags.setIsConstructor(true); - setPropType(QMetaType::QObjectStar); + setPropType(QMetaType::fromType<QObject *>()); } const int paramCount = m.parameterCount(); @@ -261,7 +261,7 @@ QQmlPropertyCache *QQmlPropertyCache::copyAndReserve(int propertyCount, int meth This is different from QMetaMethod::methodIndex(). */ void QQmlPropertyCache::appendProperty(const QString &name, QQmlPropertyData::Flags flags, - int coreIndex, int propType, QTypeRevision version, + int coreIndex, QMetaType propType, QTypeRevision version, int notifyIndex) { QQmlPropertyData data; @@ -286,7 +286,7 @@ void QQmlPropertyCache::appendSignal(const QString &name, QQmlPropertyData::Flag const QList<QByteArray> &names) { QQmlPropertyData data; - data.setPropType(QMetaType::UnknownType); + data.setPropType(QMetaType()); data.setCoreIndex(coreIndex); data.setFlags(flags); data.setArguments(nullptr); @@ -326,7 +326,7 @@ void QQmlPropertyCache::appendMethod(const QString &name, QQmlPropertyData::Flag int argumentCount = names.count(); QQmlPropertyData data; - data.setPropType(returnType); + data.setPropType(QMetaType(returnType)); data.setCoreIndex(coreIndex); QQmlPropertyCacheMethodArguments *args = createArgumentsObject(argumentCount, names); @@ -1091,8 +1091,8 @@ void QQmlPropertyCache::toMetaObjectBuilder(QMetaObjectBuilder &builder) QQmlPropertyData *data = methods.at(ii).second; QByteArray returnType; - if (data->propType() != 0) - returnType = QMetaType(data->propType()).name(); + if (data->propType().isValid()) + returnType = data->propType().name(); QByteArray signature; // '+=' reserves extra capacity. Follow-up appending will be probably free. |