/* Copyright 2010 sss * This file is part of evil_core. * * evil_core is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * evil_core is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with evil_core. If not, see .*/ #ifndef MODULE_H_INCLUDED #define MODULE_H_INCLUDED typedef PLUGININFO* (*set_plugin_info)(); typedef int (*load)(PLUGINLINK *link); typedef int (*on_modules_loaded)(); typedef int (*unload)(); class plugin { public: struct exported_functions_s { load Load; on_modules_loaded OnModulesLoaded; unload Unload; set_plugin_info SetPluginInfo; exported_functions_s() { Load =NULL; OnModulesLoaded = NULL; Unload = NULL; SetPluginInfo = NULL; } }; ACE_DLL *get_plugin(); // void set_plugin(); const PLUGININFO *get_plugininfo(); const exported_functions_s *get_exported_functions(); const int get_plugin_id(); const std::list get_event_list(); int register_event(int); plugin(ACE_DLL *lib, PLUGININFO *info, exported_functions_s *funcs); ~plugin(); private: ACE_DLL *plug; exported_functions_s *exported_funcs; PLUGININFO *plugininfo; int pluginid; std::list events; }; #endif // MODULE_H_INCLUDED