00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __WEIPLUGIN_H__
00021 #define __WEIPLUGIN_H__
00022 #include <string>
00023 #include <boost/shared_ptr.hpp>
00024 #include "weStrings.h"
00025
00026 using namespace boost;
00027 using namespace std;
00028
00044 class iwePlugin
00045 {
00046 public:
00047
00055 iwePlugin(void* handle = NULL) { usageCount = 0; libHandle = handle; };
00056
00062 virtual ~iwePlugin() {};
00063
00071 virtual shared_ptr<iwePlugin>& GetRef() { return (* new shared_ptr<iwePlugin>(this)); };
00072
00085 virtual void* GetInterface(const string& ifName) = 0;
00086
00094 virtual const string InterfaceName();
00095
00103 virtual WeStringList InterfaceList();
00104
00112 virtual const string GetDesc() = 0;
00113
00123 virtual const string GetID() = 0;
00124
00135 virtual char** GetIcon() = 0;
00136
00137 #ifndef __DOXYGEN__
00138 protected:
00139 int usageCount;
00140 void* libHandle;
00141
00142 private:
00143 iwePlugin(iwePlugin&) {};
00144 iwePlugin& operator=(iwePlugin&) { return *this; };
00145 #endif // __DOXYGEN__
00146 };
00147
00156 typedef void* (*fnWePluginFactory)(void);
00157
00175 extern shared_ptr<iwePlugin>& weLoadPlugin(const string& libName);
00176
00177 #endif //__WEIPLUGIN_H__