History

rework ScriptValue to act like a stack variable rather than a pointer

Heather Anderson committed 5 years ago

Commit 85810221 parent f209c51170 files · +2837 −2594Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 170 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+16−16
@@ -20,36 +20,36 @@ ScriptEnginePointer newScriptEngine(ScriptManager* manager) { · 19 unmodified lines
20 return QSharedPointer<ScriptEngineQtScript>(new ScriptEngineQtScript(manager));20 return QSharedPointer<ScriptEngineQtScript>(new ScriptEngineQtScript(manager));
21}21}
22 22
23ScriptValuePointer makeScopedHandlerObject(ScriptValuePointer scopeOrCallback, ScriptValuePointer methodOrName) {23ScriptValue makeScopedHandlerObject(const ScriptValue& scopeOrCallback, const ScriptValue& methodOrName) {
24 auto engine = scopeOrCallback->engine();24 auto engine = scopeOrCallback.engine();
25 if (!engine) {25 if (!engine) {
26 return scopeOrCallback;26 return scopeOrCallback;
27 }27 }
28 ScriptValuePointer scope;28 ScriptValue scope;
29 ScriptValuePointer callback = scopeOrCallback;29 ScriptValue callback = scopeOrCallback;
30 if (scopeOrCallback->isObject()) {30 if (scopeOrCallback.isObject()) {
31 if (methodOrName->isString()) {31 if (methodOrName.isString()) {
32 scope = scopeOrCallback;32 scope = scopeOrCallback;
33 callback = scope->property(methodOrName->toString());33 callback = scope.property(methodOrName.toString());
34 } else if (methodOrName->isFunction()) {34 } else if (methodOrName.isFunction()) {
35 scope = scopeOrCallback;35 scope = scopeOrCallback;
36 callback = methodOrName;36 callback = methodOrName;
37 } else if (!methodOrName->isValid()) {37 } else if (!methodOrName.isValid()) {
38 // instantiate from an existing scoped handler object38 // instantiate from an existing scoped handler object
39 if (scopeOrCallback->property("callback")->isFunction()) {39 if (scopeOrCallback.property("callback").isFunction()) {
40 scope = scopeOrCallback->property("scope");40 scope = scopeOrCallback.property("scope");
41 callback = scopeOrCallback->property("callback");41 callback = scopeOrCallback.property("callback");
42 }42 }
43 }43 }
44 }44 }
45 auto handler = engine->newObject();45 auto handler = engine->newObject();
46 handler->setProperty("scope", scope);46 handler.setProperty("scope", scope);
47 handler->setProperty("callback", callback);47 handler.setProperty("callback", callback);
48 return handler;48 return handler;
49}49}
50 50
51ScriptValuePointer callScopedHandlerObject(ScriptValuePointer handler, ScriptValuePointer err, ScriptValuePointer result) {51ScriptValue callScopedHandlerObject(const ScriptValue& handler, const ScriptValue& err, const ScriptValue& result) {
52 return handler->property("callback")->call(handler->property("scope"), ScriptValueList({ err, result }));52 return handler.property("callback").call(handler.property("scope"), ScriptValueList({ err, result }));
53}53}
54 54
55bool ScriptEngine::IS_THREADSAFE_INVOCATION(const QString& method) {55bool ScriptEngine::IS_THREADSAFE_INVOCATION(const QString& method) {