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
|