Skip to content

Commit

Permalink
refactor(API): 使用builder替代JSEAPIClass等外部定义
Browse files Browse the repository at this point in the history
  • Loading branch information
engsr6982 committed Dec 20, 2024
1 parent ac6eda6 commit b0c20e1
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 49 deletions.
10 changes: 5 additions & 5 deletions src/API/JSEAPI.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@

namespace jse {

ClassDefine<void> JSEAPIClass = defineClass("JSE")
.function("registerPlugin", &JSEAPI::registerPlugin)
.function("getPlugin", &JSEAPI::getPlugin)
.function("debug", &JSEAPI::debug)
.build();
ClassDefine<void> JSEAPI::builder = defineClass("JSE")
.function("registerPlugin", &JSEAPI::registerPlugin)
.function("getPlugin", &JSEAPI::getPlugin)
.function("debug", &JSEAPI::debug)
.build();

Local<Value> JSEAPI::registerPlugin(Arguments const& args) {
CheckArgsCount(args, 1);
Expand Down
5 changes: 3 additions & 2 deletions src/API/JSEAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ class JSEAPI {
static Local<Value> getPlugin(Arguments const& args);

static Local<Value> debug(Arguments const& args);
};

extern ClassDefine<void> JSEAPIClass;

static ClassDefine<void> builder;
};

} // namespace jse
28 changes: 14 additions & 14 deletions src/API/LoggerAPI.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,20 @@

namespace jse {

ClassDefine<LoggerAPI> LoggerAPIClass = defineClass<LoggerAPI>("Logger")
.constructor(nullptr)
.instanceFunction("toString", &LoggerAPI::toString)
.instanceFunction("log", &LoggerAPI::log)
.instanceFunction("info", &LoggerAPI::info)
.instanceFunction("warning", &LoggerAPI::warning)
.instanceFunction("error", &LoggerAPI::error)
.instanceFunction("debug", &LoggerAPI::debug)
.instanceFunction("trace", &LoggerAPI::trace)
.instanceFunction("critical", &LoggerAPI::critical)
.instanceFunction("setLevel", &LoggerAPI::setLevel)
.instanceFunction("isEnabledFor", &LoggerAPI::isEnabledFor)
.instanceFunction("getName", &LoggerAPI::getName)
.build();
ClassDefine<LoggerAPI> LoggerAPI::builder = defineClass<LoggerAPI>("Logger")
.constructor(nullptr)
.instanceFunction("toString", &LoggerAPI::toString)
.instanceFunction("log", &LoggerAPI::log)
.instanceFunction("info", &LoggerAPI::info)
.instanceFunction("warning", &LoggerAPI::warning)
.instanceFunction("error", &LoggerAPI::error)
.instanceFunction("debug", &LoggerAPI::debug)
.instanceFunction("trace", &LoggerAPI::trace)
.instanceFunction("critical", &LoggerAPI::critical)
.instanceFunction("setLevel", &LoggerAPI::setLevel)
.instanceFunction("isEnabledFor", &LoggerAPI::isEnabledFor)
.instanceFunction("getName", &LoggerAPI::getName)
.build();

Local<Value> LoggerAPIHelper(endstone::Logger::Level level, string const& message) {
try {
Expand Down
5 changes: 3 additions & 2 deletions src/API/LoggerAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,10 @@ class LoggerAPI : public ScriptClass {
METHODS(setLevel);
METHODS(isEnabledFor);
METHODS(getName);
};

extern ClassDefine<LoggerAPI> LoggerAPIClass;

static ClassDefine<LoggerAPI> builder;
};


} // namespace jse
32 changes: 16 additions & 16 deletions src/API/PluginAPI.cc
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,22 @@

namespace jse {

ClassDefine<PluginAPI> PluginAPIClass = defineClass<PluginAPI>("Plugin")
.constructor(nullptr)
.instanceFunction("toString", &PluginAPI::toString)
.instanceFunction("getDescription", &PluginAPI::getDescription)
.instanceFunction("onLoad", &PluginAPI::onLoad)
.instanceFunction("onEnable", &PluginAPI::onEnable)
.instanceFunction("onDisable", &PluginAPI::onDisable)
.instanceFunction("getLogger", &PluginAPI::getLogger)
.instanceFunction("isEnabled", &PluginAPI::isEnabled)
.instanceFunction("getPluginLoader", &PluginAPI::getPluginLoader)
.instanceFunction("getServer", &PluginAPI::getServer)
.instanceFunction("getName", &PluginAPI::getName)
.instanceFunction("getCommand", &PluginAPI::getCommand)
.instanceFunction("getDataFolder", &PluginAPI::getDataFolder)
.instanceFunction("registerEvent", &PluginAPI::registerEvent)
.build();
ClassDefine<PluginAPI> PluginAPI::builder = defineClass<PluginAPI>("Plugin")
.constructor(nullptr)
.instanceFunction("toString", &PluginAPI::toString)
.instanceFunction("getDescription", &PluginAPI::getDescription)
.instanceFunction("onLoad", &PluginAPI::onLoad)
.instanceFunction("onEnable", &PluginAPI::onEnable)
.instanceFunction("onDisable", &PluginAPI::onDisable)
.instanceFunction("getLogger", &PluginAPI::getLogger)
.instanceFunction("isEnabled", &PluginAPI::isEnabled)
.instanceFunction("getPluginLoader", &PluginAPI::getPluginLoader)
.instanceFunction("getServer", &PluginAPI::getServer)
.instanceFunction("getName", &PluginAPI::getName)
.instanceFunction("getCommand", &PluginAPI::getCommand)
.instanceFunction("getDataFolder", &PluginAPI::getDataFolder)
.instanceFunction("registerEvent", &PluginAPI::registerEvent)
.build();


#define PLUGINAPI_MACRO(FUNC_NAME, ...) \
Expand Down
5 changes: 3 additions & 2 deletions src/API/PluginAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,10 @@ class PluginAPI : public ScriptClass {
METHODS(getDataFolder);

METHODS(registerEvent);
};

extern ClassDefine<PluginAPI> PluginAPIClass;

static ClassDefine<PluginAPI> builder;
};


} // namespace jse
3 changes: 1 addition & 2 deletions src/API/PluginDescriptionAPI.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@
#include "Utils/Using.h"



namespace jse {

ClassDefine<PluginDescriptionAPI> PluginDescriptionAPIClass =
ClassDefine<PluginDescriptionAPI> PluginDescriptionAPI::builder =
defineClass<PluginDescriptionAPI>("PluginDescription")
.constructor(nullptr)
.instanceFunction("toString", &PluginDescriptionAPI::toString)
Expand Down
5 changes: 3 additions & 2 deletions src/API/PluginDescriptionAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,10 @@ class PluginDescriptionAPI : public ScriptClass {
METHODS(getCommands);

METHODS(getPermissions);
};

extern ClassDefine<PluginDescriptionAPI> PluginDescriptionAPIClass;

static ClassDefine<PluginDescriptionAPI> builder;
};


} // namespace jse
8 changes: 4 additions & 4 deletions src/Engine/BindAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ inline void BindAPI(ScriptEngine* engine) {
EnumAPI::RegisterEnum(engine);

// static class
engine->registerNativeClass(JSEAPIClass);
engine->registerNativeClass(JSEAPI::builder);

// instance class
engine->registerNativeClass<PluginAPI>(PluginAPIClass);
engine->registerNativeClass<LoggerAPI>(LoggerAPIClass);
engine->registerNativeClass<PluginDescriptionAPI>(PluginDescriptionAPIClass);
engine->registerNativeClass<PluginAPI>(PluginAPI::builder);
engine->registerNativeClass<LoggerAPI>(LoggerAPI::builder);
engine->registerNativeClass<PluginDescriptionAPI>(PluginDescriptionAPI::builder);
engine->registerNativeClass<PermissibleAPI>(PermissibleAPI::builder);
engine->registerNativeClass<CommandSenderAPI>(CommandSenderAPI::builder);
}
Expand Down

0 comments on commit b0c20e1

Please sign in to comment.