aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmllistwrapper.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-04-29 16:54:07 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2014-07-22 13:49:06 +0200
commitb6b88a63becc773a955b63021b32144b7b100ac6 (patch)
treedf2ac39810c8b2bb4ee9d6926eb97533c269230d /src/qml/qml/qqmllistwrapper.cpp
parent053eb96c31a5d24ce8cda41dbb46b1df27e03bfb (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.cpp35
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);