diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-05-31 13:39:15 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2013-05-31 15:48:41 +0200 |
commit | 976051c491c9a79e5c34b97a0e3a37350a7c557c (patch) | |
tree | 261c9d9d15674e524ceea25bb7a65813e32431db /src/qml/qml/v8 | |
parent | e14b9dbee1260f799d1d2e175d106dbed79b6c49 (diff) |
Move Variant and QtObject over to new casting scheme
Change-Id: Ie9e5e40b4bea4d4379dc9bdd103852c32d6ae478
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/v8')
-rw-r--r-- | src/qml/qml/v8/qjsvalue.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 8 | ||||
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions_p.h | 1 | ||||
-rw-r--r-- | src/qml/qml/v8/qv8engine.cpp | 12 | ||||
-rw-r--r-- | src/qml/qml/v8/qv8qobjectwrapper.cpp | 2 |
5 files changed, 15 insertions, 10 deletions
diff --git a/src/qml/qml/v8/qjsvalue.cpp b/src/qml/qml/v8/qjsvalue.cpp index 86673b6b25..c2e2f6e37d 100644 --- a/src/qml/qml/v8/qjsvalue.cpp +++ b/src/qml/qml/v8/qjsvalue.cpp @@ -319,7 +319,7 @@ bool QJSValue::isCallable() const bool QJSValue::isVariant() const { Managed *m = d->value.asManaged(); - return m ? m->asVariantObject() : 0; + return m ? m->as<QV4::VariantObject>() : 0; } /*! diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index 734d910d69..95b7aaf502 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -75,6 +75,8 @@ QT_BEGIN_NAMESPACE using namespace QV4; +DEFINE_MANAGED_VTABLE(QtObject); + struct StaticQtMetaObject : public QObject { static const QMetaObject *get() @@ -86,6 +88,8 @@ QV4::QtObject::QtObject(ExecutionEngine *v4, QQmlEngine *qmlEngine) , m_platform(0) , m_application(0) { + vtbl = &static_vtbl; + // Set all the enums from the "Qt" namespace const QMetaObject *qtMetaObject = StaticQtMetaObject::get(); for (int ii = 0; ii < qtMetaObject->enumeratorCount(); ++ii) { @@ -1233,7 +1237,7 @@ Value QtObject::method_get_platform(SimpleCallContext *ctx) Object *o = ctx->thisObject.asObject(); if (!o) ctx->throwTypeError(); - QtObject *qt = o->asQtObject(); + QtObject *qt = o->as<QtObject>(); if (!qt) ctx->throwTypeError(); @@ -1250,7 +1254,7 @@ Value QtObject::method_get_application(SimpleCallContext *ctx) Object *o = ctx->thisObject.asObject(); if (!o) ctx->throwTypeError(); - QtObject *qt = o->asQtObject(); + QtObject *qt = o->as<QtObject>(); if (!qt) ctx->throwTypeError(); diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h index caa5be86da..5b639089ea 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions_p.h +++ b/src/qml/qml/v8/qqmlbuiltinfunctions_p.h @@ -66,6 +66,7 @@ namespace QV4 { struct QtObject : Object { + Q_MANAGED QtObject(ExecutionEngine *v4, QQmlEngine *qmlEngine); static Value method_isQtObject(SimpleCallContext *ctx); diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp index ec56f73845..2b4f4ce05b 100644 --- a/src/qml/qml/v8/qv8engine.cpp +++ b/src/qml/qml/v8/qv8engine.cpp @@ -134,7 +134,7 @@ QVariant QV8Engine::toVariant(const QV4::Value &value, int typeHint) if (value.isEmpty()) return QVariant(); - if (QV4::VariantObject *v = value.asVariantObject()) + if (QV4::VariantObject *v = value.as<QV4::VariantObject>()) return v->data; if (typeHint == QVariant::Bool) @@ -986,9 +986,9 @@ bool QV8Engine::metaTypeFromJS(const QV4::Value &value, int type, void *data) { QByteArray name = QMetaType::typeName(type); if (convertToNativeQObject(value, name, reinterpret_cast<void* *>(data))) return true; - if (value.asVariantObject() && name.endsWith('*')) { + if (value.as<QV4::VariantObject>() && name.endsWith('*')) { int valueType = QMetaType::type(name.left(name.size()-1)); - QVariant &var = value.asVariantObject()->data; + QVariant &var = value.as<QV4::VariantObject>()->data; if (valueType == var.userType()) { // We have T t, T* is requested, so return &t. *reinterpret_cast<void* *>(data) = var.data(); @@ -998,7 +998,7 @@ bool QV8Engine::metaTypeFromJS(const QV4::Value &value, int type, void *data) { QV4::Object *proto = o->prototype; while (proto) { bool canCast = false; - if (QV4::VariantObject *vo = proto->asVariantObject()) { + if (QV4::VariantObject *vo = proto->as<QV4::VariantObject>()) { const QVariant &v = vo->data; canCast = (type == v.userType()) || (valueType && (valueType == v.userType())); } @@ -1068,7 +1068,7 @@ QVariant QV8Engine::variantFromJS(const QV4::Value &value, return d->toQDateTime(); if (QV4::RegExpObject *re = value.asRegExpObject()) return re->toQRegExp(); - if (QV4::VariantObject *v = value.asVariantObject()) + if (QV4::VariantObject *v = value.as<QV4::VariantObject>()) return v->data; if (isQObject(value)) return qVariantFromValue(qtObjectFromJS(value)); @@ -1128,7 +1128,7 @@ QObject *QV8Engine::qtObjectFromJS(const QV4::Value &value) return 0; - if (QV4::VariantObject *v = value.asVariantObject()) { + if (QV4::VariantObject *v = value.as<QV4::VariantObject>()) { QVariant variant = v->data; int type = variant.userType(); if (type == QMetaType::QObjectStar) diff --git a/src/qml/qml/v8/qv8qobjectwrapper.cpp b/src/qml/qml/v8/qv8qobjectwrapper.cpp index b8f13d51a1..4157f8abc6 100644 --- a/src/qml/qml/v8/qv8qobjectwrapper.cpp +++ b/src/qml/qml/v8/qv8qobjectwrapper.cpp @@ -1418,7 +1418,7 @@ static int MatchScore(v8::Handle<v8::Value> actual, int conversionType) QV4::Object *obj = actual->v4Value().asObject(); QV8Engine *engine = obj->engine()->publicEngine->handle(); - if (QV4::VariantObject *v = obj->asVariantObject()) { + if (QV4::VariantObject *v = obj->as<QV4::VariantObject>()) { if (conversionType == qMetaTypeId<QVariant>()) return 0; if (engine->toVariant(actual->v4Value(), -1).userType() == conversionType) |