From a1b855669ec08d0e5b8e1b01087159f53f62ca27 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Fri, 6 Jun 2025 22:24:27 +0100 Subject: [PATCH] Codechange: Get/pass engine by reference instead of pointer. --- src/script/api/script_controller.cpp | 6 +++--- src/script/api/script_object.cpp | 4 ++-- src/script/script_instance.cpp | 2 +- src/script/squirrel.cpp | 2 +- src/script/squirrel_std.cpp | 14 +++++++------- src/script/squirrel_std.hpp | 4 ++-- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/script/api/script_controller.cpp b/src/script/api/script_controller.cpp index 9e22d35d9a..774b089ef5 100644 --- a/src/script/api/script_controller.cpp +++ b/src/script/api/script_controller.cpp @@ -97,8 +97,8 @@ ScriptController::ScriptController(::CompanyID company) : /* static */ HSQOBJECT ScriptController::Import(const std::string &library, const std::string &class_name, int version) { ScriptController &controller = ScriptObject::GetActiveInstance().GetController(); - Squirrel *engine = ScriptObject::GetActiveInstance().engine; - HSQUIRRELVM vm = engine->GetVM(); + Squirrel &engine = *ScriptObject::GetActiveInstance().engine; + HSQUIRRELVM vm = engine.GetVM(); ScriptInfo *lib = ScriptObject::GetActiveInstance().FindLibrary(library, version); if (lib == nullptr) { @@ -128,7 +128,7 @@ ScriptController::ScriptController(::CompanyID company) : sq_pushstring(vm, fake_class); sq_newclass(vm, SQFalse); /* Load the library */ - if (!engine->LoadScript(vm, lib->GetMainScript(), false)) { + if (!engine.LoadScript(vm, lib->GetMainScript(), false)) { throw sq_throwerror(vm, fmt::format("there was a compile error when importing '{}' version {}", library, version)); } /* Create the fake class */ diff --git a/src/script/api/script_object.cpp b/src/script/api/script_object.cpp index b656a95c09..a619aae0b2 100644 --- a/src/script/api/script_object.cpp +++ b/src/script/api/script_object.cpp @@ -310,8 +310,8 @@ ScriptObject::DisableDoCommandScope::DisableDoCommandScope() IncreaseDoCommandCosts(res.GetCost()); if (!_generating_world) { /* Charge a nominal fee for asynchronously executed commands */ - Squirrel *engine = ScriptObject::GetActiveInstance().engine; - Squirrel::DecreaseOps(engine->GetVM(), 100); + Squirrel &engine = *ScriptObject::GetActiveInstance().engine; + Squirrel::DecreaseOps(engine.GetVM(), 100); } if (callback != nullptr) { /* Insert return value into to stack and throw a control code that diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp index 58ba727b62..5b5b1e1296 100644 --- a/src/script/script_instance.cpp +++ b/src/script/script_instance.cpp @@ -98,7 +98,7 @@ void ScriptInstance::Initialize(const std::string &main_script, const std::strin void ScriptInstance::RegisterAPI() { - squirrel_register_std(this->engine); + squirrel_register_std(*this->engine); } bool ScriptInstance::LoadCompatibilityScript(std::string_view api_version, Subdirectory dir) diff --git a/src/script/squirrel.cpp b/src/script/squirrel.cpp index 2086e74f75..3484454c15 100644 --- a/src/script/squirrel.cpp +++ b/src/script/squirrel.cpp @@ -536,7 +536,7 @@ void Squirrel::Initialize() sq_setforeignptr(this->vm, this); sq_pushroottable(this->vm); - squirrel_register_global_std(this); + squirrel_register_global_std(*this); /* Set consts table as delegate of root table, so consts/enums defined via require() are accessible */ sq_pushconsttable(this->vm); diff --git a/src/script/squirrel_std.cpp b/src/script/squirrel_std.cpp index d00c2ca023..d400597586 100644 --- a/src/script/squirrel_std.cpp +++ b/src/script/squirrel_std.cpp @@ -82,20 +82,20 @@ SQInteger SquirrelStd::notifyallexceptions(HSQUIRRELVM vm) return SQ_ERROR; } -void squirrel_register_global_std(Squirrel *engine) +void squirrel_register_global_std(Squirrel &engine) { /* We don't use squirrel_helper here, as we want to register to the global * scope and not to a class. */ - engine->AddMethod("require", &SquirrelStd::require, ".s"); - engine->AddMethod("notifyallexceptions", &SquirrelStd::notifyallexceptions, ".b"); + engine.AddMethod("require", &SquirrelStd::require, ".s"); + engine.AddMethod("notifyallexceptions", &SquirrelStd::notifyallexceptions, ".b"); } -void squirrel_register_std(Squirrel *engine) +void squirrel_register_std(Squirrel &engine) { /* We don't use squirrel_helper here, as we want to register to the global * scope and not to a class. */ - engine->AddMethod("min", &SquirrelStd::min, ".ii"); - engine->AddMethod("max", &SquirrelStd::max, ".ii"); + engine.AddMethod("min", &SquirrelStd::min, ".ii"); + engine.AddMethod("max", &SquirrelStd::max, ".ii"); - sqstd_register_mathlib(engine->GetVM()); + sqstd_register_mathlib(engine.GetVM()); } diff --git a/src/script/squirrel_std.hpp b/src/script/squirrel_std.hpp index 5e977045f8..1a208eeae1 100644 --- a/src/script/squirrel_std.hpp +++ b/src/script/squirrel_std.hpp @@ -52,12 +52,12 @@ public: /** * Register all standard functions we want to give to a script. */ -void squirrel_register_std(Squirrel *engine); +void squirrel_register_std(Squirrel &engine); /** * Register all standard functions that are available on first startup. * @note this set is very limited, and is only meant to load other scripts and things like that. */ -void squirrel_register_global_std(Squirrel *engine); +void squirrel_register_global_std(Squirrel &engine); #endif /* SQUIRREL_STD_HPP */