diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-11-28 16:04:33 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-05 15:33:30 +0100 |
commit | 5ac2990688c7da6ce872bccc5c08129267887d68 (patch) | |
tree | 4099c1f9e415dc3efda5ea97385a5a76824375c6 /src/declarative/qml/qdeclarativeproperty_p.h | |
parent | 5c9179b19776808acecab4805b10932dc4f9511a (diff) |
Introduce more generic fast property handling
Also reduce the number of direct calls to qt_metacall().
Change-Id: I04cd6e516a3e61058548309a19fe0b830f15c93f
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src/declarative/qml/qdeclarativeproperty_p.h')
-rw-r--r-- | src/declarative/qml/qdeclarativeproperty_p.h | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/declarative/qml/qdeclarativeproperty_p.h b/src/declarative/qml/qdeclarativeproperty_p.h index f2e86dda19..ce66ef8c2c 100644 --- a/src/declarative/qml/qdeclarativeproperty_p.h +++ b/src/declarative/qml/qdeclarativeproperty_p.h @@ -69,21 +69,26 @@ class QDeclarativeJavaScriptExpression; class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativePropertyPrivate : public QDeclarativeRefCount { public: - enum WriteFlag { BypassInterceptor = 0x01, DontRemoveBinding = 0x02, RemoveBindingOnAliasWrite = 0x04 }; + enum WriteFlag { + BypassInterceptor = 0x01, + DontRemoveBinding = 0x02, + RemoveBindingOnAliasWrite = 0x04 + }; Q_DECLARE_FLAGS(WriteFlags, WriteFlag) - QDeclarativePropertyPrivate() - : context(0), engine(0), object(0), isNameCached(false) {} - - inline QDeclarativeContextData *effectiveContext() const; QDeclarativeContextData *context; QDeclarativeEngine *engine; QDeclarativeGuard<QObject> object; - bool isNameCached:1; QDeclarativePropertyData core; + + bool isNameCached:1; QString nameCache; + QDeclarativePropertyPrivate(); + + inline QDeclarativeContextData *effectiveContext() const; + void initProperty(QObject *obj, const QString &name); void initDefault(QObject *obj); @@ -105,18 +110,21 @@ public: static bool write(QObject *, const QDeclarativePropertyData &, const QVariant &, QDeclarativeContextData *, WriteFlags flags = 0); static void findAliasTarget(QObject *, int, QObject **, int *); - static QDeclarativeAbstractBinding *setBinding(QObject *, int coreIndex, int valueTypeIndex /* -1 */, + static QDeclarativeAbstractBinding *setBinding(QObject *, int coreIndex, + int valueTypeIndex /* -1 */, QDeclarativeAbstractBinding *, WriteFlags flags = DontRemoveBinding); - static QDeclarativeAbstractBinding *setBindingNoEnable(QObject *, int coreIndex, int valueTypeIndex /* -1 */, + static QDeclarativeAbstractBinding *setBindingNoEnable(QObject *, int coreIndex, + int valueTypeIndex /* -1 */, QDeclarativeAbstractBinding *); - static QDeclarativeAbstractBinding *binding(QObject *, int coreIndex, int valueTypeIndex /* -1 */); + static QDeclarativeAbstractBinding *binding(QObject *, int coreIndex, + int valueTypeIndex /* -1 */); static QDeclarativePropertyData saveValueType(const QMetaObject *, int, const QMetaObject *, int, QDeclarativeEngine *); - static QDeclarativeProperty restore(const QDeclarativePropertyData &, - QObject *, + static QDeclarativeProperty restore(QObject *, + const QDeclarativePropertyData &, QDeclarativeContextData *); static bool equal(const QMetaObject *, const QMetaObject *); |