00001
00005 #ifndef __SO3_PLUGIN_H__
00006 #define __SO3_PLUGIN_H__
00007
00008 #include "../SCOLBasic/SO3Prerequisites.h"
00009
00010 namespace SO3
00011 {
00012
00013 struct _SO3_Export SPluginInfos
00014 {
00015 std::string fileName;
00016 std::string name;
00017 std::string version;
00018 std::string author;
00019 std::string authorEmail;
00020 std::string description;
00021 std::string urlLink;
00022 };
00023
00024 typedef void (*SO3_START_PLUGIN)(void);
00025 typedef void (*SO3_STOP_PLUGIN)(void);
00026
00029 class _SO3_Export SPlugin
00030 {
00031 public:
00032 protected:
00033 SPluginInfos pluginInfos;
00034 bool isLoaded;
00035 SO3_PLUGIN_INSTANCE instanceId;
00036 private:
00037
00038 public:
00042 SPlugin(const std::string& pluginName);
00043
00047 ~SPlugin();
00048
00052 virtual void Load();
00053
00057 virtual void Unload();
00058
00062 bool IsLoaded();
00063
00067 virtual void* GetSymbol(const char* symbolName) const throw();
00068
00072 SPluginInfos GetInfo();
00073 protected:
00074 private:
00075 };
00076
00077 }
00078
00079 #endif