diff --git a/src/API/EnumAPI.cc b/src/API/EnumAPI.cc index 90b9159e..7df38831 100644 --- a/src/API/EnumAPI.cc +++ b/src/API/EnumAPI.cc @@ -25,4 +25,6 @@ void RegisterEnum(ScriptEngine* engine) { engine->set("Enums", ConvertToScriptX(enumMap)); } +#undef REGISTER_ENUM_MACRO + } // namespace jse::EnumAPI \ No newline at end of file diff --git a/src/API/LoggerAPI.cc b/src/API/LoggerAPI.cc index 22a75a3d..d3accd00 100644 --- a/src/API/LoggerAPI.cc +++ b/src/API/LoggerAPI.cc @@ -44,59 +44,29 @@ Local LoggerAPIHelper(endstone::Logger::Level level, Arguments const& arg Catch; } -Local LoggerAPI::toString(Arguments const& args) { - return String::newString(""); -} +Local LoggerAPI::toString(Arguments const& args) { return String::newString(""); } Local 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(args[0].asNumber().toInt64()); if (!level.has_value()) return Boolean::newBoolean(false); return LoggerAPIHelper(*level, args, 1); } -Local LoggerAPI::info(Arguments const& args) { - // CheckArgsCount(args, 1); - // CheckArgType(args[0], ValueKind::kString); // any - return LoggerAPIHelper(endstone::Logger::Level::Info, args); -} - -Local LoggerAPI::warning(Arguments const& args) { - // CheckArgsCount(args, 1); - // CheckArgType(args[0], ValueKind::kString); // any - return LoggerAPIHelper(endstone::Logger::Level::Warning, args); -} - -Local LoggerAPI::error(Arguments const& args) { - // CheckArgsCount(args, 1); - // CheckArgType(args[0], ValueKind::kString); // any - return LoggerAPIHelper(endstone::Logger::Level::Error, args); -} - -Local LoggerAPI::debug(Arguments const& args) { - // CheckArgsCount(args, 1); - // CheckArgType(args[0], ValueKind::kString); // any - return LoggerAPIHelper(endstone::Logger::Level::Debug, args); -} - -Local 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 LoggerAPI::FUNC_NAME(Arguments const& args) { \ + return LoggerAPIHelper(endstone::Logger::Level::LEVEL, args); \ + } -Local 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 LoggerAPI::setLevel(Arguments const& args) { - // CheckArgsCount(args, 1); - // CheckArgType(args[0], ValueKind::kNumber); try { auto data = ENGINE_DATA(); if (data->mPlugin) { @@ -109,8 +79,6 @@ Local LoggerAPI::setLevel(Arguments const& args) { } Local LoggerAPI::isEnabledFor(Arguments const& args) { - // CheckArgsCount(args, 1); - // CheckArgType(args[0], ValueKind::kNumber); try { auto data = ENGINE_DATA(); if (data->mPlugin) { @@ -134,5 +102,4 @@ Local LoggerAPI::getName(Arguments const& args) { Catch; } - } // namespace jse \ No newline at end of file diff --git a/src/API/PluginAPI.cc b/src/API/PluginAPI.cc index 9431e3b1..14746a20 100644 --- a/src/API/PluginAPI.cc +++ b/src/API/PluginAPI.cc @@ -27,76 +27,40 @@ ClassDefine PluginAPIClass = defineClass("Plugin") .build(); -Local PluginAPI::toString(Arguments const& args) { - return String::newString(""); -} - -Local PluginAPI::getDescription(Arguments const& args) { - try { - return PluginDescriptionAPI::newPluginDescriptionAPI(); +#define PLUGINAPI_MACRO(FUNC_NAME, ...) \ + Local PluginAPI::FUNC_NAME(Arguments const& args) { \ + try { \ + __VA_ARGS__; \ + } \ + Catch; \ } - Catch; -} -Local PluginAPI::onLoad(Arguments const& args) { - try { - ENGINE_DATA()->callOnLoad(); - return Local(); - } - Catch; -} +PLUGINAPI_MACRO(toString, return String::newString("")); -Local PluginAPI::onEnable(Arguments const& args) { - try { - ENGINE_DATA()->callOnEnable(); - return Local(); - } - Catch; -} +PLUGINAPI_MACRO(getDescription, return PluginDescriptionAPI::newPluginDescriptionAPI()); -Local PluginAPI::onDisable(Arguments const& args) { - try { - ENGINE_DATA()->callOnDisable(); - return Local(); - } - Catch; -} +PLUGINAPI_MACRO(onLoad, ENGINE_DATA()->callOnLoad(); return Local()); -Local PluginAPI::getLogger(Arguments const& args) { - try { - return LoggerAPI::newLoggerAPI(); - } - Catch; -} +PLUGINAPI_MACRO(onEnable, ENGINE_DATA()->callOnEnable(); return Local()); -Local PluginAPI::isEnabled(Arguments const& args) { - try { - return Boolean::newBoolean(ENGINE_DATA()->mPlugin->isEnabled()); - } - Catch; -} +PLUGINAPI_MACRO(onDisable, ENGINE_DATA()->callOnDisable(); return Local()); -Local PluginAPI::getPluginLoader(Arguments const& args) { return Local(); } +PLUGINAPI_MACRO(getLogger, return LoggerAPI::newLoggerAPI()); -Local PluginAPI::getServer(Arguments const& args) { return Local(); } +PLUGINAPI_MACRO(isEnabled, return Boolean::newBoolean(ENGINE_DATA()->mPlugin->isEnabled())); -Local PluginAPI::getName(Arguments const& args) { - try { - return String::newString(ENGINE_DATA()->mPlugin->getName()); - } - Catch; -} +PLUGINAPI_MACRO(getPluginLoader, return Local()); // todo -Local PluginAPI::getCommand(Arguments const& args) { return Local(); } +PLUGINAPI_MACRO(getServer, return Local()); // todo -Local 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()); // todo + +PLUGINAPI_MACRO(getDataFolder, return String::newString(ENGINE_DATA()->mPlugin->getDataFolder().string())); -Local PluginAPI::registerEvent(Arguments const& args) { return Local(); } +PLUGINAPI_MACRO(registerEvent, return Local()); // todo +#undef PLUGINAPI_MACRO } // namespace jse \ No newline at end of file diff --git a/src/API/PluginDescription.cc b/src/API/PluginDescription.cc index da342c9b..7ae4a818 100644 --- a/src/API/PluginDescription.cc +++ b/src/API/PluginDescription.cc @@ -5,7 +5,6 @@ #include "Utils/Convert.h" - namespace jse { ClassDefine PluginDescriptionAPIClass = @@ -31,120 +30,53 @@ ClassDefine PluginDescriptionAPIClass = .instanceFunction("getPermissions", &PluginDescriptionAPI::getPermissions) .build(); +#define PLUGINDESCRIPTIONAPI_MACRO(FUNC_NAME, ...) \ + Local PluginDescriptionAPI::FUNC_NAME(Arguments const& args) { \ + try { \ + __VA_ARGS__; \ + } \ + Catch; \ + } -Local PluginDescriptionAPI::toString(Arguments const& args) { - return String::newString(""); -} +#define GETDESCRIPTION_MACRO(FUNC_NAME) return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().FUNC_NAME()); +PLUGINDESCRIPTIONAPI_MACRO(toString, return String::newString("")); -Local PluginDescriptionAPI::getName(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getName()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getName, GETDESCRIPTION_MACRO(getName)); -Local PluginDescriptionAPI::getVersion(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getVersion()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getVersion, GETDESCRIPTION_MACRO(getVersion)); -Local PluginDescriptionAPI::getFullName(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getFullName()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getFullName, GETDESCRIPTION_MACRO(getFullName)); -Local PluginDescriptionAPI::getAPIVersion(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getAPIVersion()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getAPIVersion, GETDESCRIPTION_MACRO(getAPIVersion)); -Local PluginDescriptionAPI::getDescription(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getDescription()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getDescription, GETDESCRIPTION_MACRO(getDescription)); -Local PluginDescriptionAPI::getLoad(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getLoad()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getLoad, GETDESCRIPTION_MACRO(getLoad)); -Local PluginDescriptionAPI::getAuthors(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getAuthors()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getAuthors, GETDESCRIPTION_MACRO(getAuthors)); -Local PluginDescriptionAPI::getContributors(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getContributors()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getContributors, GETDESCRIPTION_MACRO(getContributors)); -Local PluginDescriptionAPI::getWebsite(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getWebsite()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getWebsite, GETDESCRIPTION_MACRO(getWebsite)); -Local PluginDescriptionAPI::getPrefix(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getPrefix()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getPrefix, GETDESCRIPTION_MACRO(getPrefix)); -Local PluginDescriptionAPI::getProvides(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getProvides()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getProvides, GETDESCRIPTION_MACRO(getProvides)); -Local PluginDescriptionAPI::getDepend(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getDepend()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getDepend, GETDESCRIPTION_MACRO(getDepend)); -Local PluginDescriptionAPI::getSoftDepend(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getSoftDepend()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getSoftDepend, GETDESCRIPTION_MACRO(getSoftDepend)); -Local PluginDescriptionAPI::getLoadBefore(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getLoadBefore()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getLoadBefore, GETDESCRIPTION_MACRO(getLoadBefore)); -Local PluginDescriptionAPI::getDefaultPermission(Arguments const& args) { - try { - return ConvertToScriptX(ENGINE_DATA()->mPlugin->getDescription().getDefaultPermission()); - } - Catch; -} +PLUGINDESCRIPTIONAPI_MACRO(getDefaultPermission, GETDESCRIPTION_MACRO(getDefaultPermission)); -Local PluginDescriptionAPI::getCommands(Arguments const& args) { return Local(); } +PLUGINDESCRIPTIONAPI_MACRO(getCommands, return Local()); // todo -Local PluginDescriptionAPI::getPermissions(Arguments const& args) { return Local(); } +PLUGINDESCRIPTIONAPI_MACRO(getPermissions, return Local()); // todo +#undef PLUGINDESCRIPTIONAPI_MACRO +#undef GETDESCRIPTION_MACRO } // namespace jse \ No newline at end of file