aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlboundsignal_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/qqmlboundsignal_p.h')
-rw-r--r--src/qml/qml/qqmlboundsignal_p.h40
1 files changed, 26 insertions, 14 deletions
diff --git a/src/qml/qml/qqmlboundsignal_p.h b/src/qml/qml/qqmlboundsignal_p.h
index fe0dbd380e..93cff745e2 100644
--- a/src/qml/qml/qqmlboundsignal_p.h
+++ b/src/qml/qml/qqmlboundsignal_p.h
@@ -86,9 +86,9 @@ public:
// evaluation of a bound signal expression doesn't return any value
void evaluate(void **a);
- QString sourceFile() const { return m_fileName; }
- quint16 lineNumber() const { return m_line; }
- quint16 columnNumber() const { return m_column; }
+ QString sourceFile() const;
+ quint16 lineNumber() const;
+ quint16 columnNumber() const;
QString expression() const;
QV4::Function *function() const;
QObject *target() const { return m_target; }
@@ -100,23 +100,35 @@ private:
void init(QQmlContextData *ctxt, QObject *scope);
+ bool expressionFunctionValid() const { return m_extra.flag(); }
+ void setExpressionFunctionValid(bool v) { m_extra.setFlagValue(v); }
+
+ bool invalidParameterName() const { return m_extra.flag2(); }
+ void setInvalidParameterName(bool v) { m_extra.setFlag2Value(v); }
+
QV4::PersistentValue m_v8qmlscope;
QV4::PersistentValue m_v8function;
- QString m_handlerName;
- QString m_parameterString;
- //once m_v8function is valid, we clear expression and
- //extract it from m_v8function if needed.
- QString m_expression; //only used when expression needs to be rewritten
- QString m_fileName;
- quint16 m_line;
- quint16 m_column;
-
QObject *m_target;
int m_index;
- bool m_expressionFunctionValid:1;
- bool m_invalidParameterName:1;
+ // only needed when !expressionFunctionValid()
+ struct ExtraData {
+ ExtraData(const QString &handlerName, const QString &parameterString,
+ const QString &expression, const QString &fileName,
+ quint16 line, quint16 column);
+ QString m_handlerName;
+ QString m_parameterString;
+ QString m_expression;
+ QString m_fileName;
+ quint16 m_line;
+ quint16 m_column;
+ };
+
+ // We store some flag bits in the following flag pointers.
+ // flag - expressionFunctionValid
+ // flag2 - invalidParameterName
+ QFlagPointer<ExtraData> m_extra;
};
class Q_QML_PRIVATE_EXPORT QQmlAbstractBoundSignal