diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2012-05-23 16:01:21 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-24 17:50:13 +0200 |
commit | d12c9306ee2355a76e3e037877ee445b31f66a23 (patch) | |
tree | 324f6b5979ae334358bf71474348a7e3700a68da /src/qml/qml/qqmlbinding.cpp | |
parent | 6ff8aa4b83e801acadd45cc32759ea77cf4532c8 (diff) |
Use static dispatch tables for QQmlAbstractBinding
This saves us the space of the virtual table pointer, but does
somewhat limit us to the 4 QQmlAbstractBinding types that we
have today.
Change-Id: I03d06ef2ec0c51271c28e7a5aab6dc689d369da4
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src/qml/qml/qqmlbinding.cpp')
-rw-r--r-- | src/qml/qml/qqmlbinding.cpp | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/src/qml/qml/qqmlbinding.cpp b/src/qml/qml/qqmlbinding.cpp index 2c2c801594..81826d704d 100644 --- a/src/qml/qml/qqmlbinding.cpp +++ b/src/qml/qml/qqmlbinding.cpp @@ -56,6 +56,17 @@ QT_BEGIN_NAMESPACE +// Used in qqmlabstractbinding.cpp +QQmlAbstractBinding::VTable QQmlBinding_vtable = { + QQmlAbstractBinding::default_destroy<QQmlBinding>, + QQmlBinding::expression, + QQmlBinding::propertyIndex, + QQmlBinding::object, + QQmlBinding::setEnabled, + QQmlBinding::update, + QQmlBinding::retargetBinding +}; + QQmlBinding::Identifier QQmlBinding::Invalid = -1; QQmlBinding * @@ -89,7 +100,8 @@ static QQmlJavaScriptExpression::VTable QQmlBinding_jsvtable = { }; QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContext *ctxt) -: QQmlJavaScriptExpression(&QQmlBinding_jsvtable), m_lineNumber(-1), m_columnNumber(-1) +: QQmlJavaScriptExpression(&QQmlBinding_jsvtable), QQmlAbstractBinding(Binding), + m_lineNumber(-1), m_columnNumber(-1) { setNotifyOnValueChanged(true); QQmlAbstractExpression::setContext(QQmlContextData::get(ctxt)); @@ -103,7 +115,8 @@ QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContext *ctxt) } QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContextData *ctxt) -: QQmlJavaScriptExpression(&QQmlBinding_jsvtable), m_lineNumber(-1), m_columnNumber(-1) +: QQmlJavaScriptExpression(&QQmlBinding_jsvtable), QQmlAbstractBinding(Binding), + m_lineNumber(-1), m_columnNumber(-1) { setNotifyOnValueChanged(true); QQmlAbstractExpression::setContext(ctxt); @@ -119,7 +132,8 @@ QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContextData *ctxt QQmlBinding::QQmlBinding(const QString &str, bool isRewritten, QObject *obj, QQmlContextData *ctxt, const QString &url, int lineNumber, int columnNumber) -: QQmlJavaScriptExpression(&QQmlBinding_jsvtable), m_lineNumber(-1), m_columnNumber(-1) +: QQmlJavaScriptExpression(&QQmlBinding_jsvtable), QQmlAbstractBinding(Binding), + m_lineNumber(-1), m_columnNumber(-1) { setNotifyOnValueChanged(true); QQmlAbstractExpression::setContext(ctxt); @@ -151,7 +165,7 @@ QQmlBinding::QQmlBinding(const QString &str, bool isRewritten, QObject *obj, */ QQmlBinding::QQmlBinding(void *functionPtr, QObject *obj, QQmlContextData *ctxt, const QString &url, int lineNumber, int columnNumber) -: QQmlJavaScriptExpression(&QQmlBinding_jsvtable), +: QQmlJavaScriptExpression(&QQmlBinding_jsvtable), QQmlAbstractBinding(Binding), m_url(url), m_lineNumber(lineNumber), m_columnNumber(columnNumber) { setNotifyOnValueChanged(true); @@ -293,6 +307,36 @@ void QQmlBinding::refresh() update(); } +QString QQmlBinding::expression(const QQmlAbstractBinding *This) +{ + return static_cast<const QQmlBinding *>(This)->expression(); +} + +int QQmlBinding::propertyIndex(const QQmlAbstractBinding *This) +{ + return static_cast<const QQmlBinding *>(This)->propertyIndex(); +} + +QObject *QQmlBinding::object(const QQmlAbstractBinding *This) +{ + return static_cast<const QQmlBinding *>(This)->object(); +} + +void QQmlBinding::setEnabled(QQmlAbstractBinding *This, bool e, QQmlPropertyPrivate::WriteFlags f) +{ + static_cast<QQmlBinding *>(This)->setEnabled(e, f); +} + +void QQmlBinding::update(QQmlAbstractBinding *This , QQmlPropertyPrivate::WriteFlags f) +{ + static_cast<QQmlBinding *>(This)->update(f); +} + +void QQmlBinding::retargetBinding(QQmlAbstractBinding *This, QObject *o, int i) +{ + static_cast<QQmlBinding *>(This)->retargetBinding(o, i); +} + void QQmlBinding::setEnabled(bool e, QQmlPropertyPrivate::WriteFlags flags) { setEnabledFlag(e); |