Change some APIs in qv8variantwrapper over to be v4 based
authorLars Knoll <lars.knoll@digia.com>
Mon, 13 May 2013 16:39:57 +0000 (18:39 +0200)
committerSimon Hausmann <simon.hausmann@digia.com>
Fri, 17 May 2013 21:50:59 +0000 (23:50 +0200)
Change-Id: Idfba6a92bc23dbb8fe14d67ed4a4be901dc0e10a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/qml/qml/v8/qv8engine.cpp
src/qml/qml/v8/qv8variantwrapper.cpp
src/qml/qml/v8/qv8variantwrapper_p.h

index 88e9adf..1989541 100644 (file)
@@ -414,7 +414,7 @@ QV4::Value QV8Engine::fromVariant(const QVariant &variant)
     //    + QObjectList
     //    + QList<int>
 
-    return m_variantWrapper.newVariant(variant)->v4Value();
+    return m_variantWrapper.newVariant(variant);
 }
 
 // A handle scope and context must be entered
@@ -1053,7 +1053,7 @@ QV4::Value QV8Engine::metaTypeToJS(int type, const void *data)
                 return QV4::Value::nullValue();
             } else {
                 // Fall back to wrapping in a QVariant.
-                result = variantWrapper()->newVariant(QVariant(type, data))->v4Value();
+                result = variantWrapper()->newVariant(QVariant(type, data));
             }
         }
     }
index 10170ab..36ee8ac 100644 (file)
@@ -129,7 +129,7 @@ void QV8VariantWrapper::destroy()
 {
 }
 
-v8::Handle<v8::Object> QV8VariantWrapper::newVariant(const QVariant &value)
+QV4::Value QV8VariantWrapper::newVariant(const QVariant &value)
 {
     bool scarceResource = value.type() == QVariant::Pixmap ||
                           value.type() == QVariant::Image;
@@ -149,18 +149,21 @@ v8::Handle<v8::Object> QV8VariantWrapper::newVariant(const QVariant &value)
     }
 
     rv->SetExternalResource(r);
-    return rv;
+    return rv->v4Value();
 }
 
-bool QV8VariantWrapper::isVariant(v8::Handle<v8::Value> value)
+bool QV8VariantWrapper::isVariant(const QV4::Value &v)
 {
-    return value->IsObject() && v8_resource_cast<QV8VariantResource>(value->ToObject());
+    if (!v.isObject())
+        return false;
+    v8::Handle<v8::Object> vv(v);
+    return v8_resource_cast<QV8VariantResource>(vv);
 }
 
-QVariant QV8VariantWrapper::toVariant(v8::Handle<v8::Object> obj)
+QVariant QV8VariantWrapper::toVariant(const QV4::Value &v)
 {
-    QV8VariantResource *r =  v8_resource_cast<QV8VariantResource>(obj);
-    return r?r->data:QVariant();
+    QV8VariantResource *r =  v8_resource_cast<QV8VariantResource>(v);
+    return r ? r->data : QVariant();
 }
 
 QVariant QV8VariantWrapper::toVariant(QV8ObjectResource *r)
@@ -171,7 +174,7 @@ QVariant QV8VariantWrapper::toVariant(QV8ObjectResource *r)
 
 QVariant &QV8VariantWrapper::variantValue(v8::Handle<v8::Value> value)
 {
-    Q_ASSERT(isVariant(value));
+    Q_ASSERT(isVariant(value->v4Value()));
     QV8VariantResource *r =  v8_resource_cast<QV8VariantResource>(value->ToObject());
     return static_cast<QV8VariantResource *>(r)->data;
 }
index b1b515e..5f047c4 100644 (file)
@@ -72,9 +72,9 @@ public:
     void init(QV8Engine *);
     void destroy();
 
-    v8::Handle<v8::Object> newVariant(const QVariant &);
-    static bool isVariant(v8::Handle<v8::Value>);
-    static QVariant toVariant(v8::Handle<v8::Object>);
+    QV4::Value newVariant(const QVariant &);
+    static bool isVariant(const QV4::Value &v);
+    static QVariant toVariant(const QV4::Value &v);
     static QVariant toVariant(QV8ObjectResource *);
     QVariant &variantValue(v8::Handle<v8::Value>);