00001 #ifndef PLUGINLOADER_H
00002 #define PLUGINLOADER_H
00003
00004 #include <kore/kore.h>
00005 #include <kore/serviceprovider.h>
00006
00007 namespace kore
00008 {
00009
00010 class Plugin;
00026 typedef Plugin* (*PluginFuncType)(HMODULE libHandle, const char* libName, const char* libPath, int libFlags );
00027
00032 class KORE_API PluginLoader: public ServiceProvider
00033 {
00034 public:
00038 PluginLoader();
00042 ~PluginLoader();
00054 virtual Plugin* openPlugin(const char* libName, const char* libPath = 0, int libFlags = 0);
00066 virtual Plugin* runPlugin(const char* libName, const char* libPath = 0, int libFlags = 0);
00071 virtual void closePlugin(Plugin* plugin);
00076 virtual const char* lastError();
00077
00085 virtual char* libName2fileName(const char* libName);
00093 virtual char* fileName2libName(const char* fileName);
00094 private:
00095
00096 const Version* _loaderVersion;
00097
00098 const Version* _loaderAPIVersion;
00099
00100 const Info* _loaderInfo;
00101
00102 const Service* _loaderService;
00103
00104 char _lastError[100];
00105 };
00106
00107 };
00108
00109 #endif