00001 #ifndef __PLUGIN_H 00002 #define __PLUGIN_H 00003 00004 #include "xmlserializeable.h" 00005 #include "glimsproject.h" 00006 00007 #ifdef WIN32 00008 #include <windows.h> 00009 #define LIBHANDLE HINSTANCE 00010 #else 00011 #include <dlfcn.h> 00012 #define LIBHANDLE void* 00013 #endif 00014 00015 typedef void (*EXECFUNC)( GLIMSProject * ); 00016 typedef const char* (*GETNAMEFUNC)( ); 00017 typedef const char* (*GETDESCFUNC)( ); 00018 00038 class Plugin : public XMLSerializeable { 00039 protected: 00040 std::string mFName; 00041 std::string mPlugName; 00042 std::string mDesc; 00043 00044 LIBHANDLE loadPlugin( ); 00045 void unloadPlugin( LIBHANDLE hPlug ); 00046 00047 public: 00048 Plugin( ) : 00049 mFName( "" ), 00050 mPlugName( "" ), 00051 mDesc( "" ) { 00052 } 00053 00054 virtual bool fromXML( QDomElement &elem ); 00055 virtual bool toXML( QDomDocument &doc, 00056 QDomElement &elem, 00057 std::string id="" ); 00058 00059 void execPlugin( GLIMSProject *proj ); 00060 00061 bool loadFromFile( std::string fname ); 00062 00063 std::string getName( ) { 00064 return mPlugName; 00065 } 00066 std::string getFile( ) { 00067 return mFName; 00068 } 00069 std::string getDesc( ) { 00070 return mDesc; 00071 } 00072 }; 00073 00074 #endif 00075 00076