// automatically released by the engine until no other references to it exist.
if (QV4::VariantObject *v = o->as<QV4::VariantObject>()) {
v->addVmePropertyReference();
- } else if (QV4::QObjectWrapper *wrapper = o->asQObjectWrapper()) {
+ } else if (QV4::QObjectWrapper *wrapper = o->as<QV4::QObjectWrapper>()) {
// We need to track this QObject to signal its deletion
valueObject = wrapper->object;
Type_MathObject,
Type_ForeachIteratorObject,
Type_RegExp,
- Type_QObject,
Type_QmlSequence
};
ErrorObject *asErrorObject() { return type == Type_ErrorObject ? reinterpret_cast<ErrorObject *>(this) : 0; }
ArgumentsObject *asArgumentsObject() { return type == Type_ArgumentsObject ? reinterpret_cast<ArgumentsObject *>(this) : 0; }
JSONObject *asJSONObject() { return type == Type_JSONObject ? reinterpret_cast<JSONObject *>(this) : 0; }
- QObjectWrapper *asQObjectWrapper() { return type == Type_QObject ? reinterpret_cast<QObjectWrapper*>(this) : 0; }
bool isListType() const { return type == Type_QmlSequence; }
for (PersistentValuePrivate *weak = m_weakValues; weak; weak = weak->next) {
if (!weak->refcount)
continue;
- QObjectWrapper *qobjectWrapper = weak->value.asQObjectWrapper();
+ QObjectWrapper *qobjectWrapper = weak->value.as<QObjectWrapper>();
if (!qobjectWrapper)
continue;
QObject *qobject = qobjectWrapper->object;
{
PersistentValuePrivate *weak = m_weakValues;
while (weak) {
- if (QObjectWrapper *qobjectWrapper = weak->value.asQObjectWrapper()) {
+ if (QObjectWrapper *qobjectWrapper = weak->value.as<QObjectWrapper>()) {
weak->ref();
qobjectWrapper->deleteQObject(/*deleteInstantly*/ true);
PersistentValuePrivate *n = weak->next;
DateObject *asDateObject() const;
ArrayObject *asArrayObject() const;
ErrorObject *asErrorObject() const;
- QObjectWrapper *asQObjectWrapper() const;
template<typename T>
T *as() const { Managed *m = asObject(); return m ? m->as<T>() : 0; }
return isObject() ? managed()->asErrorObject() : 0;
}
-inline QObjectWrapper *Value::asQObjectWrapper() const
-{
- return isObject() ? managed()->asQObjectWrapper() : 0;
-}
-
// ###
inline Value Managed::construct(ExecutionContext *context, Value *args, int argc) {
return vtbl->construct(this, context, args, argc);
if (ctx->argumentCount == 0)
return QV4::Value::fromBoolean(false);
- return QV4::Value::fromBoolean(ctx->arguments[0].asQObjectWrapper() != 0);
+ return QV4::Value::fromBoolean(ctx->arguments[0].as<QV4::QObjectWrapper>() != 0);
}
/*!
} else if (typeHint == QMetaType::QJsonObject
&& !value.asArrayObject() && !value.asFunctionObject()) {
return QVariant::fromValue(jsonObjectFromJS(value));
- } else if (QV4::QObjectWrapper *wrapper = object->asQObjectWrapper()) {
+ } else if (QV4::QObjectWrapper *wrapper = object->as<QV4::QObjectWrapper>()) {
return qVariantFromValue<QObject *>(wrapper->object);
} else if (QV4::QmlContextWrapper *wrapper = object->as<QV4::QmlContextWrapper>()) {
return QVariant();
if (type == QMetaType::QObjectStar)
return *reinterpret_cast<QObject* const *>(variant.constData());
}
- QV4::QObjectWrapper *wrapper = value.asQObjectWrapper();
+ QV4::QObjectWrapper *wrapper = value.as<QV4::QObjectWrapper>();
if (!wrapper)
return 0;
return wrapper->object;
, object(object)
{
this->v8Engine = QV8Engine::get(engine->publicEngine);
- type = Type_QObject;
vtbl = &static_vtbl;
m_destroy = engine->newIdentifier(QStringLiteral("destroy"));
bool QV8QObjectWrapper::isQObject(v8::Handle<v8::Object> obj)
{
- return obj->v4Value().asQObjectWrapper() != 0;
+ return obj->v4Value().as<QObjectWrapper>() != 0;
}
QObject *QV8QObjectWrapper::toQObject(v8::Handle<v8::Object> obj)
{
- QV4::QObjectWrapper *wrapper = obj->v4Value().asQObjectWrapper();
+ QV4::QObjectWrapper *wrapper = obj->v4Value().as<QObjectWrapper>();
return wrapper?wrapper->object:0;
}
static void FastValueSetter(v8::Handle<v8::String>, v8::Handle<v8::Value> value,
const v8::AccessorInfo& info)
{
- QV4::QObjectWrapper *wrapper = info.This()->v4Value().asQObjectWrapper();
+ QV4::QObjectWrapper *wrapper = info.This()->v4Value().as<QObjectWrapper>();
if (QQmlData::wasDeleted(wrapper->object))
return;
static void FastValueSetterReadOnly(v8::Handle<v8::String> property, v8::Handle<v8::Value>,
const v8::AccessorInfo& info)
{
- QV4::QObjectWrapper *wrapper = info.This()->v4Value().asQObjectWrapper();
+ QV4::QObjectWrapper *wrapper = info.This()->v4Value().as<QObjectWrapper>();
if (QQmlData::wasDeleted(wrapper->object))
return;
return 10;
}
- if (obj->asQObjectWrapper()) {
+ if (obj->as<QObjectWrapper>()) {
switch (conversionType) {
case QMetaType::QObjectStar:
return 0;
struct Q_QML_EXPORT QObjectWrapper : public QV4::Object
{
+ Q_MANAGED
+
QObjectWrapper(ExecutionEngine *v8Engine, QObject *object);
~QObjectWrapper();
{
static_cast<QObjectWrapper *>(that)->~QObjectWrapper();
}
-
- static const QV4::ManagedVTable static_vtbl;
};
struct QObjectMethod : public QV4::FunctionObject
QDateTime dt = propertyValue->v4Value().asDateObject()->toQDateTime();
roleIndex = e->setDateTimeProperty(r, dt);
} else if (propertyValue->IsObject()) {
- if (QV4::QObjectWrapper *wrapper = propertyValue->v4Value().asQObjectWrapper()) {
+ if (QV4::QObjectWrapper *wrapper = propertyValue->v4Value().as<QV4::QObjectWrapper>()) {
QObject *o = wrapper->object;
const ListLayout::Role &role = m_layout->getRoleOrCreate(propertyName, ListLayout::Role::QObject);
if (role.type == ListLayout::Role::QObject)
e->setDateTimePropertyFast(r, dt);
}
} else if (propertyValue->IsObject()) {
- if (QV4::QObjectWrapper *wrapper = propertyValue->v4Value().asQObjectWrapper()) {
+ if (QV4::QObjectWrapper *wrapper = propertyValue->v4Value().as<QV4::QObjectWrapper>()) {
QObject *o = wrapper->object;
const ListLayout::Role &r = m_layout->getRoleOrCreate(propertyName, ListLayout::Role::QObject);
if (r.type == ListLayout::Role::QObject)
QDateTime dt = d->v4Value().asDateObject()->toQDateTime();;
roleIndex = setDateTimeProperty(role, dt);
} else if (d->IsObject()) {
- QV4::QObjectWrapper *wrapper = d->v4Value().asQObjectWrapper();
+ QV4::QObjectWrapper *wrapper = d->v4Value().as<QV4::QObjectWrapper>();
if (role.type == ListLayout::Role::QObject && wrapper) {
QObject *o = wrapper->object;
roleIndex = setQObjectProperty(role, o);
{
QQmlData *ddata = QQmlData::get(this);
assert(ddata);
- QV4::QObjectWrapper *thisObject = ddata->v8object.value().asQObjectWrapper();
+ QV4::QObjectWrapper *thisObject = ddata->v8object.value().as<QV4::QObjectWrapper>();
assert(thisObject);
QQmlData *otherDData = QQmlData::get(other);