summaryrefslogtreecommitdiffstats
path: root/src/plugins/plugin.h
diff options
context:
space:
mode:
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;
};
-