Changeset View
Changeset View
Standalone View
Standalone View
source/scriptinterface/ScriptInterface.h
/* 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 70 Lines • ▼ Show 20 Lines | public: | ||||
* Constructor. | * Constructor. | ||||
* @param nativeScopeName Name of global object that functions (via ScriptFunction::Register) will | * @param nativeScopeName Name of global object that functions (via ScriptFunction::Register) will | ||||
* be placed into, as a scoping mechanism; typically "Engine" | * be placed into, as a scoping mechanism; typically "Engine" | ||||
* @param debugName Name of this interface for CScriptStats purposes. | * @param debugName Name of this interface for CScriptStats purposes. | ||||
* @param context ScriptContext to use when initializing this interface. | * @param context ScriptContext to use when initializing this interface. | ||||
*/ | */ | ||||
ScriptInterface(const char* nativeScopeName, const char* debugName, const std::shared_ptr<ScriptContext>& context); | ScriptInterface(const char* nativeScopeName, const char* debugName, const std::shared_ptr<ScriptContext>& context); | ||||
/** | |||||
* Alternate constructor. This creates the new Realm in the same Compartment as the neighbor scriptInterface. | |||||
* This means that data can be freely exchanged between these two script interfaces without cloning. | |||||
* @param nativeScopeName Name of global object that functions (via ScriptFunction::Register) will | |||||
* be placed into, as a scoping mechanism; typically "Engine" | |||||
* @param debugName Name of this interface for CScriptStats purposes. | |||||
* @param scriptInterface 'Neighbor' scriptInterface to share a compartment with. | |||||
*/ | |||||
ScriptInterface(const char* nativeScopeName, const char* debugName, const ScriptInterface& neighbor); | |||||
~ScriptInterface(); | ~ScriptInterface(); | ||||
struct CmptPrivate | struct CmptPrivate | ||||
{ | { | ||||
friend class ScriptInterface; | friend class ScriptInterface; | ||||
public: | public: | ||||
static const ScriptInterface& GetScriptInterface(JSContext* cx); | static const ScriptInterface& GetScriptInterface(JSContext* cx); | ||||
static void* GetCBData(JSContext* cx); | static void* GetCBData(JSContext* cx); | ||||
▲ Show 20 Lines • Show All 197 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator