diff options
author | erihel <erihel@gmail.com> | 2012-07-19 19:19:21 +0200 |
---|---|---|
committer | erihel <erihel@gmail.com> | 2012-07-19 19:19:21 +0200 |
commit | d56db5f4e4a8e0d572bf3d682619bb25aebe4120 (patch) | |
tree | bb670182f3273a5a3bb18969cf8f25023fa381f0 /src/plugins/plugin.h | |
parent | 0e4b070b5f10c0004cfbfa234e3634357b070cba (diff) | |
download | colobot-d56db5f4e4a8e0d572bf3d682619bb25aebe4120.tar.gz colobot-d56db5f4e4a8e0d572bf3d682619bb25aebe4120.tar.bz2 colobot-d56db5f4e4a8e0d572bf3d682619bb25aebe4120.zip |
* Chaned plugin interface
* Added plugin class for plugin loading
* Added plugin loading test
Diffstat (limited to 'src/plugins/plugin.h')
-rw-r--r-- | src/plugins/plugin.h | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/plugins/plugin.h b/src/plugins/plugin.h index f238122..e7d4b12 100644 --- a/src/plugins/plugin.h +++ b/src/plugins/plugin.h @@ -19,15 +19,28 @@ #pragma once +#include <ltdl.h> +#include <string> -#define PLUGIN_INTERFACE(class_type, interface_type) \ - extern "C" interface_type* installPlugin() { return (interface_type *)new class_type(); } \ - extern "C" void uninstallPlugin(class_type *_class) { delete _class; } +#include <common/logger.h> + +#include "plugininterface.h" class CPlugin { public: - virtual char* PluginName() = 0; - virtual int PluginVersion() = 0; + CPlugin(std::string filename); + + char* GetName(); + int GetVersion(); + bool UnloadPlugin(); + bool LoadPlugin(); + bool IsLoaded(); + + + private: + CPluginInterface* mInterface; + std::string mFilename; + lt_dlhandle mHandle; + bool mLoaded; }; - |