diff options
Diffstat (limited to 'src/qml/qml/qqmlpropertycache.cpp')
-rw-r--r-- | src/qml/qml/qqmlpropertycache.cpp | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/src/qml/qml/qqmlpropertycache.cpp b/src/qml/qml/qqmlpropertycache.cpp index a110dccee2..562aa1c88a 100644 --- a/src/qml/qml/qqmlpropertycache.cpp +++ b/src/qml/qml/qqmlpropertycache.cpp @@ -193,7 +193,7 @@ void QQmlPropertyData::load(const QMetaMethod &m) if (m.parameterCount()) { _flags.hasArguments = true; - if ((m.parameterCount() == 1) && (m.parameterTypes().first() == "QQmlV4Function*")) { + if ((m.parameterCount() == 1) && (m.parameterTypes().constFirst() == "QQmlV4Function*")) { _flags.isV4Function = true; } } @@ -228,7 +228,7 @@ void QQmlPropertyData::lazyLoad(const QMetaMethod &m) const int paramCount = m.parameterCount(); if (paramCount) { _flags.hasArguments = true; - if ((paramCount == 1) && (m.parameterTypes().first() == "QQmlV4Function*")) { + if ((paramCount == 1) && (m.parameterTypes().constFirst() == "QQmlV4Function*")) { _flags.isV4Function = true; } } @@ -269,8 +269,8 @@ QQmlPropertyCache::~QQmlPropertyCache() QQmlPropertyCacheMethodArguments *args = argumentsCache; while (args) { QQmlPropertyCacheMethodArguments *next = args->next; - if (args->signalParameterStringForJS) delete args->signalParameterStringForJS; - if (args->names) delete args->names; + delete args->signalParameterStringForJS; + delete args->names; free(args); args = next; } @@ -978,7 +978,8 @@ int QQmlPropertyCache::originalClone(QObject *object, int index) return index; } -QQmlPropertyData qQmlPropertyCacheCreate(const QMetaObject *metaObject, const QString &property) +template<typename T> +static QQmlPropertyData qQmlPropertyCacheCreate(const QMetaObject *metaObject, const T& propertyName) { Q_ASSERT(metaObject); @@ -995,8 +996,6 @@ QQmlPropertyData qQmlPropertyCacheCreate(const QMetaObject *metaObject, const QS // These indices don't apply to gadgets, so don't block them. const bool preventDestruction = metaObject->superClass() || metaObject == &QObject::staticMetaObject; - const QByteArray propertyName = property.toUtf8(); - int methodCount = metaObject->methodCount(); for (int ii = methodCount - 1; ii >= 0; --ii) { if (preventDestruction && (ii == destroyedIdx1 || ii == destroyedIdx2 || ii == deleteLaterIdx)) @@ -1038,14 +1037,19 @@ QQmlPropertyData qQmlPropertyCacheCreate(const QMetaObject *metaObject, const QS return rv; } -inline const QString &qQmlPropertyCacheToString(const QString &string) +static inline const char *qQmlPropertyCacheToString(QLatin1String string) +{ + return string.data(); +} + +static inline QByteArray qQmlPropertyCacheToString(const QStringRef &string) { - return string; + return string.toUtf8(); } -inline QString qQmlPropertyCacheToString(const QV4::String *string) +static inline QByteArray qQmlPropertyCacheToString(const QV4::String *string) { - return string->toQString(); + return string->toQString().toUtf8(); } template<typename T> @@ -1090,10 +1094,10 @@ QQmlPropertyCache::property(QJSEngine *engine, QObject *obj, const QV4::String * } QQmlPropertyData * -QQmlPropertyCache::property(QJSEngine *engine, QObject *obj, - const QString &name, QQmlContextData *context, QQmlPropertyData &local) +QQmlPropertyCache::property(QJSEngine *engine, QObject *obj, const QStringRef &name, + QQmlContextData *context, QQmlPropertyData &local) { - return qQmlPropertyCacheProperty<const QString &>(engine, obj, name, context, local); + return qQmlPropertyCacheProperty<const QStringRef &>(engine, obj, name, context, local); } QQmlPropertyData * |