diff options
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; |