http://macieira.org/~thiago/qt-5.3/QtQml.diff
diff --git a/src/qml/qml/qqml.h b/src/qml/qml/qqml.h
index b6c6fe8..721f2cc 100644
--- a/src/qml/qml/qqml.h
+++ b/src/qml/qml/qqml.h
@@ -91,13 +91,13 @@ class QQmlPropertyValueInterceptor;
     const char *className = T::staticMetaObject.className(); \
     const int nameLen = int(strlen(className)); \
     QVarLengthArray<char,48> pointerName(nameLen+2); \
-    memcpy(pointerName.data(), className, nameLen); \
+    memcpy(pointerName.data(), className, size_t(nameLen)); \
     pointerName[nameLen] = '*'; \
     pointerName[nameLen+1] = '\0'; \
     const int listLen = int(strlen("QQmlListProperty<")); \
     QVarLengthArray<char,64> listName(listLen + nameLen + 2); \
-    memcpy(listName.data(), "QQmlListProperty<", listLen); \
-    memcpy(listName.data()+listLen, className, nameLen); \
+    memcpy(listName.data(), "QQmlListProperty<", size_t(listLen)); \
+    memcpy(listName.data()+listLen, className, size_t(nameLen)); \
     listName[listLen+nameLen] = '>'; \
     listName[listLen+nameLen+1] = '\0';
 
@@ -419,7 +419,9 @@ class QQmlEngine;
 class QJSValue;
 class QJSEngine;
 
+#ifndef Q_QDOC
 namespace QtQml {
+#endif
     // declared in namespace to avoid symbol conflicts with QtDeclarative
     Q_QML_EXPORT void qmlExecuteDeferred(QObject *);
     Q_QML_EXPORT QQmlContext *qmlContext(const QObject *);
@@ -427,7 +429,9 @@ namespace QtQml {
     Q_QML_EXPORT QObject *qmlAttachedPropertiesObjectById(int, const QObject *, bool create = true);
     Q_QML_EXPORT QObject *qmlAttachedPropertiesObject(int *, const QObject *,
                                                       const QMetaObject *, bool create);
+#ifndef Q_QDOC
 }
+#endif
 
 #ifdef Q_CC_CLANG
 #pragma clang diagnostic push
@@ -467,7 +471,7 @@ inline int qmlRegisterSingletonType(const char *uri, int versionMajor, int versi
     return QQmlPrivate::qmlregister(QQmlPrivate::SingletonRegistration, &api);
 }
 
-static const int CurrentSingletonTypeRegistrationVersion = 2;
+enum { QmlCurrentSingletonTypeRegistrationVersion = 2 };
 template <typename T>
 inline int qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName,
                                 QObject *(*callback)(QQmlEngine *, QJSEngine *))
@@ -475,7 +479,7 @@ inline int qmlRegisterSingletonType(const char *uri, int versionMajor, int versi
     QML_GETTYPENAMES
 
     QQmlPrivate::RegisterSingletonType api = {
-        CurrentSingletonTypeRegistrationVersion,
+        QmlCurrentSingletonTypeRegistrationVersion,
 
         uri, versionMajor, versionMinor, typeName,
 
diff --git a/src/qml/qml/qqmlcomponent.h b/src/qml/qml/qqmlcomponent.h
index fe376d0..9be1990 100644
--- a/src/qml/qml/qqmlcomponent.h
+++ b/src/qml/qml/qqmlcomponent.h
@@ -127,9 +127,8 @@ private:
     QQmlComponent(QQmlEngine *, QQmlCompiledData *, int, QObject *parent);
 
     Q_DISABLE_COPY(QQmlComponent)
-    friend class QQmlVME;
     friend class QQmlTypeData;
-    friend class QmlObjectCreator;
+    friend class QQmlObjectCreator;
 };
 
 QT_END_NAMESPACE
diff --git a/src/qml/qml/qqmlcontext.h b/src/qml/qml/qqmlcontext.h
index e191807..828ae8c 100644
--- a/src/qml/qml/qqmlcontext.h
+++ b/src/qml/qml/qqmlcontext.h
@@ -88,7 +88,6 @@ public:
     QUrl baseUrl() const;
 
 private:
-    friend class QQmlVME;
     friend class QQmlEngine;
     friend class QQmlEnginePrivate;
     friend class QQmlExpression;
diff --git a/src/qml/qml/qqmlexpression.h b/src/qml/qml/qqmlexpression.h
index b702a37..185b954 100644
--- a/src/qml/qml/qqmlexpression.h
+++ b/src/qml/qml/qqmlexpression.h
@@ -98,7 +98,6 @@ private:
     Q_DECLARE_PRIVATE(QQmlExpression)
     friend class QQmlDebugger;
     friend class QQmlContext;
-    friend class QQmlVME;
 };
 
 QT_END_NAMESPACE
diff --git a/src/qml/qml/qqmlparserstatus.h b/src/qml/qml/qqmlparserstatus.h
index d3447e7..92b320e 100644
--- a/src/qml/qml/qqmlparserstatus.h
+++ b/src/qml/qml/qqmlparserstatus.h
@@ -58,10 +58,10 @@ public:
     virtual void componentComplete()=0;
 
 private:
-    friend class QQmlVME;
     friend class QQmlComponent;
     friend class QQmlComponentPrivate;
     friend class QQmlEnginePrivate;
+    friend class QQmlObjectCreator;
     QQmlParserStatus **d;
 };
 
diff --git a/src/qml/qml/qqmlprivate.h b/src/qml/qml/qqmlprivate.h
index 15306cb..5460c99 100644
--- a/src/qml/qml/qqmlprivate.h
+++ b/src/qml/qml/qqmlprivate.h
@@ -61,6 +61,22 @@
 
 QT_BEGIN_NAMESPACE
 
+namespace QQmlPrivate {
+struct CachedQmlUnit;
+}
+
+namespace QV4 {
+struct ExecutionEngine;
+namespace CompiledData {
+struct QmlUnit;
+struct CompilationUnit;
+}
+typedef CompiledData::CompilationUnit *(*CompilationUnitFactoryFunction)();
+}
+namespace QmlIR {
+struct Document;
+typedef void (*IRLoaderFunction)(Document *, const QQmlPrivate::CachedQmlUnit *);
+}
 
 typedef QObject *(*QQmlAttachedPropertiesFunc)(QObject *);
 
@@ -268,13 +284,26 @@ namespace QQmlPrivate
         const char *typeName;
     };
 
+    struct CachedQmlUnit {
+        const QV4::CompiledData::QmlUnit *qmlData;
+        QV4::CompilationUnitFactoryFunction createCompilationUnit;
+        QmlIR::IRLoaderFunction loadIR;
+    };
+
+    typedef const CachedQmlUnit *(*QmlUnitCacheLookupFunction)(const QUrl &url);
+    struct RegisterQmlUnitCacheHook {
+        int version;
+        QmlUnitCacheLookupFunction lookupCachedQmlUnit;
+    };
+
     enum RegistrationType {
         TypeRegistration       = 0,
         InterfaceRegistration  = 1,
         AutoParentRegistration = 2,
         SingletonRegistration  = 3,
         CompositeRegistration  = 4,
-        CompositeSingletonRegistration = 5
+        CompositeSingletonRegistration = 5,
+        QmlUnitCacheHookRegistration = 6
     };
 
     int Q_QML_EXPORT qmlregister(RegistrationType, void *);
diff --git a/src/qml/qml/qqmlscriptstring.h b/src/qml/qml/qqmlscriptstring.h
index 5421ef9..2c10df6 100644
--- a/src/qml/qml/qqmlscriptstring.h
+++ b/src/qml/qml/qqmlscriptstring.h
@@ -53,6 +53,7 @@ QT_BEGIN_NAMESPACE
 class QObject;
 class QQmlContext;
 class QQmlScriptStringPrivate;
+class QQmlObjectCreator;
 class Q_QML_EXPORT QQmlScriptString
 {
 public:
@@ -74,8 +75,8 @@ private:
     QQmlScriptString(const QString &script, QQmlContext *context, QObject *scope);
     QSharedDataPointer<QQmlScriptStringPrivate> d;
 
+    friend class QQmlObjectCreator;
     friend class QQmlScriptStringPrivate;
-    friend class QQmlVME;
     friend class QQmlExpression;
     friend class QQmlBinding;
 };
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to