Skip to content

Commit

Permalink
refactor: simplify code with macro definitions
Browse files Browse the repository at this point in the history
  • Loading branch information
zimuya4153 committed Dec 19, 2024
1 parent 990cd3e commit 2419bd4
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 199 deletions.
2 changes: 2 additions & 0 deletions src/API/EnumAPI.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,6 @@ void RegisterEnum(ScriptEngine* engine) {
engine->set("Enums", ConvertToScriptX(enumMap));
}

#undef REGISTER_ENUM_MACRO

} // namespace jse::EnumAPI
57 changes: 12 additions & 45 deletions src/API/LoggerAPI.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,59 +44,29 @@ Local<Value> LoggerAPIHelper(endstone::Logger::Level level, Arguments const& arg
Catch;
}

Local<Value> LoggerAPI::toString(Arguments const& args) {
return String::newString("<Logger>");
}
Local<Value> LoggerAPI::toString(Arguments const& args) { return String::newString("<Logger>"); }

Local<Value> LoggerAPI::log(Arguments const& args) {
// CheckArgsCount(args, 2);
// CheckArgType(args[0], ValueKind::kNumber);
// CheckArgType(args[1], ValueKind::kString); // any
auto level = magic_enum::enum_cast<endstone::Logger::Level>(args[0].asNumber().toInt64());
if (!level.has_value()) return Boolean::newBoolean(false);
return LoggerAPIHelper(*level, args, 1);
}

Local<Value> LoggerAPI::info(Arguments const& args) {
// CheckArgsCount(args, 1);
// CheckArgType(args[0], ValueKind::kString); // any
return LoggerAPIHelper(endstone::Logger::Level::Info, args);
}

Local<Value> LoggerAPI::warning(Arguments const& args) {
// CheckArgsCount(args, 1);
// CheckArgType(args[0], ValueKind::kString); // any
return LoggerAPIHelper(endstone::Logger::Level::Warning, args);
}

Local<Value> LoggerAPI::error(Arguments const& args) {
// CheckArgsCount(args, 1);
// CheckArgType(args[0], ValueKind::kString); // any
return LoggerAPIHelper(endstone::Logger::Level::Error, args);
}

Local<Value> LoggerAPI::debug(Arguments const& args) {
// CheckArgsCount(args, 1);
// CheckArgType(args[0], ValueKind::kString); // any
return LoggerAPIHelper(endstone::Logger::Level::Debug, args);
}

Local<Value> LoggerAPI::trace(Arguments const& args) {
// CheckArgsCount(args, 1);
// CheckArgType(args[0], ValueKind::kString); // any
return LoggerAPIHelper(endstone::Logger::Level::Trace, args);
}
#define LOGGERAPI_MACRO(FUNC_NAME, LEVEL) \
Local<Value> LoggerAPI::FUNC_NAME(Arguments const& args) { \
return LoggerAPIHelper(endstone::Logger::Level::LEVEL, args); \
}

Local<Value> LoggerAPI::critical(Arguments const& args) {
// CheckArgsCount(args, 1);
// CheckArgType(args[0], ValueKind::kString); // any
return LoggerAPIHelper(endstone::Logger::Level::Critical, args);
}
LOGGERAPI_MACRO(info, Info);
LOGGERAPI_MACRO(warning, Warning);
LOGGERAPI_MACRO(error, Error);
LOGGERAPI_MACRO(debug, Debug);
LOGGERAPI_MACRO(trace, Trace);
LOGGERAPI_MACRO(critical, Critical);

#undef LOGGERAPI_MACRO

Local<Value> LoggerAPI::setLevel(Arguments const& args) {
// CheckArgsCount(args, 1);
// CheckArgType(args[0], ValueKind::kNumber);
try {
auto data = ENGINE_DATA();
if (data->mPlugin) {
Expand All @@ -109,8 +79,6 @@ Local<Value> LoggerAPI::setLevel(Arguments const& args) {
}

Local<Value> LoggerAPI::isEnabledFor(Arguments const& args) {
// CheckArgsCount(args, 1);
// CheckArgType(args[0], ValueKind::kNumber);
try {
auto data = ENGINE_DATA();
if (data->mPlugin) {
Expand All @@ -134,5 +102,4 @@ Local<Value> LoggerAPI::getName(Arguments const& args) {
Catch;
}


} // namespace jse
80 changes: 22 additions & 58 deletions src/API/PluginAPI.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,76 +27,40 @@ ClassDefine<PluginAPI> PluginAPIClass = defineClass<PluginAPI>("Plugin")
.build();


Local<Value> PluginAPI::toString(Arguments const& args) {
return String::newString("<Plugin>");
}

Local<Value> PluginAPI::getDescription(Arguments const& args) {
try {
return PluginDescriptionAPI::newPluginDescriptionAPI();
#define PLUGINAPI_MACRO(FUNC_NAME, ...) \
Local<Value> PluginAPI::FUNC_NAME(Arguments const& args) { \
try { \
__VA_ARGS__; \
} \
Catch; \
}
Catch;
}

Local<Value> PluginAPI::onLoad(Arguments const& args) {
try {
ENGINE_DATA()->callOnLoad();
return Local<Value>();
}
Catch;
}
PLUGINAPI_MACRO(toString, return String::newString("<Plugin>"));

Local<Value> PluginAPI::onEnable(Arguments const& args) {
try {
ENGINE_DATA()->callOnEnable();
return Local<Value>();
}
Catch;
}
PLUGINAPI_MACRO(getDescription, return PluginDescriptionAPI::newPluginDescriptionAPI());

Local<Value> PluginAPI::onDisable(Arguments const& args) {
try {
ENGINE_DATA()->callOnDisable();
return Local<Value>();
}
Catch;
}
PLUGINAPI_MACRO(onLoad, ENGINE_DATA()->callOnLoad(); return Local<Value>());

Local<Value> PluginAPI::getLogger(Arguments const& args) {
try {
return LoggerAPI::newLoggerAPI();
}
Catch;
}
PLUGINAPI_MACRO(onEnable, ENGINE_DATA()->callOnEnable(); return Local<Value>());

Local<Value> PluginAPI::isEnabled(Arguments const& args) {
try {
return Boolean::newBoolean(ENGINE_DATA()->mPlugin->isEnabled());
}
Catch;
}
PLUGINAPI_MACRO(onDisable, ENGINE_DATA()->callOnDisable(); return Local<Value>());

Local<Value> PluginAPI::getPluginLoader(Arguments const& args) { return Local<Value>(); }
PLUGINAPI_MACRO(getLogger, return LoggerAPI::newLoggerAPI());

Local<Value> PluginAPI::getServer(Arguments const& args) { return Local<Value>(); }
PLUGINAPI_MACRO(isEnabled, return Boolean::newBoolean(ENGINE_DATA()->mPlugin->isEnabled()));

Local<Value> PluginAPI::getName(Arguments const& args) {
try {
return String::newString(ENGINE_DATA()->mPlugin->getName());
}
Catch;
}
PLUGINAPI_MACRO(getPluginLoader, return Local<Value>()); // todo

Local<Value> PluginAPI::getCommand(Arguments const& args) { return Local<Value>(); }
PLUGINAPI_MACRO(getServer, return Local<Value>()); // todo

Local<Value> PluginAPI::getDataFolder(Arguments const& args) {
try {
return String::newString(ENGINE_DATA()->mPlugin->getDataFolder().string());
}
Catch;
}
PLUGINAPI_MACRO(getName, return String::newString(ENGINE_DATA()->mPlugin->getName()));

PLUGINAPI_MACRO(getCommand, return Local<Value>()); // todo

PLUGINAPI_MACRO(getDataFolder, return String::newString(ENGINE_DATA()->mPlugin->getDataFolder().string()));

Local<Value> PluginAPI::registerEvent(Arguments const& args) { return Local<Value>(); }
PLUGINAPI_MACRO(registerEvent, return Local<Value>()); // todo

#undef PLUGINAPI_MACRO

} // namespace jse
124 changes: 28 additions & 96 deletions src/API/PluginDescription.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#include "Utils/Convert.h"



namespace jse {

ClassDefine<PluginDescriptionAPI> PluginDescriptionAPIClass =
Expand All @@ -31,120 +30,53 @@ ClassDefine<PluginDescriptionAPI> PluginDescriptionAPIClass =
.instanceFunction("getPermissions", &PluginDescriptionAPI::getPermissions)
.build();

#define PLUGINDESCRIPTIONAPI_MACRO(FUNC_NAME, ...) \
Local<Value> PluginDescriptionAPI::FUNC_NAME(Arguments const& args) { \
try { \
__VA_ARGS__; \
} \
Catch; \
}

Local<Value> PluginDescriptionAPI::toString(Arguments const& args) {
return String::newString("<PluginDescription>");
}
#define GETDESCRIPTION_MACRO(FUNC_NAME) return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().FUNC_NAME());

PLUGINDESCRIPTIONAPI_MACRO(toString, return String::newString("<PluginDescription>"));

Local<Value> PluginDescriptionAPI::getName(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getName());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getName, GETDESCRIPTION_MACRO(getName));

Local<Value> PluginDescriptionAPI::getVersion(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getVersion());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getVersion, GETDESCRIPTION_MACRO(getVersion));

Local<Value> PluginDescriptionAPI::getFullName(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getFullName());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getFullName, GETDESCRIPTION_MACRO(getFullName));

Local<Value> PluginDescriptionAPI::getAPIVersion(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getAPIVersion());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getAPIVersion, GETDESCRIPTION_MACRO(getAPIVersion));

Local<Value> PluginDescriptionAPI::getDescription(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getDescription());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getDescription, GETDESCRIPTION_MACRO(getDescription));

Local<Value> PluginDescriptionAPI::getLoad(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getLoad());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getLoad, GETDESCRIPTION_MACRO(getLoad));

Local<Value> PluginDescriptionAPI::getAuthors(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getAuthors());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getAuthors, GETDESCRIPTION_MACRO(getAuthors));

Local<Value> PluginDescriptionAPI::getContributors(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getContributors());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getContributors, GETDESCRIPTION_MACRO(getContributors));

Local<Value> PluginDescriptionAPI::getWebsite(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getWebsite());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getWebsite, GETDESCRIPTION_MACRO(getWebsite));

Local<Value> PluginDescriptionAPI::getPrefix(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getPrefix());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getPrefix, GETDESCRIPTION_MACRO(getPrefix));

Local<Value> PluginDescriptionAPI::getProvides(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getProvides());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getProvides, GETDESCRIPTION_MACRO(getProvides));

Local<Value> PluginDescriptionAPI::getDepend(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getDepend());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getDepend, GETDESCRIPTION_MACRO(getDepend));

Local<Value> PluginDescriptionAPI::getSoftDepend(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getSoftDepend());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getSoftDepend, GETDESCRIPTION_MACRO(getSoftDepend));

Local<Value> PluginDescriptionAPI::getLoadBefore(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getLoadBefore());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getLoadBefore, GETDESCRIPTION_MACRO(getLoadBefore));

Local<Value> PluginDescriptionAPI::getDefaultPermission(Arguments const& args) {
try {
return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getDefaultPermission());
}
Catch;
}
PLUGINDESCRIPTIONAPI_MACRO(getDefaultPermission, GETDESCRIPTION_MACRO(getDefaultPermission));

Local<Value> PluginDescriptionAPI::getCommands(Arguments const& args) { return Local<Value>(); }
PLUGINDESCRIPTIONAPI_MACRO(getCommands, return Local<Value>()); // todo

Local<Value> PluginDescriptionAPI::getPermissions(Arguments const& args) { return Local<Value>(); }
PLUGINDESCRIPTIONAPI_MACRO(getPermissions, return Local<Value>()); // todo

#undef PLUGINDESCRIPTIONAPI_MACRO
#undef GETDESCRIPTION_MACRO

} // namespace jse

0 comments on commit 2419bd4

Please sign in to comment.