diff options
Diffstat (limited to 'src/declarative/qml/v8/qv8engine.cpp')
-rw-r--r-- | src/declarative/qml/v8/qv8engine.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/declarative/qml/v8/qv8engine.cpp b/src/declarative/qml/v8/qv8engine.cpp index 90137330b5..92cd336e1c 100644 --- a/src/declarative/qml/v8/qv8engine.cpp +++ b/src/declarative/qml/v8/qv8engine.cpp @@ -416,7 +416,9 @@ v8::Handle<v8::Value> QV8Engine::fromVariant(const QVariant &variant) } // A handle scope and context must be entered -v8::Local<v8::Script> QV8Engine::qmlModeCompile(const QString &source, const QString &fileName, int lineNumber) +v8::Local<v8::Script> QV8Engine::qmlModeCompile(const QString &source, + const QString &fileName, + int lineNumber) { v8::Local<v8::String> v8source = m_stringWrapper.toString(source); v8::Local<v8::String> v8fileName = m_stringWrapper.toString(fileName); @@ -429,6 +431,26 @@ v8::Local<v8::Script> QV8Engine::qmlModeCompile(const QString &source, const QSt return script; } +// A handle scope and context must be entered. +// source can be either ascii or utf8. +v8::Local<v8::Script> QV8Engine::qmlModeCompile(const char *source, int sourceLength, + const QString &fileName, + int lineNumber) +{ + if (sourceLength == -1) + sourceLength = strlen(source); + + v8::Local<v8::String> v8source = v8::String::New(source, sourceLength); + v8::Local<v8::String> v8fileName = m_stringWrapper.toString(fileName); + + v8::ScriptOrigin origin(v8fileName, v8::Integer::New(lineNumber - 1)); + + v8::Local<v8::Script> script = v8::Script::Compile(v8source, &origin, 0, v8::Handle<v8::String>(), + v8::Script::QmlMode); + + return script; +} + QNetworkAccessManager *QV8Engine::networkAccessManager() { return QDeclarativeEnginePrivate::get(m_engine)->getNetworkAccessManager(); |