Mercurial > irccd
changeset 836:e7a37a331753
irccd: pass plugin by reference in javascript api
line wrap: on
line diff
--- a/libirccd-js/irccd/js/api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -82,7 +82,7 @@ * \param bot the irccd instance * \param plugin the plugin */ - virtual void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) = 0; + virtual void load(daemon::bot& bot, js::plugin& plugin) = 0; }; } // !js
--- a/libirccd-js/irccd/js/directory_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/directory_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -377,28 +377,28 @@ return "Irccd.Directory"; } -void directory_api::load(daemon::bot&, std::shared_ptr<plugin> plugin) +void directory_api::load(daemon::bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); - duk_get_global_string(plugin->get_context(), "Irccd"); - duk_push_c_function(plugin->get_context(), Directory_constructor, 2); - duk_put_number_list(plugin->get_context(), -1, constants); - duk_put_function_list(plugin->get_context(), -1, functions); + duk_get_global_string(plugin.get_context(), "Irccd"); + duk_push_c_function(plugin.get_context(), Directory_constructor, 2); + duk_put_number_list(plugin.get_context(), -1, constants); + duk_put_function_list(plugin.get_context(), -1, functions); #if BOOST_OS_WINDOWS - duk_push_string(plugin->get_context(), "\\"); + duk_push_string(plugin.get_context(), "\\"); #else - duk_push_string(plugin->get_context(), "/"); + duk_push_string(plugin.get_context(), "/"); #endif - duk_put_prop_string(plugin->get_context(), -2, "separator"); + duk_put_prop_string(plugin.get_context(), -2, "separator"); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, methods); - duk_put_prop_string(plugin->get_context(), -2, "prototype"); - duk_put_prop_string(plugin->get_context(), -2, "Directory"); - duk_pop(plugin->get_context()); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, methods); + duk_put_prop_string(plugin.get_context(), -2, "prototype"); + duk_put_prop_string(plugin.get_context(), -2, "Directory"); + duk_pop(plugin.get_context()); } // }}}
--- a/libirccd-js/irccd/js/directory_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/directory_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -42,7 +42,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; } // !irccd::js
--- a/libirccd-js/irccd/js/elapsed_timer_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/elapsed_timer_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -162,19 +162,19 @@ return "Irccd.ElapsedTimer"; } -void elapsed_timer_api::load(bot&, std::shared_ptr<plugin> plugin) +void elapsed_timer_api::load(bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); - duk_get_global_string(plugin->get_context(), "Irccd"); - duk_push_c_function(plugin->get_context(), ElapsedTimer_constructor, 0); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, methods); - duk_push_c_function(plugin->get_context(), ElapsedTimer_destructor, 1); - duk_set_finalizer(plugin->get_context(), -2); - duk_put_prop_string(plugin->get_context(), -2, "prototype"); - duk_put_prop_string(plugin->get_context(), -2, "ElapsedTimer"); - duk_pop(plugin->get_context()); + duk_get_global_string(plugin.get_context(), "Irccd"); + duk_push_c_function(plugin.get_context(), ElapsedTimer_constructor, 0); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, methods); + duk_push_c_function(plugin.get_context(), ElapsedTimer_destructor, 1); + duk_set_finalizer(plugin.get_context(), -2); + duk_put_prop_string(plugin.get_context(), -2, "prototype"); + duk_put_prop_string(plugin.get_context(), -2, "ElapsedTimer"); + duk_pop(plugin.get_context()); } // }}}
--- a/libirccd-js/irccd/js/elapsed_timer_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/elapsed_timer_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -42,7 +42,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; } // !irccd::js
--- a/libirccd-js/irccd/js/file_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/file_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -683,23 +683,23 @@ return "Irccd.File"; } -void file_api::load(bot&, std::shared_ptr<plugin> plugin) +void file_api::load(bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); - duk_get_global_string(plugin->get_context(), "Irccd"); - duk_push_c_function(plugin->get_context(), File_constructor, 2); - duk_put_number_list(plugin->get_context(), -1, constants); - duk_put_function_list(plugin->get_context(), -1, functions); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, methods); - duk_push_c_function(plugin->get_context(), File_destructor, 1); - duk_set_finalizer(plugin->get_context(), -2); - duk_dup(plugin->get_context(), -1); - duk_put_global_string(plugin->get_context(), prototype.data()); - duk_put_prop_string(plugin->get_context(), -2, "prototype"); - duk_put_prop_string(plugin->get_context(), -2, "File"); - duk_pop(plugin->get_context()); + duk_get_global_string(plugin.get_context(), "Irccd"); + duk_push_c_function(plugin.get_context(), File_constructor, 2); + duk_put_number_list(plugin.get_context(), -1, constants); + duk_put_function_list(plugin.get_context(), -1, functions); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, methods); + duk_push_c_function(plugin.get_context(), File_destructor, 1); + duk_set_finalizer(plugin.get_context(), -2); + duk_dup(plugin.get_context(), -1); + duk_put_global_string(plugin.get_context(), prototype.data()); + duk_put_prop_string(plugin.get_context(), -2, "prototype"); + duk_put_prop_string(plugin.get_context(), -2, "File"); + duk_pop(plugin.get_context()); } // }}}
--- a/libirccd-js/irccd/js/file_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/file_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -153,7 +153,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; namespace duk {
--- a/libirccd-js/irccd/js/irccd_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/irccd_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -190,46 +190,46 @@ return "Irccd"; } -void irccd_api::load(bot& bot, std::shared_ptr<plugin> plugin) +void irccd_api::load(bot& bot, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); // irccd. - duk_push_object(plugin->get_context()); + duk_push_object(plugin.get_context()); // Version. - duk_push_object(plugin->get_context()); - duk::push(plugin->get_context(), IRCCD_VERSION_MAJOR); - duk_put_prop_string(plugin->get_context(), -2, "major"); - duk::push(plugin->get_context(), IRCCD_VERSION_MINOR); - duk_put_prop_string(plugin->get_context(), -2, "minor"); - duk::push(plugin->get_context(), IRCCD_VERSION_PATCH); - duk_put_prop_string(plugin->get_context(), -2, "patch"); - duk_put_prop_string(plugin->get_context(), -2, "version"); + duk_push_object(plugin.get_context()); + duk::push(plugin.get_context(), IRCCD_VERSION_MAJOR); + duk_put_prop_string(plugin.get_context(), -2, "major"); + duk::push(plugin.get_context(), IRCCD_VERSION_MINOR); + duk_put_prop_string(plugin.get_context(), -2, "minor"); + duk::push(plugin.get_context(), IRCCD_VERSION_PATCH); + duk_put_prop_string(plugin.get_context(), -2, "patch"); + duk_put_prop_string(plugin.get_context(), -2, "version"); // Create the system_error that inherits from Error. - duk_push_c_function(plugin->get_context(), SystemError_constructor, 2); + duk_push_c_function(plugin.get_context(), SystemError_constructor, 2); // Put errno codes into the irccd.system_error object. for (const auto& [k, v] : errors) { - duk_push_int(plugin->get_context(), v); - duk_put_prop_string(plugin->get_context(), -2, k.c_str()); + duk_push_int(plugin.get_context(), v); + duk_put_prop_string(plugin.get_context(), -2, k.c_str()); } - duk_push_object(plugin->get_context()); - duk_get_global_string(plugin->get_context(), "Error"); - duk_get_prop_string(plugin->get_context(), -1, "prototype"); - duk_remove(plugin->get_context(), -2); - duk_set_prototype(plugin->get_context(), -2); - duk_put_prop_string(plugin->get_context(), -2, "prototype"); - duk_put_prop_string(plugin->get_context(), -2, "SystemError"); + duk_push_object(plugin.get_context()); + duk_get_global_string(plugin.get_context(), "Error"); + duk_get_prop_string(plugin.get_context(), -1, "prototype"); + duk_remove(plugin.get_context(), -2); + duk_set_prototype(plugin.get_context(), -2); + duk_put_prop_string(plugin.get_context(), -2, "prototype"); + duk_put_prop_string(plugin.get_context(), -2, "SystemError"); // Set irccd as global. - duk_put_global_string(plugin->get_context(), "Irccd"); + duk_put_global_string(plugin.get_context(), "Irccd"); // Store global instance. - duk_push_pointer(plugin->get_context(), &bot); - duk_put_global_string(plugin->get_context(), DUK_HIDDEN_SYMBOL("irccd-ref")); + duk_push_pointer(plugin.get_context(), &bot); + duk_put_global_string(plugin.get_context(), DUK_HIDDEN_SYMBOL("irccd-ref")); } auto duk::type_traits<bot>::self(duk_context *ctx) -> bot&
--- a/libirccd-js/irccd/js/irccd_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/irccd_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -55,7 +55,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; namespace duk {
--- a/libirccd-js/irccd/js/logger_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/logger_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -135,15 +135,15 @@ return "Irccd.Logger"; } -void logger_api::load(bot&, std::shared_ptr<plugin> plugin) +void logger_api::load(bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); - duk_get_global_string(plugin->get_context(), "Irccd"); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, functions); - duk_put_prop_string(plugin->get_context(), -2, "Logger"); - duk_pop(plugin->get_context()); + duk_get_global_string(plugin.get_context(), "Irccd"); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, functions); + duk_put_prop_string(plugin.get_context(), -2, "Logger"); + duk_pop(plugin.get_context()); } } // !irccd::js
--- a/libirccd-js/irccd/js/logger_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/logger_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -42,7 +42,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; } // !irccd::js
--- a/libirccd-js/irccd/js/plugin.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/plugin.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -357,7 +357,7 @@ auto plg = std::make_shared<plugin>(std::string(id), std::string(path)); for (const auto& mod : modules_) - mod->load(bot_, plg); + mod->load(bot_, *plg); plg->open();
--- a/libirccd-js/irccd/js/plugin_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/plugin_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -385,48 +385,48 @@ return "Irccd.Plugin"; } -void plugin_api::load(bot&, std::shared_ptr<plugin> plugin) +void plugin_api::load(bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); // Store plugin. - duk_push_pointer(plugin->get_context(), plugin.get()); - duk_put_global_string(plugin->get_context(), signature.data()); + duk_push_pointer(plugin.get_context(), &plugin); + duk_put_global_string(plugin.get_context(), signature.data()); - duk_get_global_string(plugin->get_context(), "Irccd"); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, functions); + duk_get_global_string(plugin.get_context(), "Irccd"); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, functions); // 'config' property. - duk_push_string(plugin->get_context(), "config"); - duk_push_c_function(plugin->get_context(), get_config, 0); - duk_push_c_function(plugin->get_context(), set_config, 1); - duk_def_prop(plugin->get_context(), -4, DUK_DEFPROP_HAVE_GETTER | DUK_DEFPROP_HAVE_SETTER); + duk_push_string(plugin.get_context(), "config"); + duk_push_c_function(plugin.get_context(), get_config, 0); + duk_push_c_function(plugin.get_context(), set_config, 1); + duk_def_prop(plugin.get_context(), -4, DUK_DEFPROP_HAVE_GETTER | DUK_DEFPROP_HAVE_SETTER); // 'format' property. - duk_push_string(plugin->get_context(), "format"); - duk_push_c_function(plugin->get_context(), get_format, 0); - duk_push_c_function(plugin->get_context(), set_format, 1); - duk_def_prop(plugin->get_context(), -4, DUK_DEFPROP_HAVE_GETTER | DUK_DEFPROP_HAVE_SETTER); + duk_push_string(plugin.get_context(), "format"); + duk_push_c_function(plugin.get_context(), get_format, 0); + duk_push_c_function(plugin.get_context(), set_format, 1); + duk_def_prop(plugin.get_context(), -4, DUK_DEFPROP_HAVE_GETTER | DUK_DEFPROP_HAVE_SETTER); // 'format' property. - duk_push_string(plugin->get_context(), "paths"); - duk_push_c_function(plugin->get_context(), get_paths, 0); - duk_push_c_function(plugin->get_context(), set_paths, 1); - duk_def_prop(plugin->get_context(), -4, DUK_DEFPROP_HAVE_GETTER | DUK_DEFPROP_HAVE_SETTER); + duk_push_string(plugin.get_context(), "paths"); + duk_push_c_function(plugin.get_context(), get_paths, 0); + duk_push_c_function(plugin.get_context(), set_paths, 1); + duk_def_prop(plugin.get_context(), -4, DUK_DEFPROP_HAVE_GETTER | DUK_DEFPROP_HAVE_SETTER); // PluginError function. - duk_push_c_function(plugin->get_context(), PluginError_constructor, 2); - duk_push_object(plugin->get_context()); - duk_get_global_string(plugin->get_context(), "Error"); - duk_get_prop_string(plugin->get_context(), -1, "prototype"); - duk_remove(plugin->get_context(), -2); - duk_set_prototype(plugin->get_context(), -2); - duk_put_prop_string(plugin->get_context(), -2, "prototype"); - duk_put_prop_string(plugin->get_context(), -2, "PluginError"); + duk_push_c_function(plugin.get_context(), PluginError_constructor, 2); + duk_push_object(plugin.get_context()); + duk_get_global_string(plugin.get_context(), "Error"); + duk_get_prop_string(plugin.get_context(), -1, "prototype"); + duk_remove(plugin.get_context(), -2); + duk_set_prototype(plugin.get_context(), -2); + duk_put_prop_string(plugin.get_context(), -2, "prototype"); + duk_put_prop_string(plugin.get_context(), -2, "PluginError"); - duk_put_prop_string(plugin->get_context(), -2, "Plugin"); - duk_pop(plugin->get_context()); + duk_put_prop_string(plugin.get_context(), -2, "Plugin"); + duk_pop(plugin.get_context()); } namespace duk {
--- a/libirccd-js/irccd/js/plugin_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/plugin_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -43,7 +43,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; namespace duk {
--- a/libirccd-js/irccd/js/server_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/server_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -821,34 +821,34 @@ return "Irccd.Server"; } -void server_api::load(bot&, std::shared_ptr<plugin> plugin) +void server_api::load(bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); - duk_get_global_string(plugin->get_context(), "Irccd"); + duk_get_global_string(plugin.get_context(), "Irccd"); // ServerError function. - duk_push_c_function(plugin->get_context(), ServerError_constructor, 2); - duk_push_object(plugin->get_context()); - duk_get_global_string(plugin->get_context(), "Error"); - duk_get_prop_string(plugin->get_context(), -1, "prototype"); - duk_remove(plugin->get_context(), -2); - duk_set_prototype(plugin->get_context(), -2); - duk_put_prop_string(plugin->get_context(), -2, "prototype"); - duk_put_prop_string(plugin->get_context(), -2, "ServerError"); + duk_push_c_function(plugin.get_context(), ServerError_constructor, 2); + duk_push_object(plugin.get_context()); + duk_get_global_string(plugin.get_context(), "Error"); + duk_get_prop_string(plugin.get_context(), -1, "prototype"); + duk_remove(plugin.get_context(), -2); + duk_set_prototype(plugin.get_context(), -2); + duk_put_prop_string(plugin.get_context(), -2, "prototype"); + duk_put_prop_string(plugin.get_context(), -2, "ServerError"); // Server constructor. - duk_push_c_function(plugin->get_context(), Server_constructor, 1); - duk_put_function_list(plugin->get_context(), -1, functions); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, methods); - duk_push_c_function(plugin->get_context(), Server_destructor, 1); - duk_set_finalizer(plugin->get_context(), -2); - duk_dup_top(plugin->get_context()); - duk_put_global_string(plugin->get_context(), prototype.data()); - duk_put_prop_string(plugin->get_context(), -2, "prototype"); - duk_put_prop_string(plugin->get_context(), -2, "Server"); - duk_pop(plugin->get_context()); + duk_push_c_function(plugin.get_context(), Server_constructor, 1); + duk_put_function_list(plugin.get_context(), -1, functions); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, methods); + duk_push_c_function(plugin.get_context(), Server_destructor, 1); + duk_set_finalizer(plugin.get_context(), -2); + duk_dup_top(plugin.get_context()); + duk_put_global_string(plugin.get_context(), prototype.data()); + duk_put_prop_string(plugin.get_context(), -2, "prototype"); + duk_put_prop_string(plugin.get_context(), -2, "Server"); + duk_pop(plugin.get_context()); } namespace duk {
--- a/libirccd-js/irccd/js/server_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/server_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -44,7 +44,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; namespace duk {
--- a/libirccd-js/irccd/js/system_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/system_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -318,15 +318,15 @@ return "Irccd.System"; } -void system_api::load(bot&, std::shared_ptr<plugin> plugin) +void system_api::load(bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); - duk_get_global_string(plugin->get_context(), "Irccd"); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, functions); - duk_put_prop_string(plugin->get_context(), -2, "System"); - duk_pop(plugin->get_context()); + duk_get_global_string(plugin.get_context(), "Irccd"); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, functions); + duk_put_prop_string(plugin.get_context(), -2, "System"); + duk_pop(plugin.get_context()); } } // !irccd::js
--- a/libirccd-js/irccd/js/system_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/system_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -42,7 +42,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; } // !irccd::js
--- a/libirccd-js/irccd/js/timer_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/timer_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -295,22 +295,22 @@ return "Irccd.Timer"; } -void timer_api::load(bot&, std::shared_ptr<plugin> plugin) +void timer_api::load(bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); - duk_get_global_string(plugin->get_context(), "Irccd"); - duk_push_c_function(plugin->get_context(), Timer_constructor, 3); - duk_put_number_list(plugin->get_context(), -1, constants); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, methods); - duk_put_prop_string(plugin->get_context(), -2, "prototype"); - duk_put_prop_string(plugin->get_context(), -2, "Timer"); - duk_pop(plugin->get_context()); - duk_push_global_stash(plugin->get_context()); - duk_push_object(plugin->get_context()); - duk_put_prop_string(plugin->get_context(), -2, table.data()); - duk_pop(plugin->get_context()); + duk_get_global_string(plugin.get_context(), "Irccd"); + duk_push_c_function(plugin.get_context(), Timer_constructor, 3); + duk_put_number_list(plugin.get_context(), -1, constants); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, methods); + duk_put_prop_string(plugin.get_context(), -2, "prototype"); + duk_put_prop_string(plugin.get_context(), -2, "Timer"); + duk_pop(plugin.get_context()); + duk_push_global_stash(plugin.get_context()); + duk_push_object(plugin.get_context()); + duk_put_prop_string(plugin.get_context(), -2, table.data()); + duk_pop(plugin.get_context()); } } // !irccd::js
--- a/libirccd-js/irccd/js/timer_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/timer_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -42,7 +42,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; } // !irccd::js
--- a/libirccd-js/irccd/js/unicode_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/unicode_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -151,15 +151,15 @@ return "Irccd.Unicode"; } -void unicode_api::load(bot&, std::shared_ptr<plugin> plugin) +void unicode_api::load(bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); - duk_get_global_string(plugin->get_context(), "Irccd"); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, functions); - duk_put_prop_string(plugin->get_context(), -2, "Unicode"); - duk_pop(plugin->get_context()); + duk_get_global_string(plugin.get_context(), "Irccd"); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, functions); + duk_put_prop_string(plugin.get_context(), -2, "Unicode"); + duk_pop(plugin.get_context()); } } // !irccd::js
--- a/libirccd-js/irccd/js/unicode_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/unicode_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -42,7 +42,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; } // !irccd::js
--- a/libirccd-js/irccd/js/util_api.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/util_api.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -340,15 +340,15 @@ return "Irccd.Util"; } -void util_api::load(bot&, std::shared_ptr<plugin> plugin) +void util_api::load(bot&, plugin& plugin) { - duk::stack_guard sa(plugin->get_context()); + duk::stack_guard sa(plugin.get_context()); - duk_get_global_string(plugin->get_context(), "Irccd"); - duk_push_object(plugin->get_context()); - duk_put_function_list(plugin->get_context(), -1, functions); - duk_put_prop_string(plugin->get_context(), -2, "Util"); - duk_pop(plugin->get_context()); + duk_get_global_string(plugin.get_context(), "Irccd"); + duk_push_object(plugin.get_context()); + duk_put_function_list(plugin.get_context(), -1, functions); + duk_put_prop_string(plugin.get_context(), -2, "Util"); + duk_pop(plugin.get_context()); } } // !irccd::js
--- a/libirccd-js/irccd/js/util_api.hpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-js/irccd/js/util_api.hpp Thu Apr 25 20:59:32 2019 +0200 @@ -42,7 +42,7 @@ /** * \copydoc api::load */ - void load(daemon::bot& bot, std::shared_ptr<plugin> plugin) override; + void load(daemon::bot& bot, js::plugin& plugin) override; }; } // !irccd::js
--- a/libirccd-test/irccd/test/js_fixture.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-test/irccd/test/js_fixture.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -24,7 +24,7 @@ : plugin_(new js::plugin("test", path)) { for (const auto& f : js::api::registry()) - f()->load(bot_, plugin_); + f()->load(bot_, *plugin_); if (!path.empty()) plugin_->open();
--- a/libirccd-test/irccd/test/js_plugin_fixture.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/libirccd-test/irccd/test/js_plugin_fixture.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -58,7 +58,7 @@ server_->clear(); for (const auto& f : js::api::registry()) - f()->load(bot_, plugin_); + f()->load(bot_, *plugin_); plugin_->open(); }
--- a/tests/src/libirccd-js/js-plugin/main.cpp Thu Apr 25 20:58:42 2019 +0200 +++ b/tests/src/libirccd-js/js-plugin/main.cpp Thu Apr 25 20:59:32 2019 +0200 @@ -44,7 +44,7 @@ plugin_ = std::make_unique<plugin>("test", path); for (const auto& f : api::registry()) - f()->load(bot_, plugin_); + f()->load(bot_, *plugin_); plugin_->open(); }