diff --git a/src/DllMain.cpp b/src/DllMain.cpp deleted file mode 100644 index 4ed5a192..00000000 --- a/src/DllMain.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "main/BuiltinCommands.h" - -#include - - -extern void LSE_Load(); -extern void LSE_Enable(); - -extern "C" { -_declspec(dllexport) bool ll_plugin_load(ll::plugin::NativePlugin& self) { - LSE_Load(); - return true; -} - -_declspec(dllexport) bool ll_plugin_enable(ll::plugin::NativePlugin& self) { - LSE_Enable(); - return true; -} -} diff --git a/src/lse/Entry.cpp b/src/lse/Entry.cpp new file mode 100644 index 00000000..c6827308 --- /dev/null +++ b/src/lse/Entry.cpp @@ -0,0 +1,28 @@ +#include "LegacyScriptEngine.h" + +#include +#include + + +namespace lse { + +namespace { +std::unique_ptr legacyScriptEngine; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables) +} // namespace + +LegacyScriptEngine& getLegacyScriptEngine() { return *legacyScriptEngine; } + +extern "C" { +_declspec(dllexport) bool ll_plugin_load(ll::plugin::NativePlugin& self) { + legacyScriptEngine = std::make_unique(self); + return true; +} + +_declspec(dllexport) bool ll_plugin_enable(ll::plugin::NativePlugin& /*unused*/) { + return legacyScriptEngine->enable(); +} + +// LegacyScriptEngine should not be disabled or unloaded. +} + +} // namespace lse diff --git a/src/lse/Entry.h b/src/lse/Entry.h new file mode 100644 index 00000000..bea9e4a6 --- /dev/null +++ b/src/lse/Entry.h @@ -0,0 +1,9 @@ +#pragma once + +#include "LegacyScriptEngine.h" + +namespace lse { + +[[nodiscard]] LegacyScriptEngine& getLegacyScriptEngine(); + +} // namespace lse diff --git a/src/lse/LegacyScriptEngine.cpp b/src/lse/LegacyScriptEngine.cpp new file mode 100644 index 00000000..f8bdac48 --- /dev/null +++ b/src/lse/LegacyScriptEngine.cpp @@ -0,0 +1,24 @@ +#include "LegacyScriptEngine.h" + +#include + +namespace lse { + +LegacyScriptEngine::LegacyScriptEngine(ll::plugin::NativePlugin& self) : mSelf(self) { + mSelf.getLogger().info("loading..."); + + // Code for loading the plugin goes here. +} + +ll::plugin::NativePlugin& LegacyScriptEngine::getSelf() const { return mSelf; } + +bool LegacyScriptEngine::enable() { + mSelf.getLogger().info("enabling..."); + + // Code for enabling the plugin goes here. + + return true; +} + + +} // namespace lse diff --git a/src/lse/LegacyScriptEngine.h b/src/lse/LegacyScriptEngine.h new file mode 100644 index 00000000..acb8bf0f --- /dev/null +++ b/src/lse/LegacyScriptEngine.h @@ -0,0 +1,26 @@ +#pragma once + +#include + +namespace lse { + +class LegacyScriptEngine { +public: + explicit LegacyScriptEngine(ll::plugin::NativePlugin& self); + + LegacyScriptEngine(LegacyScriptEngine&&) = delete; + LegacyScriptEngine(const LegacyScriptEngine&) = delete; + LegacyScriptEngine& operator=(LegacyScriptEngine&&) = delete; + LegacyScriptEngine& operator=(const LegacyScriptEngine&) = delete; + + ~LegacyScriptEngine() = default; + + [[nodiscard]] ll::plugin::NativePlugin& getSelf() const; + + bool enable(); + +private: + ll::plugin::NativePlugin& mSelf; +}; + +} // namespace lse