Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/scriptinterface/ScriptInterface.cpp
/* Copyright (C) 2021 Wildfire Games. | /* Copyright (C) 2022 Wildfire Games. | ||||
* This file is part of 0 A.D. | * This file is part of 0 A.D. | ||||
* | * | ||||
* 0 A.D. is free software: you can redistribute it and/or modify | * 0 A.D. is free software: you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
* the Free Software Foundation, either version 2 of the License, or | * the Free Software Foundation, either version 2 of the License, or | ||||
* (at your option) any later version. | * (at your option) any later version. | ||||
* | * | ||||
* 0 A.D. is distributed in the hope that it will be useful, | * 0 A.D. is distributed in the hope that it will be useful, | ||||
▲ Show 20 Lines • Show All 433 Lines • ▼ Show 20 Lines | void ScriptInterface::CallConstructor(JS::HandleValue ctor, JS::HandleValueArray argv, JS::MutableHandleValue out) const | ||||
ScriptRequest rq(this); | ScriptRequest rq(this); | ||||
if (!ctor.isObject()) | if (!ctor.isObject()) | ||||
{ | { | ||||
LOGERROR("CallConstructor: ctor is not an object"); | LOGERROR("CallConstructor: ctor is not an object"); | ||||
out.setNull(); | out.setNull(); | ||||
return; | return; | ||||
} | } | ||||
JS::RootedObject ctorObj(rq.cx, &ctor.toObject()); | JS::RootedObject objOut(rq.cx); | ||||
out.setObjectOrNull(JS_New(rq.cx, ctorObj, argv)); | if (!JS::Construct(rq.cx, ctor, argv, &objOut)) | ||||
out.setNull(); | |||||
else | |||||
out.setObjectOrNull(objOut); | |||||
} | } | ||||
void ScriptInterface::DefineCustomObjectType(JSClass *clasp, JSNative constructor, uint minArgs, JSPropertySpec *ps, JSFunctionSpec *fs, JSPropertySpec *static_ps, JSFunctionSpec *static_fs) | void ScriptInterface::DefineCustomObjectType(JSClass *clasp, JSNative constructor, uint minArgs, JSPropertySpec *ps, JSFunctionSpec *fs, JSPropertySpec *static_ps, JSFunctionSpec *static_fs) | ||||
{ | { | ||||
ScriptRequest rq(this); | ScriptRequest rq(this); | ||||
std::string typeName = clasp->name; | std::string typeName = clasp->name; | ||||
if (m_CustomObjectTypes.find(typeName) != m_CustomObjectTypes.end()) | if (m_CustomObjectTypes.find(typeName) != m_CustomObjectTypes.end()) | ||||
▲ Show 20 Lines • Show All 243 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator