diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-04-29 16:54:07 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-07-22 13:49:06 +0200 |
commit | b6b88a63becc773a955b63021b32144b7b100ac6 (patch) | |
tree | df2ac39810c8b2bb4ee9d6926eb97533c269230d /src/qml/qml/qqmllistwrapper.cpp | |
parent | 053eb96c31a5d24ce8cda41dbb46b1df27e03bfb (diff) |
Convert list wrapper to new storage layout
Change-Id: Id360880d26444d84462e16e7401945d1160b4281
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmllistwrapper.cpp')
-rw-r--r-- | src/qml/qml/qqmllistwrapper.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/src/qml/qml/qqmllistwrapper.cpp b/src/qml/qml/qqmllistwrapper.cpp index fd50e2dbbc..e4e79f58d8 100644 --- a/src/qml/qml/qqmllistwrapper.cpp +++ b/src/qml/qml/qqmllistwrapper.cpp @@ -53,10 +53,11 @@ using namespace QV4; DEFINE_OBJECT_VTABLE(QmlListWrapper); QmlListWrapper::QmlListWrapper(QV8Engine *engine) - : Object(QV8Engine::getV4(engine)), - v8(engine) + : Object(QV8Engine::getV4(engine)) { setVTable(staticVTable()); + d()->v8 = engine; + QV4::Scope scope(QV8Engine::getV4(engine)); QV4::ScopedObject protectThis(scope, this); Q_UNUSED(protectThis); @@ -76,9 +77,9 @@ ReturnedValue QmlListWrapper::create(QV8Engine *v8, QObject *object, int propId, Scope scope(v4); Scoped<QmlListWrapper> r(scope, new (v4->memoryManager) QmlListWrapper(v8)); - r->object = object; - r->propertyType = propType; - void *args[] = { &r->property, 0 }; + r->d()->object = object; + r->d()->propertyType = propType; + void *args[] = { &r->d()->property, 0 }; QMetaObject::metacall(object, QMetaObject::ReadProperty, propId, args); return r.asReturnedValue(); } @@ -89,18 +90,18 @@ ReturnedValue QmlListWrapper::create(QV8Engine *v8, const QQmlListProperty<QObje Scope scope(v4); Scoped<QmlListWrapper> r(scope, new (v4->memoryManager) QmlListWrapper(v8)); - r->object = prop.object; - r->property = prop; - r->propertyType = propType; + r->d()->object = prop.object; + r->d()->property = prop; + r->d()->propertyType = propType; return r.asReturnedValue(); } QVariant QmlListWrapper::toVariant() const { - if (!object) + if (!d()->object) return QVariant(); - return QVariant::fromValue(QQmlListReferencePrivate::init(property, propertyType, v8->engine())); + return QVariant::fromValue(QQmlListReferencePrivate::init(d()->property, d()->propertyType, d()->v8->engine())); } @@ -111,8 +112,8 @@ ReturnedValue QmlListWrapper::get(Managed *m, const StringRef name, bool *hasPro if (!w) return v4->currentContext()->throwTypeError(); - if (name->equals(v4->id_length) && !w->object.isNull()) { - quint32 count = w->property.count ? w->property.count(&w->property) : 0; + if (name->equals(v4->id_length) && !w->d()->object.isNull()) { + quint32 count = w->d()->property.count ? w->d()->property.count(&w->d()->property) : 0; return Primitive::fromUInt32(count).asReturnedValue(); } @@ -135,11 +136,11 @@ ReturnedValue QmlListWrapper::getIndexed(Managed *m, uint index, bool *hasProper return e->currentContext()->throwTypeError(); } - quint32 count = w->property.count ? w->property.count(&w->property) : 0; - if (index < count && w->property.at) { + quint32 count = w->d()->property.count ? w->d()->property.count(&w->d()->property) : 0; + if (index < count && w->d()->property.at) { if (hasProperty) *hasProperty = true; - return QV4::QObjectWrapper::wrap(e, w->property.at(&w->property, index)); + return QV4::QObjectWrapper::wrap(e, w->d()->property.at(&w->d()->property, index)); } if (hasProperty) @@ -166,12 +167,12 @@ void QmlListWrapper::advanceIterator(Managed *m, ObjectIterator *it, StringRef n name = (String *)0; *index = UINT_MAX; QmlListWrapper *w = m->as<QmlListWrapper>(); - quint32 count = w->property.count ? w->property.count(&w->property) : 0; + quint32 count = w->d()->property.count ? w->d()->property.count(&w->d()->property) : 0; if (it->arrayIndex < count) { *index = it->arrayIndex; ++it->arrayIndex; *attrs = QV4::Attr_Data; - p->value = QV4::QObjectWrapper::wrap(w->engine(), w->property.at(&w->property, *index)); + p->value = QV4::QObjectWrapper::wrap(w->engine(), w->d()->property.at(&w->d()->property, *index)); return; } return QV4::Object::advanceIterator(m, it, name, index, p, attrs); |