diff options
author | Anton Kudryavtsev <a.kudryavtsev@netris.ru> | 2016-10-12 13:31:39 +0300 |
---|---|---|
committer | Anton Kudryavtsev <antkudr@mail.ru> | 2016-11-08 17:32:27 +0000 |
commit | 47af56343a12bad0d3696e139af9a23ee1f67933 (patch) | |
tree | 82e8a7e5c752a70cd32ee440d7131a150e218b47 /src/qml | |
parent | 30cd2978eee14f75bbc85442fdbea4c9905fadbd (diff) |
QQmlPropertyCache: add property() overload with QStringRef arg
Now we can pass 'name' arg as QStringRef. Client code can
reduce allocations.
Change-Id: I444f7135f4912f54d57e0a1193f330a3976fc186
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/qml/qqmlpropertycache.cpp | 17 | ||||
-rw-r--r-- | src/qml/qml/qqmlpropertycache_p.h | 8 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src/qml/qml/qqmlpropertycache.cpp b/src/qml/qml/qqmlpropertycache.cpp index bf220a905c..b645d47c39 100644 --- a/src/qml/qml/qqmlpropertycache.cpp +++ b/src/qml/qml/qqmlpropertycache.cpp @@ -978,7 +978,7 @@ int QQmlPropertyCache::originalClone(QObject *object, int index) return index; } -QQmlPropertyData qQmlPropertyCacheCreate(const QMetaObject *metaObject, const QString &property) +static QQmlPropertyData qQmlPropertyCacheCreate(const QMetaObject *metaObject, const QStringRef &property) { Q_ASSERT(metaObject); @@ -1038,12 +1038,17 @@ QQmlPropertyData qQmlPropertyCacheCreate(const QMetaObject *metaObject, const QS return rv; } -inline const QString &qQmlPropertyCacheToString(const QString &string) +static inline QQmlPropertyData qQmlPropertyCacheCreate(const QMetaObject *metaObject, const QString &property) +{ + return qQmlPropertyCacheCreate(metaObject, QStringRef(&property)); +} + +static inline const QStringRef &qQmlPropertyCacheToString(const QStringRef &string) { return string; } -inline QString qQmlPropertyCacheToString(const QV4::String *string) +static inline QString qQmlPropertyCacheToString(const QV4::String *string) { return string->toQString(); } @@ -1090,10 +1095,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); } // these two functions are copied from qmetaobject.cpp diff --git a/src/qml/qml/qqmlpropertycache_p.h b/src/qml/qml/qqmlpropertycache_p.h index 630d04938a..d34d1bf387 100644 --- a/src/qml/qml/qqmlpropertycache_p.h +++ b/src/qml/qml/qqmlpropertycache_p.h @@ -406,11 +406,17 @@ public: inline QQmlPropertyData *overrideData(QQmlPropertyData *) const; inline bool isAllowedInRevision(QQmlPropertyData *) const; - static QQmlPropertyData *property(QJSEngine *, QObject *, const QString &, + static QQmlPropertyData *property(QJSEngine *, QObject *, const QStringRef &, QQmlContextData *, QQmlPropertyData &); static QQmlPropertyData *property(QJSEngine *, QObject *, const QV4::String *, QQmlContextData *, QQmlPropertyData &); + static QQmlPropertyData *property(QJSEngine *engine, QObject *obj, const QString &name, + QQmlContextData *context, QQmlPropertyData &local) + { + return property(engine, obj, QStringRef(&name), context, local); + } + //see QMetaObjectPrivate::originalClone int originalClone(int index); static int originalClone(QObject *, int index); |