增加PlugInManage模板代码
This commit is contained in:
@@ -3,29 +3,41 @@
|
||||
|
||||
#include<hgl/plugin/ExternalPlugIn.h>
|
||||
#include<hgl/type/ResManage.h>
|
||||
#include<hgl/type/StringList.h>
|
||||
namespace hgl
|
||||
{
|
||||
/**
|
||||
* 插件管理
|
||||
*/
|
||||
template<typename T,typename C> class PlugInManage:public ResManage<C,PlugIn>
|
||||
class PlugInManage:public ResManage<UTF16String,PlugIn>
|
||||
{
|
||||
OSString name; ///<插件类目名称(必须符合代码名称规则)
|
||||
UTF16String name; ///<插件类目名称(必须符合代码名称规则)
|
||||
|
||||
OSStringList findpath; ///<插件查找目录
|
||||
|
||||
public:
|
||||
|
||||
PlugInManage(const OSString &n)
|
||||
PlugInManage(const UTF16String &n)
|
||||
{
|
||||
name=n;
|
||||
}
|
||||
|
||||
virtual ~PlugInManager()=default;
|
||||
};//template<typename T> class PlugInManage
|
||||
virtual ~PlugInManage();
|
||||
|
||||
bool RegistryPlugin(PlugIn *); ///<注册一个内置插件
|
||||
uint UnregistryPlugin(const UTF16String &); ///<释放一个内置插件
|
||||
|
||||
bool AddFindPath (const OSString &path); ///<添加一个插件查找目录
|
||||
|
||||
PlugIn *LoadPlugin (const UTF16String &,const OSString &); ///<加载一个外部插件,明确指定全路径文件名
|
||||
PlugIn *LoadPlugin (const UTF16String &); ///<加载一个外部插件,自行查找
|
||||
bool UnloadPlugin(const UTF16String &); ///<释放一个外部插件
|
||||
};//class PlugInManage:public ResManage<UTF16String,PlugIn>
|
||||
|
||||
/**
|
||||
* 插件注册模板
|
||||
*/
|
||||
template<typename T,typename CN> class RegistryPlugInProxy
|
||||
template<typename T> class RegistryPlugInProxy
|
||||
{
|
||||
T *plugin;
|
||||
|
||||
@@ -33,7 +45,7 @@ namespace hgl
|
||||
|
||||
RegistryPlugInProxy()
|
||||
{
|
||||
plugin=new CN;
|
||||
plugin=new T;
|
||||
}
|
||||
|
||||
virtual ~RegistryPlugInProxy()
|
||||
@@ -45,13 +57,8 @@ namespace hgl
|
||||
};//template<typename T> class RegistryPlugInProxy
|
||||
|
||||
/*
|
||||
内部插件:
|
||||
如Log一类必须存在的插件,直接在代码中一块儿编译链接
|
||||
|
||||
外部插件:
|
||||
如音频音频图片解码编码、压缩解压缩等根据需要加载释放,以独立的.dll/.so/.dylib文件形式存在
|
||||
|
||||
除log console/log file外,其它所有插件可以是内部插件也可以是外部插件
|
||||
如Log插件中的Console,File插件,是直接在代码中的,属于内部插件。
|
||||
但Log输出至MySQL的插件,是以独立.dll/.so/dylib形式存在的,属于外部插件。
|
||||
*/
|
||||
|
||||
#ifndef __MAKE_PLUGIN__ //内部插件
|
||||
|
Reference in New Issue
Block a user