CMCore/inc/hgl/plugin/ExternalPlugIn.h

50 lines
1.3 KiB
C
Raw Permalink Normal View History

2019-08-23 17:11:24 +08:00
#ifndef HGL_EXTERNAL_PLUG_IN_INCLUDE
#define HGL_EXTERNAL_PLUG_IN_INCLUDE
#include<hgl/plugin/PlugIn.h>
#include<hgl/platform/ExternalModule.h>
namespace hgl
2019-08-29 15:28:49 +08:00
{
struct PlugInInterface;
2019-08-23 17:11:24 +08:00
/**
*
*/
enum class PlugInStatus
{
NONE, ///<无此插件
LOAD_FAILED, ///<加载失败
NO_LOAD, ///<可用未加载
COMPLETE, ///<成功加载可用
};//enum class PlugInStatus
/**
*
*/
class ExternalPlugIn:public PlugIn
{
PlugInStatus status;
OSString filename; ///<插件对应的真实文件系统名称
ExternalModule *pi_module;
2019-08-29 15:28:49 +08:00
PlugInInterface *plugin_interface;
2019-08-23 17:11:24 +08:00
public:
PlugInStatus GetStatus()const{return status;}
public:
ExternalPlugIn();
virtual ~ExternalPlugIn();
2019-08-29 15:28:49 +08:00
void Free(); ///<释放插件文件
bool Load(const OSString &,const OSString &); ///<加载插件
virtual bool GetInterface(uint,void *) override;
2019-08-23 17:11:24 +08:00
};//class ExternalPlugIn:public PlugIn
}//namespace hgl
#endif//HGL_EXTERNAL_PLUG_IN_INCLUDE