aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlobjectcreator_p.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2014-02-10 20:12:18 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-16 22:08:40 +0100
commitee33a9551e87a5ddb49c070afd68d967af3d5c3d (patch)
tree36e198c33186e87b9859c4f8b162089848f04643 /src/qml/qml/qqmlobjectcreator_p.h
parent6539a4c99d042a72db78b30e47e6cc1acd35f856 (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.h36
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;