diff options
Diffstat (limited to 'src/qml/qml/qqmlcustomparser_p.h')
-rw-r--r-- | src/qml/qml/qqmlcustomparser_p.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlcustomparser_p.h b/src/qml/qml/qqmlcustomparser_p.h index 27f7e00b31..2f1a9ddec8 100644 --- a/src/qml/qml/qqmlcustomparser_p.h +++ b/src/qml/qml/qqmlcustomparser_p.h @@ -108,6 +108,17 @@ private: QQmlCustomParserNodePrivate *d; }; +struct QQmlCustomParserCompilerBackend +{ + virtual ~QQmlCustomParserCompilerBackend() {} + virtual const QQmlImports &imports() const = 0; + + int evaluateEnum(const QString &scope, const QByteArray& enumValue, bool *ok) const; + const QMetaObject *resolveType(const QString& name) const; + + virtual QQmlBinding::Identifier bindingIdentifier(const QQmlScript::Variant&, const QString&, QQmlCustomParser *) { return QQmlBinding::Invalid; } +}; + class Q_QML_PRIVATE_EXPORT QQmlCustomParser { public: @@ -126,6 +137,7 @@ public: Flags flags() const { return m_flags; } virtual QByteArray compile(const QList<QQmlCustomParserProperty> &)=0; + virtual QByteArray compile(const QV4::CompiledData::QmlUnit *qmlUnit, const QList<const QV4::CompiledData::Binding *> &bindings); // ### make pure virtual virtual void setCustomData(QObject *, const QByteArray &)=0; QList<QQmlError> errors() const { return exceptions; } @@ -134,6 +146,8 @@ protected: void error(const QString& description); void error(const QQmlCustomParserProperty&, const QString& description); void error(const QQmlCustomParserNode&, const QString& description); + void error(const QV4::CompiledData::Binding *binding, const QString& description); + void error(const QV4::CompiledData::Object *object, const QString& description); int evaluateEnum(const QByteArray&, bool *ok) const; @@ -143,10 +157,11 @@ protected: private: QList<QQmlError> exceptions; - QQmlCompiler *compiler; + QQmlCustomParserCompilerBackend *compiler; QQmlScript::Object *object; Flags m_flags; friend class QQmlCompiler; + friend class QQmlPropertyValidator; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QQmlCustomParser::Flags) |