aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/v8
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-05-31 13:39:15 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2013-05-31 15:48:41 +0200
commit976051c491c9a79e5c34b97a0e3a37350a7c557c (patch)
tree261c9d9d15674e524ceea25bb7a65813e32431db /src/qml/qml/v8
parente14b9dbee1260f799d1d2e175d106dbed79b6c49 (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.cpp2
-rw-r--r--src/qml/qml/v8/qqmlbuiltinfunctions.cpp8
-rw-r--r--src/qml/qml/v8/qqmlbuiltinfunctions_p.h1
-rw-r--r--src/qml/qml/v8/qv8engine.cpp12
-rw-r--r--src/qml/qml/v8/qv8qobjectwrapper.cpp2
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)