aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlcompiler/qqmljsscope_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmlcompiler/qqmljsscope_p.h')
-rw-r--r--src/qmlcompiler/qqmljsscope_p.h41
1 files changed, 36 insertions, 5 deletions
diff --git a/src/qmlcompiler/qqmljsscope_p.h b/src/qmlcompiler/qqmljsscope_p.h
index 4cf1d4cd6c..df7aad840d 100644
--- a/src/qmlcompiler/qqmljsscope_p.h
+++ b/src/qmlcompiler/qqmljsscope_p.h
@@ -40,6 +40,7 @@
// We mean it.
#include "qqmljsmetatypes_p.h"
+#include "qdeferredpointer_p.h"
#include <QtQml/private/qqmljssourcelocation_p.h>
@@ -52,15 +53,45 @@
QT_BEGIN_NAMESPACE
+class QQmlJSImporter;
+class QQmlJSScope;
+
+template<>
+class QDeferredFactory<QQmlJSScope>
+{
+public:
+ QDeferredFactory(QQmlJSImporter *importer, const QString &filePath) :
+ m_filePath(filePath), m_importer(importer)
+ {}
+
+ QQmlJSScope create() const;
+
+ bool isValid() const
+ {
+ return !m_filePath.isEmpty() && m_importer != nullptr;
+ }
+
+ void clear() {
+ m_filePath.clear();
+ m_importer = nullptr;
+ }
+
+private:
+ QString m_filePath;
+ QQmlJSImporter *m_importer = nullptr;
+};
class QQmlJSScope
{
- Q_DISABLE_COPY_MOVE(QQmlJSScope)
+ Q_DISABLE_COPY(QQmlJSScope)
public:
- using Ptr = QSharedPointer<QQmlJSScope>;
- using WeakPtr = QWeakPointer<QQmlJSScope>;
- using ConstPtr = QSharedPointer<const QQmlJSScope>;
- using WeakConstPtr = QWeakPointer<const QQmlJSScope>;
+ QQmlJSScope(QQmlJSScope &&) = default;
+ QQmlJSScope &operator=(QQmlJSScope &&) = default;
+
+ using Ptr = QDeferredSharedPointer<QQmlJSScope>;
+ using WeakPtr = QDeferredWeakPointer<QQmlJSScope>;
+ using ConstPtr = QDeferredSharedPointer<const QQmlJSScope>;
+ using WeakConstPtr = QDeferredWeakPointer<const QQmlJSScope>;
enum ScopeType
{