4#include <private/qqmlscriptdata_p.h>
5#include <private/qqmlcontext_p.h>
6#include <private/qqmlengine_p.h>
7#include <private/qqmlscriptblob_p.h>
8#include <private/qv4engine_p.h>
9#include <private/qv4scopedvalue_p.h>
10#include <private/qv4object_p.h>
11#include <private/qv4qmlcontext_p.h>
12#include <private/qv4module_p.h>
16QQmlRefPointer<QQmlContextData> QQmlScriptData::qmlContextDataForContext(
17 const QQmlRefPointer<QQmlContextData> &parentQmlContextData)
19 Q_ASSERT(parentQmlContextData && parentQmlContextData->engine());
21 if (!m_precompiledScript || m_precompiledScript->
isESModule())
24 QQmlRefPointer<QQmlContextData> qmlContextData = m_precompiledScript->
isSharedLibrary()
29 qmlContextData->setJSContext(
true);
31 qmlContextData->setPragmaLibraryContext(
true);
33 qmlContextData->setPragmaLibraryContext(parentQmlContextData->isPragmaLibraryContext());
34 qmlContextData->setBaseUrl(
url);
35 qmlContextData->setBaseUrlString(
urlString);
42 qmlContextData->setImports(parentQmlContextData->imports());
43 qmlContextData->setImportedScripts(parentQmlContextData->importedScripts());
47 qmlContextData->setEngine(parentQmlContextData->engine());
52 if (qmlContextData->importedScripts().isNullOrUndefined()) {
54 qmlContextData->setImportedScripts(
57 scriptsArray = qmlContextData->importedScripts().valueRef();
60 for (
int ii = 0; ii <
scripts.size(); ++ii) {
61 v =
scripts.at(ii)->scriptData()->scriptValueForContext(qmlContextData);
62 scriptsArray->put(ii,
v);
65 return qmlContextData;
69 const QQmlRefPointer<QQmlContextData> &parentQmlContextData)
72 return m_value.
value();
74 Q_ASSERT(parentQmlContextData && parentQmlContextData->engine());
79 if (
auto qmlContextData = qmlContextDataForContext(parentQmlContextData)) {
87 m_precompiledScript))->instantiate());
90 if (qmlExecutionContext) {
91 module->d()->scope->outer.set(v4, qmlExecutionContext->d());
92 qmlExecutionContext->d()->qml()->module.set(v4, module->d());
105 if (qmlExecutionContext)
106 value = qmlExecutionContext->d()->qml();
115 return value->asReturnedValue();
void setInternal(bool isInternal)
static QQmlRefPointer< QQmlContextData > createRefCounted(const QQmlRefPointer< QQmlContextData > &parent)
static QQmlEnginePrivate * get(QQmlEngine *e)
The QQmlError class encapsulates a QML error.
QVector< QQmlRefPointer< QQmlScriptBlob > > scripts
QV4::ReturnedValue scriptValueForContext(const QQmlRefPointer< QQmlContextData > &parentCtxt)
QQmlRefPointer< QQmlTypeNameCache > typeNameCache
ReturnedValue value() const
void set(ExecutionEngine *engine, const Value &value)
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLsizei const GLfloat * v
[13]
bool isSharedLibrary() const
ExecutionContext * rootContext() const
QQmlError catchExceptionAsQmlError()
Heap::ArrayObject * newArrayObject(int count=0)
QQmlRefPointer< ExecutableCompilationUnit > executableCompilationUnit(QQmlRefPointer< QV4::CompiledData::CompilationUnit > &&unit)
static Heap::QmlContext * create(QV4::ExecutionContext *parent, QQmlRefPointer< QQmlContextData > context, QObject *scopeObject)