diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2014-02-10 20:12:18 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-16 22:08:40 +0100 |
commit | ee33a9551e87a5ddb49c070afd68d967af3d5c3d (patch) | |
tree | 36e198c33186e87b9859c4f8b162089848f04643 /src/qml/qml/qqmlobjectcreator_p.h | |
parent | 6539a4c99d042a72db78b30e47e6cc1acd35f856 (diff) |
[new compiler] Cleanup object creator members
Collect variables shared across recursive instances in a SharedData
structure, get rid of some other members.
Change-Id: I8d52fbb34820ce17d754b91c3fdee9e534a95753
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlobjectcreator_p.h')
-rw-r--r-- | src/qml/qml/qqmlobjectcreator_p.h | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/src/qml/qml/qqmlobjectcreator_p.h b/src/qml/qml/qqmlobjectcreator_p.h index 68f2eaeab3..70b12e5f94 100644 --- a/src/qml/qml/qqmlobjectcreator_p.h +++ b/src/qml/qml/qqmlobjectcreator_p.h @@ -57,15 +57,16 @@ class QQmlInstantiationInterrupt; class QmlObjectCreator { Q_DECLARE_TR_FUNCTIONS(QmlObjectCreator) + struct SharedState; public: - QmlObjectCreator(QQmlContextData *contextData, QQmlCompiledData *compiledData, QQmlContextData *creationContext, QQmlContextData *rootContext = 0, - QFiniteStack<QQmlAbstractBinding*> *inheritedBindingStack = 0, QFiniteStack<QQmlParserStatus*> *inheritedParserStatusStack = 0); + QmlObjectCreator(QQmlContextData *parentContext, QQmlCompiledData *compiledData, QQmlContextData *creationContext); ~QmlObjectCreator(); QObject *create(int subComponentIndex = -1, QObject *parent = 0); QQmlContextData *finalize(QQmlInstantiationInterrupt &interrupt); - QQmlComponentAttached **componentAttached; + QQmlComponentAttached **componentAttachment() { return &sharedState->componentAttached; } + QList<QQmlEnginePrivate::FinalizeCallback> finalizeCallbacks; QList<QQmlError> errors; @@ -73,6 +74,10 @@ public: QQmlContextData *parentContextData() const { return parentContext; } private: + QmlObjectCreator(QQmlContextData *contextData, QQmlCompiledData *compiledData, SharedState *inheritedSharedState); + + void init(QQmlContextData *parentContext); + QObject *createInstance(int index, QObject *parent = 0); bool populateInstance(int index, QObject *instance, QQmlRefPointer<QQmlPropertyCache> cache, QObject *bindingTarget, QQmlPropertyData *valueTypeProperty); @@ -85,23 +90,24 @@ private: QString stringAt(int idx) const { return qmlUnit->header.stringAt(idx); } void recordError(const QV4::CompiledData::Location &location, const QString &description); - QUrl url; + struct SharedState { + QQmlContextData *rootContext; + QQmlContextData *creationContext; + QFiniteStack<QQmlAbstractBinding*> allCreatedBindings; + QFiniteStack<QQmlParserStatus*> allParserStatusCallbacks; + QQmlComponentAttached *componentAttached; + }; + QQmlEngine *engine; + QQmlCompiledData *compiledData; const QV4::CompiledData::QmlUnit *qmlUnit; - const QV4::CompiledData::CompilationUnit *jsUnit; QQmlContextData *parentContext; - QQmlContextData *creationContext; QQmlContextData *context; - const QHash<int, QQmlCompiledData::TypeReference*> resolvedTypes; - const QVector<QQmlPropertyCache *> propertyCaches; - const QVector<QByteArray> vmeMetaObjectData; + const QHash<int, QQmlCompiledData::TypeReference*> &resolvedTypes; + const QVector<QQmlPropertyCache *> &propertyCaches; + const QVector<QByteArray> &vmeMetaObjectData; QHash<int, int> objectIndexToId; - QFiniteStack<QQmlAbstractBinding*> *allCreatedBindings; - QFiniteStack<QQmlParserStatus*> *allParserStatusCallbacks; - bool ownBindingAndParserStatusStacks; - QQmlCompiledData *compiledData; - QQmlContextData *rootContext; - QQmlComponentAttached *componentAttachedImpl; + QFlagPointer<SharedState> sharedState; QObject *_qobject; QObject *_scopeObject; |