return;
QV4::Scope scope(v4);
QV4::Scoped<QV4::ForEachIteratorObject> it(scope, d_ptr->iterator.value());
- it->data.it.flags = QV4::ObjectIterator::NoFlags;
- it->data.it.next(d_ptr->nextName, &d_ptr->nextIndex, &d_ptr->nextProperty, &d_ptr->nextAttributes);
+ it->d()->it.flags = QV4::ObjectIterator::NoFlags;
+ it->d()->it.next(d_ptr->nextName, &d_ptr->nextIndex, &d_ptr->nextProperty, &d_ptr->nextAttributes);
}
/*!
return false;
QV4::Scope scope(v4);
QV4::Scoped<QV4::ForEachIteratorObject> it(scope, d_ptr->iterator.value());
- it->data.it.next(d_ptr->nextName, &d_ptr->nextIndex, &d_ptr->nextProperty, &d_ptr->nextAttributes);
+ it->d()->it.next(d_ptr->nextName, &d_ptr->nextIndex, &d_ptr->nextProperty, &d_ptr->nextAttributes);
return !!d_ptr->currentName || d_ptr->currentIndex != UINT_MAX;
}
QV4::ScopedObject o(scope, jsp->value);
d_ptr->iterator = v4->newForEachIteratorObject(v4->currentContext(), o)->asReturnedValue();
QV4::Scoped<QV4::ForEachIteratorObject> it(scope, d_ptr->iterator.value());
- it->data.it.flags = QV4::ObjectIterator::NoFlags;
- it->data.it.next(d_ptr->nextName, &d_ptr->nextIndex, &d_ptr->nextProperty, &d_ptr->nextAttributes);
+ it->d()->it.flags = QV4::ObjectIterator::NoFlags;
+ it->d()->it.next(d_ptr->nextName, &d_ptr->nextIndex, &d_ptr->nextProperty, &d_ptr->nextAttributes);
return *this;
}
void ForEachIteratorObject::markObjects(Managed *that, ExecutionEngine *e)
{
ForEachIteratorObject *o = static_cast<ForEachIteratorObject *>(that);
- o->workArea[0].mark(e);
- o->workArea[1].mark(e);
+ o->d()->workArea[0].mark(e);
+ o->d()->workArea[1].mark(e);
Object::markObjects(that, e);
}
};
struct ForEachIteratorObject: Object {
- V4_OBJECT
- Q_MANAGED_TYPE(ForeachIteratorObject)
- struct Data {
- Data(Value *scratch1, Value *scratch2, const ObjectRef o, uint flags)
- : it(scratch1, scratch2, o, flags) {}
- Data(Scope &scope, const ObjectRef o, uint flags)
- : it (scope, o, flags) {}
+ struct Data : Object::Data {
+ Data(const ObjectRef o, uint flags)
+ : it(workArea, workArea + 1, o, flags) {}
ObjectIterator it;
+ Value workArea[2];
};
- Data data;
+ struct _Data {
+ _Data(const ObjectRef o, uint flags)
+ : it(workArea, workArea + 1, o, flags) {}
+ ObjectIterator it;
+ Value workArea[2];
+ } __data;
+ V4_OBJECT_NEW
+ Q_MANAGED_TYPE(ForeachIteratorObject)
ForEachIteratorObject(ExecutionContext *ctx, const ObjectRef o)
- : Object(ctx->engine), data(workArea, workArea + 1,
- o, ObjectIterator::EnumerableOnly|ObjectIterator::WithProtoChain) {
+ : Object(ctx->engine)
+ , __data(o, ObjectIterator::EnumerableOnly|ObjectIterator::WithProtoChain) {
setVTable(staticVTable());
}
- ReturnedValue nextPropertyName() { return data.it.nextPropertyNameAsString(); }
+ ReturnedValue nextPropertyName() { return d()->it.nextPropertyNameAsString(); }
protected:
static void markObjects(Managed *that, ExecutionEngine *e);
-
- Value workArea[2];
};