summaryrefslogtreecommitdiffstats
path: root/src/plugins/plugin.h
diff options
context:
space:
mode:
authorerihel <erihel@gmail.com>2012-07-19 19:19:21 +0200
committererihel <erihel@gmail.com>2012-07-19 19:19:21 +0200
commitd56db5f4e4a8e0d572bf3d682619bb25aebe4120 (patch)
treebb670182f3273a5a3bb18969cf8f25023fa381f0 /src/plugins/plugin.h
parent0e4b070b5f10c0004cfbfa234e3634357b070cba (diff)
downloadcolobot-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.h25
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;
};
-