Make the remaining variant conversion methods static
authorLars Knoll <lars.knoll@theqtcompany.com>
Thu, 1 Jan 2015 13:25:08 +0000 (14:25 +0100)
committerLars Knoll <lars.knoll@digia.com>
Fri, 9 Jan 2015 09:27:49 +0000 (10:27 +0100)
And make most private as well

Change-Id: If215aba4985a5150aa5a901f2e50e31bf0afa709
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/qml/jsapi/qjsengine.cpp
src/qml/qml/v8/qv8engine.cpp
src/qml/qml/v8/qv8engine_p.h

index b0676c9..49f1dab 100644 (file)
@@ -410,7 +410,7 @@ QJSValue QJSEngine::create(int type, const void *ptr)
 {
     Q_D(QJSEngine);
     QV4::Scope scope(d->m_v4Engine);
-    QV4::ScopedValue v(scope, d->metaTypeToJS(type, ptr));
+    QV4::ScopedValue v(scope, QV8Engine::metaTypeToJS(scope.engine, type, ptr));
     return new QJSValuePrivate(d->m_v4Engine, v);
 }
 
index d335606..2234d3d 100644 (file)
@@ -588,14 +588,14 @@ QV4::ReturnedValue QV8Engine::global()
 // The result is a new Array object with length equal to the length
 // of the QVariantList, and the elements being the QVariantList's
 // elements converted to JS, recursively.
-QV4::ReturnedValue QV8Engine::variantListToJS(const QVariantList &lst)
+QV4::ReturnedValue QV8Engine::variantListToJS(QV4::ExecutionEngine *v4, const QVariantList &lst)
 {
-    QV4::Scope scope(m_v4Engine);
-    QV4::ScopedArrayObject a(scope, m_v4Engine->newArrayObject());
+    QV4::Scope scope(v4);
+    QV4::ScopedArrayObject a(scope, v4->newArrayObject());
     a->arrayReserve(lst.size());
     QV4::ScopedValue v(scope);
     for (int i = 0; i < lst.size(); i++)
-        a->arrayPut(i, (v = variantToJS(lst.at(i))));
+        a->arrayPut(i, (v = variantToJS(v4, lst.at(i))));
     a->setArrayLengthUnchecked(lst.size());
     return a.asReturnedValue();
 }
@@ -604,16 +604,16 @@ QV4::ReturnedValue QV8Engine::variantListToJS(const QVariantList &lst)
 // The result is a new Object object with property names being
 // the keys of the QVariantMap, and values being the values of
 // the QVariantMap converted to JS, recursively.
-QV4::ReturnedValue QV8Engine::variantMapToJS(const QVariantMap &vmap)
+QV4::ReturnedValue QV8Engine::variantMapToJS(QV4::ExecutionEngine *v4, const QVariantMap &vmap)
 {
-    QV4::Scope scope(m_v4Engine);
-    QV4::ScopedObject o(scope, m_v4Engine->newObject());
+    QV4::Scope scope(v4);
+    QV4::ScopedObject o(scope, v4->newObject());
     QVariantMap::const_iterator it;
     QV4::ScopedString s(scope);
     QV4::ScopedValue v(scope);
     for (it = vmap.constBegin(); it != vmap.constEnd(); ++it) {
-        s = m_v4Engine->newIdentifier(it.key());
-        v = variantToJS(it.value());
+        s = v4->newIdentifier(it.key());
+        v = variantToJS(v4, it.value());
         uint idx = s->asArrayIndex();
         if (idx < UINT_MAX)
             o->arraySet(idx, v);
@@ -625,7 +625,7 @@ QV4::ReturnedValue QV8Engine::variantMapToJS(const QVariantMap &vmap)
 
 // Converts the meta-type defined by the given type and data to JS.
 // Returns the value if conversion succeeded, an empty handle otherwise.
-QV4::ReturnedValue QV8Engine::metaTypeToJS(int type, const void *data)
+QV4::ReturnedValue QV8Engine::metaTypeToJS(QV4::ExecutionEngine *v4, int type, const void *data)
 {
     Q_ASSERT(data != 0);
 
@@ -656,7 +656,7 @@ QV4::ReturnedValue QV8Engine::metaTypeToJS(int type, const void *data)
     case QMetaType::Double:
         return QV4::Encode(*reinterpret_cast<const double*>(data));
     case QMetaType::QString:
-        return m_v4Engine->currentContext()->engine->newString(*reinterpret_cast<const QString*>(data))->asReturnedValue();
+        return v4->currentContext()->engine->newString(*reinterpret_cast<const QString*>(data))->asReturnedValue();
     case QMetaType::Float:
         return QV4::Encode(*reinterpret_cast<const float*>(data));
     case QMetaType::Short:
@@ -670,30 +670,30 @@ QV4::ReturnedValue QV8Engine::metaTypeToJS(int type, const void *data)
     case QMetaType::QChar:
         return QV4::Encode((int)(*reinterpret_cast<const QChar*>(data)).unicode());
     case QMetaType::QStringList:
-        return QV4::Encode(m_v4Engine->newArrayObject(*reinterpret_cast<const QStringList *>(data)));
+        return QV4::Encode(v4->newArrayObject(*reinterpret_cast<const QStringList *>(data)));
     case QMetaType::QVariantList:
-        return variantListToJS(*reinterpret_cast<const QVariantList *>(data));
+        return variantListToJS(v4, *reinterpret_cast<const QVariantList *>(data));
     case QMetaType::QVariantMap:
-        return variantMapToJS(*reinterpret_cast<const QVariantMap *>(data));
+        return variantMapToJS(v4, *reinterpret_cast<const QVariantMap *>(data));
     case QMetaType::QDateTime:
-        return QV4::Encode(m_v4Engine->newDateObject(*reinterpret_cast<const QDateTime *>(data)));
+        return QV4::Encode(v4->newDateObject(*reinterpret_cast<const QDateTime *>(data)));
     case QMetaType::QDate:
-        return QV4::Encode(m_v4Engine->newDateObject(QDateTime(*reinterpret_cast<const QDate *>(data))));
+        return QV4::Encode(v4->newDateObject(QDateTime(*reinterpret_cast<const QDate *>(data))));
     case QMetaType::QRegExp:
-        return QV4::Encode(m_v4Engine->newRegExpObject(*reinterpret_cast<const QRegExp *>(data)));
+        return QV4::Encode(v4->newRegExpObject(*reinterpret_cast<const QRegExp *>(data)));
     case QMetaType::QObjectStar:
-        return QV4::QObjectWrapper::wrap(m_v4Engine, *reinterpret_cast<QObject* const *>(data));
+        return QV4::QObjectWrapper::wrap(v4, *reinterpret_cast<QObject* const *>(data));
     case QMetaType::QVariant:
-        return variantToJS(*reinterpret_cast<const QVariant*>(data));
+        return variantToJS(v4, *reinterpret_cast<const QVariant*>(data));
     case QMetaType::QJsonValue:
-        return QV4::JsonObject::fromJsonValue(m_v4Engine, *reinterpret_cast<const QJsonValue *>(data));
+        return QV4::JsonObject::fromJsonValue(v4, *reinterpret_cast<const QJsonValue *>(data));
     case QMetaType::QJsonObject:
-        return QV4::JsonObject::fromJsonObject(m_v4Engine, *reinterpret_cast<const QJsonObject *>(data));
+        return QV4::JsonObject::fromJsonObject(v4, *reinterpret_cast<const QJsonObject *>(data));
     case QMetaType::QJsonArray:
-        return QV4::JsonObject::fromJsonArray(m_v4Engine, *reinterpret_cast<const QJsonArray *>(data));
+        return QV4::JsonObject::fromJsonArray(v4, *reinterpret_cast<const QJsonArray *>(data));
     default:
         if (type == qMetaTypeId<QJSValue>()) {
-            return QJSValuePrivate::get(*reinterpret_cast<const QJSValue*>(data))->getValue(m_v4Engine);
+            return QJSValuePrivate::get(*reinterpret_cast<const QJSValue*>(data))->getValue(v4);
         } else {
             QByteArray typeName = QMetaType::typeName(type);
             if (typeName.endsWith('*') && !*reinterpret_cast<void* const *>(data)) {
@@ -914,9 +914,9 @@ bool QV8Engine::metaTypeFromJS(QV4::ExecutionEngine *engine, const QV4::ValueRef
 }
 
 // Converts a QVariant to JS.
-QV4::ReturnedValue QV8Engine::variantToJS(const QVariant &value)
+QV4::ReturnedValue QV8Engine::variantToJS(QV4::ExecutionEngine *v4, const QVariant &value)
 {
-    return metaTypeToJS(value.userType(), value.constData());
+    return metaTypeToJS(v4, value.userType(), value.constData());
 }
 
 bool QV8Engine::convertToNativeQObject(QV4::ExecutionEngine *e, const QV4::ValueRef value, const QByteArray &targetType, void **result)
index 329f491..f8e8624 100644 (file)
@@ -196,13 +196,6 @@ public:
 
     void freezeObject(const QV4::ValueRef value);
 
-    static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::ValueRef value, int typeHint, bool createJSValueForObjects = true, V8ObjectSet *visitedObjects = 0);
-    static QVariant objectToVariant(QV4::ExecutionEngine *e, QV4::Object *o, V8ObjectSet *visitedObjects = 0);
-    static QV4::ReturnedValue fromVariant(QV4::ExecutionEngine *e, const QVariant &);
-
-    static QVariantMap variantMapFromJS(QV4::Object *o)
-    { return objectToVariant(o->engine(), o).toMap(); }
-
     // Return the network access manager for this engine.  By default this returns the network
     // access manager of the QQmlEngine.  It is overridden in the case of a threaded v8
     // instance (like in WorkerScript).
@@ -217,17 +210,25 @@ public:
     inline Deletable *extensionData(int) const;
     void setExtensionData(int, Deletable *);
 
-    QV4::ReturnedValue variantListToJS(const QVariantList &lst);
-    QV4::ReturnedValue variantMapToJS(const QVariantMap &vmap);
-    QV4::ReturnedValue variantToJS(const QVariant &value);
+    static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::ValueRef value, int typeHint, bool createJSValueForObjects = true, V8ObjectSet *visitedObjects = 0);
+    static QV4::ReturnedValue fromVariant(QV4::ExecutionEngine *e, const QVariant &);
+
+    static QVariantMap variantMapFromJS(QV4::Object *o)
+    { return objectToVariant(o->engine(), o).toMap(); }
 
-    QV4::ReturnedValue metaTypeToJS(int type, const void *data);
     static bool metaTypeFromJS(QV4::ExecutionEngine *e, const QV4::ValueRef value, int type, void *data);
 
+private:
+    static QVariant objectToVariant(QV4::ExecutionEngine *e, QV4::Object *o, V8ObjectSet *visitedObjects = 0);
     static bool convertToNativeQObject(QV4::ExecutionEngine *e, const QV4::ValueRef value,
                                 const QByteArray &targetType,
                                 void **result);
+    static QV4::ReturnedValue variantListToJS(QV4::ExecutionEngine *v4, const QVariantList &lst);
+    static QV4::ReturnedValue variantMapToJS(QV4::ExecutionEngine *v4, const QVariantMap &vmap);
+    static QV4::ReturnedValue metaTypeToJS(QV4::ExecutionEngine *v4, int type, const void *data);
+    static QV4::ReturnedValue variantToJS(QV4::ExecutionEngine *v4, const QVariant &value);
 
+public:
     // used for console.time(), console.timeEnd()
     void startTimer(const QString &timerName);
     qint64 stopTimer(const QString &timerName, bool *wasRunning);