From feb736ef27deb5afc4b8739b3f831b1a94004163 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C4=99drzej=20Nowacki?= Date: Tue, 24 Apr 2012 12:44:34 +0200 Subject: [PATCH] Cleanup QMetaObject string access. We do not need operate on raw QByteArrayData, QByteArray gives us better, stable API, without any performance penalty. Change-Id: Idf47af2333c3694e81dcd31cd07d1a4720046df7 Reviewed-by: Olivier Goffart --- src/corelib/kernel/qmetaobject.cpp | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index 8a415c9..2439c22 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -146,23 +146,17 @@ QT_BEGIN_NAMESPACE static inline const QMetaObjectPrivate *priv(const uint* data) { return reinterpret_cast(data); } -static inline const QByteArrayData &stringData(const QMetaObject *mo, int index) +static inline const QByteArray stringData(const QMetaObject *mo, int index) { Q_ASSERT(priv(mo->d.data)->revision >= 7); - const QByteArrayData &data = mo->d.stringdata[index]; - Q_ASSERT(data.ref.isStatic()); - Q_ASSERT(data.alloc == 0); - Q_ASSERT(data.capacityReserved == 0); - Q_ASSERT(data.size >= 0); + const QByteArrayDataPtr data = { const_cast(&mo->d.stringdata[index]) }; + Q_ASSERT(data.ptr->ref.isStatic()); + Q_ASSERT(data.ptr->alloc == 0); + Q_ASSERT(data.ptr->capacityReserved == 0); + Q_ASSERT(data.ptr->size >= 0); return data; } -static inline QByteArray toByteArray(const QByteArrayData &d) -{ - QByteArrayDataPtr holder = { const_cast(&d) }; - return QByteArray(holder); -} - static inline const char *rawStringData(const QMetaObject *mo, int index) { return stringData(mo, index).data(); @@ -170,13 +164,13 @@ static inline const char *rawStringData(const QMetaObject *mo, int index) static inline int stringSize(const QMetaObject *mo, int index) { - return stringData(mo, index).size; + return stringData(mo, index).size(); } static inline QByteArray typeNameFromTypeInfo(const QMetaObject *mo, uint typeInfo) { if (typeInfo & IsUnresolvedType) { - return toByteArray(stringData(mo, typeInfo & TypeNameIndexMask)); + return stringData(mo, typeInfo & TypeNameIndexMask); } else { // ### Use the QMetaType::typeName() that returns QByteArray const char *t = QMetaType::typeName(typeInfo); @@ -193,7 +187,7 @@ static inline int typeFromTypeInfo(const QMetaObject *mo, uint typeInfo) { if (!(typeInfo & IsUnresolvedType)) return typeInfo; - return QMetaType::type(toByteArray(stringData(mo, typeInfo & TypeNameIndexMask))); + return QMetaType::type(stringData(mo, typeInfo & TypeNameIndexMask)); } class QMetaMethodPrivate : public QMetaMethod @@ -572,7 +566,7 @@ static bool methodMatch(const QMetaObject *m, int handle, if (int(m->d.data[handle + 1]) != argc) return false; - if (toByteArray(stringData(m, m->d.data[handle])) != name) + if (stringData(m, m->d.data[handle]) != name) return false; int paramsIndex = m->d.data[handle + 2] + 1; @@ -1522,7 +1516,7 @@ QByteArray QMetaMethodPrivate::signature() const QByteArray QMetaMethodPrivate::name() const { Q_ASSERT(priv(mobj->d.data)->revision >= 7); - return toByteArray(stringData(mobj, mobj->d.data[handle])); + return stringData(mobj, mobj->d.data[handle]); } int QMetaMethodPrivate::typesDataIndex() const @@ -1599,14 +1593,14 @@ QList QMetaMethodPrivate::parameterNames() const int argc = parameterCount(); int namesIndex = parametersDataIndex() + argc; for (int i = 0; i < argc; ++i) - list += toByteArray(stringData(mobj, mobj->d.data[namesIndex + i])); + list += stringData(mobj, mobj->d.data[namesIndex + i]); return list; } QByteArray QMetaMethodPrivate::tag() const { Q_ASSERT(priv(mobj->d.data)->revision >= 7); - return toByteArray(stringData(mobj, mobj->d.data[handle + 3])); + return stringData(mobj, mobj->d.data[handle + 3]); } /*! @@ -2391,7 +2385,7 @@ QByteArray QMetaEnum::valueToKeys(int value) const v = v & ~k; if (!keys.isEmpty()) keys += '|'; - keys += toByteArray(stringData(mobj, mobj->d.data[data + 2*i])); + keys += stringData(mobj, mobj->d.data[data + 2*i]); } } return keys; -- 2.7.4