Remove non-templated qobject module api registration function
authorChris Adams <christopher.adams@nokia.com>
Mon, 14 May 2012 03:01:29 +0000 (13:01 +1000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 12 Jun 2012 13:40:13 +0000 (15:40 +0200)
Previously, both templated and non-templated qobject module api
registration functions were provided as public API.  The non-templated
version is identical to the templated version, except that bindings
which access properties of module apis registered with that function
cannot be optimized with v4.

This commit removes the non-templated version of the function.

Change-Id: Ic417aa241f1172bf6d055bdc7f528d7e9304097b
Reviewed-by: Martin Jones <martin.jones@nokia.com>
src/qml/doc/src/qtqml.qdoc
src/qml/qml/qqml.h
src/qml/qml/qqmlmetatype.cpp
tests/auto/qml/qqmlecmascript/data/moduleapi/qobjectModuleApiLegacy.qml [deleted file]
tests/auto/qml/qqmlecmascript/testtypes.cpp
tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
tests/benchmarks/qml/holistic/testtypes.cpp
tests/benchmarks/qml/holistic/testtypes.h

index 7bd797e..915f54e 100644 (file)
   */
 
 /*!
-   \internal
-   \fn int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMinor, QObject *(*callback)(QQmlEngine *, QJSEngine *))
-   \deprecated
-
-   Any uses of a module API in a binding where that module API was registered with this
-   function instead of the template version will result in suboptimal binding generation.
- */
-
-/*!
    \fn template<typename T> int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMinor, QObject *(*callback)(QQmlEngine *, QJSEngine *))
    \relates QQmlEngine
 
index fedd0e4..c7092a6 100644 (file)
@@ -416,20 +416,6 @@ inline int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMi
     return QQmlPrivate::qmlregister(QQmlPrivate::ModuleApiRegistration, &api);
 }
 
-inline int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMinor,
-                                QObject *(*callback)(QQmlEngine *, QJSEngine *))
-{
-    QQmlPrivate::RegisterModuleApi api = {
-        0,
-
-        uri, versionMajor, versionMinor,
-
-        0, callback, 0 // unknown QObject instance type
-    };
-
-    return QQmlPrivate::qmlregister(QQmlPrivate::ModuleApiRegistration, &api);
-}
-
 template <typename T>
 inline int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMinor,
                                 QObject *(*callback)(QQmlEngine *, QJSEngine *))
index 416caa9..80fb3ed 100644 (file)
@@ -909,9 +909,6 @@ int registerModuleApi(const QQmlPrivate::RegisterModuleApi &api)
     import.qobject = api.qobjectApi;
     import.instanceMetaObject = (api.qobjectApi && api.version >= 1) ? api.instanceMetaObject : 0; // BC with version 0.
 
-    if (import.qobject && !import.instanceMetaObject) // BC - check import.iMO rather than api.iMO.
-        qWarning() << "qmlRegisterModuleApi(): sub-optimal: use the templated version of this function instead!";
-
     int index = data->moduleApiCount++;
 
     QQmlMetaTypeData::ModuleApiList *apiList = data->moduleApis.value(uri);
diff --git a/tests/auto/qml/qqmlecmascript/data/moduleapi/qobjectModuleApiLegacy.qml b/tests/auto/qml/qqmlecmascript/data/moduleapi/qobjectModuleApiLegacy.qml
deleted file mode 100644 (file)
index e282ad6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-import QtQuick 2.0
-
-import Qt.test.legacyModuleApi 1.0 as ModApi // was registered with non-templated function
-
-QtObject {
-    property int legacyModulePropertyTest: ModApi.qobjectTestProperty
-    property int legacyModuleMethodTest
-
-    Component.onCompleted: {
-        legacyModuleMethodTest = ModApi.qobjectTestMethod();
-    }
-}
-
index 8fd1605..f192cbc 100644 (file)
@@ -218,7 +218,6 @@ void registerTypes()
     qmlRegisterModuleApi<testQObjectApi>("Qt.test.qobjectApi",1,3,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, minor version set
     qmlRegisterModuleApi<testQObjectApi>("Qt.test.qobjectApi",2,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, major version set
     qmlRegisterModuleApi<testQObjectApi>("Qt.test.qobjectApiParented",1,0,qobject_api_engine_parent); // register (parented qobject) module API for a uri which doesn't contain elements
-    qmlRegisterModuleApi("Qt.test.legacyModuleApi", 1, 0, qobject_api); // this registration function doesn't provide type information.
 
     qRegisterMetaType<MyQmlObject::MyEnum2>("MyEnum2");
     qRegisterMetaType<Qt::MouseButtons>("Qt::MouseButtons");
index 2db8967..9f4a857 100644 (file)
@@ -3606,17 +3606,6 @@ void tst_qqmlecmascript::moduleApi_data()
             << QVariantList()
             << QStringList()
             << QVariantList();
-
-    QTest::newRow("legacy module api registration")
-            << testFileUrl("moduleapi/qobjectModuleApiLegacy.qml")
-            << QString()
-            << QStringList() // warning doesn't occur in the test, but in registerTypes()
-            << (QStringList() << "legacyModulePropertyTest" << "legacyModuleMethodTest")
-            << (QVariantList() << 20 << 2)
-            << QStringList()
-            << QVariantList()
-            << QStringList()
-            << QVariantList();
 }
 
 void tst_qqmlecmascript::moduleApi()
index 65d3ee8..bf9ff5f 100644 (file)
 **
 ****************************************************************************/
 #include "testtypes.h"
-#include <QWidget>
-#include <QPlainTextEdit>
 #include <QQmlEngine>
-#include <QScriptEngine>
 
-static QScriptValue script_api(QQmlEngine *engine, QScriptEngine *scriptEngine)
+static QJSValue script_api(QQmlEngine *engine, QJSEngine *scriptEngine)
 {
     Q_UNUSED(engine)
     Q_UNUSED(scriptEngine)
 
     static int testProperty = 13;
-    QScriptValue v = scriptEngine->newObject();
+    QJSValue v = scriptEngine->newObject();
     v.setProperty("scriptTestProperty", testProperty++);
     return v;
 }
 
-static QObject *qobject_api(QQmlEngine *engine, QScriptEngine *scriptEngine)
+static QObject *qobject_api(QQmlEngine *engine, QJSEngine *scriptEngine)
 {
     Q_UNUSED(engine)
     Q_UNUSED(scriptEngine)
 
-    testQObjectApi *o = new testQObjectApi();
+    testQObjectApi *o = new testQObjectApi;
     o->setQObjectTestProperty(20);
     return o;
 }
 
-static QObject *qobject_api_engine_parent(QQmlEngine *engine, QScriptEngine *scriptEngine)
+static QObject *qobject_api_engine_parent(QQmlEngine *engine, QJSEngine *scriptEngine)
 {
     Q_UNUSED(scriptEngine)
 
@@ -80,19 +77,18 @@ void registerTypes()
     qmlRegisterType<MyQmlObject>("Qt.test", 1,0, "MyQmlObjectAlias");
     qmlRegisterType<MyQmlObject>("Qt.test", 1,0, "MyQmlObject");
 
-    qmlRegisterType<QPlainTextEdit>("Qt.test",1,0,"QPlainTextEdit");
     qRegisterMetaType<MyQmlObject::MyType>("MyQmlObject::MyType");
 
     qmlRegisterType<ScarceResourceProvider>("Qt.test", 1,0, "MyScarceResourceProvider");
     qmlRegisterType<ArbitraryVariantProvider>("Qt.test", 1,0, "MyArbitraryVariantProvider");
 
     qmlRegisterModuleApi("Qt.test",1,0,script_api);             // register (script) module API for an existing uri which contains elements
-    qmlRegisterModuleApi("Qt.test",1,0,qobject_api);            // register (qobject) for an existing uri for which another module API was previously regd.  Should replace!
+    qmlRegisterModuleApi<testQObjectApi>("Qt.test",1,0,qobject_api);            // register (qobject) for an existing uri for which another module API was previously regd.  Should replace!
     qmlRegisterModuleApi("Qt.test.scriptApi",1,0,script_api);   // register (script) module API for a uri which doesn't contain elements
-    qmlRegisterModuleApi("Qt.test.qobjectApi",1,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements
-    qmlRegisterModuleApi("Qt.test.qobjectApi",1,3,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, minor version set
-    qmlRegisterModuleApi("Qt.test.qobjectApi",2,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, major version set
-    qmlRegisterModuleApi("Qt.test.qobjectApiParented",1,0,qobject_api_engine_parent); // register (parented qobject) module API for a uri which doesn't contain elements
+    qmlRegisterModuleApi<testQObjectApi>("Qt.test.qobjectApi",1,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements
+    qmlRegisterModuleApi<testQObjectApi>("Qt.test.qobjectApi",1,3,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, minor version set
+    qmlRegisterModuleApi<testQObjectApi>("Qt.test.qobjectApi",2,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, major version set
+    qmlRegisterModuleApi<testQObjectApi>("Qt.test.qobjectApiParented",1,0,qobject_api_engine_parent); // register (parented qobject) module API for a uri which doesn't contain elements
 }
 
 //#include "testtypes.moc"
index 66d755d..85885cf 100644 (file)
@@ -53,7 +53,7 @@
 #include <QtGui/qpixmap.h>
 #include <QtGui/qvector3d.h>
 #include <QtCore/qdatetime.h>
-#include <QtScript/qjsvalue.h>
+#include <QtQml/qjsvalue.h>
 #include <QtQml/qqmlscriptstring.h>
 #include <QtQml/qqmlcomponent.h>