diff --git a/library/PluginManager.cpp b/library/PluginManager.cpp index af0375963..2dad07797 100644 --- a/library/PluginManager.cpp +++ b/library/PluginManager.cpp @@ -353,7 +353,6 @@ bool Plugin::load(color_ostream &con) plugin_enable = (command_result (*)(color_ostream &,bool)) LookupPlugin(plug, "plugin_enable"); plugin_is_enabled = (bool*) LookupPlugin(plug, "plugin_is_enabled"); plugin_eval_ruby = (command_result (*)(color_ostream &, const char*)) LookupPlugin(plug, "plugin_eval_ruby"); - plugin_get_exports = (PluginExports* (*)(void)) LookupPlugin(plug, "plugin_get_exports"); index_lua(plug); plugin_lib = plug; commands.clear(); @@ -611,16 +610,6 @@ Plugin::plugin_state Plugin::getState() const return state; } -PluginExports *Plugin::getExports() -{ - if (!plugin_get_exports) - return NULL; - PluginExports *exports = plugin_get_exports(); - if (!exports->bind(plugin_lib)) - return NULL; - return exports; -}; - void Plugin::index_lua(DFLibrary *lib) { if (auto cmdlist = (CommandReg*)LookupPlugin(lib, "plugin_lua_commands")) @@ -793,19 +782,6 @@ void Plugin::push_function(lua_State *state, LuaFunction *fn) lua_pushcclosure(state, lua_fun_wrapper, 4); } -bool PluginExports::bind(DFLibrary *lib) -{ - for (auto it = bindings.begin(); it != bindings.end(); ++it) - { - std::string name = it->first; - void** dest = it->second; - *dest = LookupPlugin(lib, name.c_str()); - if (!*dest) - return false; - } - return true; -} - PluginManager::PluginManager(Core * core) : core(core) { plugin_mutex = new recursive_mutex(); @@ -960,16 +936,6 @@ Plugin *PluginManager::getPluginByCommand(const std::string &command) return NULL; } -void *PluginManager::getPluginExports(const std::string &name) -{ - Plugin *plug = getPluginByName(name); - if (!plug) - return NULL; - if (plug->getState() != Plugin::plugin_state::PS_LOADED) - return NULL; - return plug->getExports(); -} - // FIXME: handle name collisions... command_result PluginManager::InvokeCommand(color_ostream &out, const std::string & command, std::vector & parameters) { diff --git a/library/include/PluginManager.h b/library/include/PluginManager.h index aba6aaa0f..42bebb2d3 100644 --- a/library/include/PluginManager.h +++ b/library/include/PluginManager.h @@ -50,7 +50,6 @@ namespace df namespace DFHack { class Core; - class PluginExports; class PluginManager; class virtual_identity; class RPCService; @@ -170,7 +169,6 @@ namespace DFHack command_result invoke(color_ostream &out, const std::string & command, std::vector & parameters); bool can_invoke_hotkey(const std::string & command, df::viewscreen *top ); plugin_state getState () const; - PluginExports *getExports(); RPCService *rpc_connect(color_ostream &out); @@ -237,16 +235,7 @@ namespace DFHack command_result (*plugin_enable)(color_ostream &, bool); RPCService* (*plugin_rpcconnect)(color_ostream &); command_result (*plugin_eval_ruby)(color_ostream &, const char*); - PluginExports* (*plugin_get_exports)(void); }; - class DFHACK_EXPORT PluginExports { - protected: - friend class Plugin; - std::map bindings; - bool bind(DFLibrary* lib); - }; - #define PLUGIN_EXPORT_BIND(sym) bindings.insert(std::pair(#sym, (void**)&this->sym)) - #define PLUGIN_EXPORT_BINDN(sym, name) bindings.insert(std::pair(name, (void**)&this->sym)) class DFHACK_EXPORT PluginManager { // PRIVATE METHODS @@ -275,7 +264,6 @@ namespace DFHack Plugin *getPluginByName (const std::string &name) { return (*this)[name]; } Plugin *getPluginByCommand (const std::string &command); - void *getPluginExports(const std::string &name); command_result InvokeCommand(color_ostream &out, const std::string & command, std::vector & parameters); bool CanInvokeHotkey(const std::string &command, df::viewscreen *top); Plugin* operator[] (const std::string name); @@ -324,17 +312,6 @@ namespace DFHack DFhackDataExport bool plugin_is_enabled = false; \ bool &varname = plugin_is_enabled; -#define DFHACK_PLUGIN_EXPORTS(clsname) \ - DFhackCExport PluginExports* plugin_get_exports() \ - { \ - static clsname* instance = NULL; \ - if (!instance) \ - instance = new clsname; \ - return (PluginExports*)instance; \ - } -#define GET_PLUGIN_EXPORTS(plugname, clsname) \ - (clsname*)DFHack::Core::getInstance().getPluginManager()->getPluginExports(plugname) - #define DFHACK_PLUGIN_LUA_COMMANDS \ DFhackCExport const DFHack::CommandReg plugin_lua_commands[] = #define DFHACK_PLUGIN_LUA_FUNCTIONS \