renamed to ObjectManage instead of ResManage

This commit is contained in:
2023-07-14 23:21:03 +08:00
parent 13dbf78aa7
commit e4beccacd0
4 changed files with 38 additions and 39 deletions

View File

@@ -2,14 +2,14 @@
#define HGL_PLUG_IN_MANAGE_INCLUDE #define HGL_PLUG_IN_MANAGE_INCLUDE
#include<hgl/plugin/ExternalPlugIn.h> #include<hgl/plugin/ExternalPlugIn.h>
#include<hgl/type/ResManage.h> #include<hgl/type/ObjectManage.h>
#include<hgl/type/StringList.h> #include<hgl/type/StringList.h>
namespace hgl namespace hgl
{ {
/** /**
* 插件管理 * 插件管理
*/ */
class PlugInManage:public ResManage<OSString,PlugIn> class PlugInManage:public ObjectManage<OSString,PlugIn>
{ {
OSString name; ///<插件类目名称(必须符合代码名称规则) OSString name; ///<插件类目名称(必须符合代码名称规则)
@@ -28,7 +28,7 @@ namespace hgl
PlugIn *LoadPlugin (const OSString &,const OSString &); ///<加载一个外部插件,明确指定全路径文件名 PlugIn *LoadPlugin (const OSString &,const OSString &); ///<加载一个外部插件,明确指定全路径文件名
PlugIn *LoadPlugin (const OSString &); ///<加载一个外部插件,自行查找 PlugIn *LoadPlugin (const OSString &); ///<加载一个外部插件,自行查找
bool UnloadPlugin(const OSString &); ///<释放一个外部插件 bool UnloadPlugin(const OSString &); ///<释放一个外部插件
};//class PlugInManage:public ResManage<UTF16String,PlugIn> };//class PlugInManage:public ObjectManage<UTF16String,PlugIn>
/** /**
* 插件注册模板 * 插件注册模板

View File

@@ -1,17 +1,17 @@
#ifndef HGL_RES_MANAGE_CPP #ifndef HGL_OBJECT_MANAGE_CPP
#define HGL_RES_MANAGE_CPP #define HGL_OBJECT_MANAGE_CPP
#include<hgl/type/ResManage.h> #include<hgl/type/ObjectManage.h>
namespace hgl namespace hgl
{ {
template<typename K,typename V> template<typename K,typename V>
ResManage<K,V>::~ResManage() ObjectManage<K,V>::~ObjectManage()
{ {
Clear(); Clear();
} }
template<typename K,typename V> template<typename K,typename V>
void ResManage<K,V>::Clear() void ObjectManage<K,V>::Clear()
{ {
int n=items.GetCount(); int n=items.GetCount();
@@ -26,7 +26,7 @@ namespace hgl
} }
template<typename K,typename V> template<typename K,typename V>
void ResManage<K,V>::ClearFree() void ObjectManage<K,V>::ClearFree()
{ {
int n=items.GetCount(); int n=items.GetCount();
@@ -43,7 +43,7 @@ namespace hgl
} }
template<typename K,typename V> template<typename K,typename V>
bool ResManage<K,V>::Add(const K &flag,V *obj) bool ObjectManage<K,V>::Add(const K &flag,V *obj)
{ {
if(!obj)return(false); if(!obj)return(false);
@@ -55,7 +55,7 @@ namespace hgl
} }
template<typename K,typename V> template<typename K,typename V>
V *ResManage<K,V>::Find(const K &flag) V *ObjectManage<K,V>::Find(const K &flag)
{ {
int index=items.Find(flag); int index=items.Find(flag);
@@ -68,7 +68,7 @@ namespace hgl
} }
template<typename K,typename V> template<typename K,typename V>
V *ResManage<K,V>::Get(const K &flag) V *ObjectManage<K,V>::Get(const K &flag)
{ {
int index=items.Find(flag); int index=items.Find(flag);
@@ -88,7 +88,7 @@ namespace hgl
* *
*/ */
template<typename K,typename V> template<typename K,typename V>
bool ResManage<K,V>::ValueExist(V *value) bool ObjectManage<K,V>::ValueExist(V *value)
{ {
return(items.FindByValue(value)!=-1); return(items.FindByValue(value)!=-1);
} }
@@ -101,7 +101,7 @@ namespace hgl
* @param * @param
*/ */
template<typename K,typename V> template<typename K,typename V>
bool ResManage<K,V>::GetKeyByValue(V *value,K *key,uint *ref_count,bool inc_ref_count) bool ObjectManage<K,V>::GetKeyByValue(V *value,K *key,uint *ref_count,bool inc_ref_count)
{ {
int index=items.FindByValue(value); int index=items.FindByValue(value);
@@ -122,7 +122,7 @@ namespace hgl
} }
template<typename K,typename V> template<typename K,typename V>
int ResManage<K,V>::ReleaseBySerial(int index,bool zero_clear) int ObjectManage<K,V>::ReleaseBySerial(int index,bool zero_clear)
{ {
if(index==-1) if(index==-1)
{ {
@@ -148,15 +148,15 @@ namespace hgl
} }
template<typename K,typename V> template<typename K,typename V>
int ResManage<K,V>::Release(const K &flag,bool zero_clear) int ObjectManage<K,V>::Release(const K &flag,bool zero_clear)
{ {
return ReleaseBySerial(items.Find(flag),zero_clear); return ReleaseBySerial(items.Find(flag),zero_clear);
} }
template<typename K,typename V> template<typename K,typename V>
int ResManage<K,V>::Release(V *td,bool zero_clear) int ObjectManage<K,V>::Release(V *td,bool zero_clear)
{ {
return ReleaseBySerial(items.FindByValue(td),zero_clear); return ReleaseBySerial(items.FindByValue(td),zero_clear);
} }
}//namespace hgl }//namespace hgl
#endif//HGL_RES_MANAGE_CPP #endif//HGL_OBJECT_MANAGE_CPP

View File

@@ -1,5 +1,4 @@
#ifndef HGL_RES_MANAGE_INCLUDE #pragma once
#define HGL_RES_MANAGE_INCLUDE
#include<hgl/type/Map.h> #include<hgl/type/Map.h>
namespace hgl namespace hgl
@@ -17,9 +16,9 @@ namespace hgl
}; };
/** /**
* , * ,
*/ */
template<typename K,typename V> class ResManage template<typename K,typename V> class ObjectManage
{ {
protected: protected:
@@ -31,11 +30,11 @@ namespace hgl
protected: protected:
virtual void Clear(V *obj){delete obj;} ///<资源释放虚拟函数(缺省为直接delete对象) virtual void Clear(V *obj){delete obj;} ///<对象释放虚拟函数(缺省为直接delete对象)
public: public:
virtual ~ResManage(); virtual ~ObjectManage();
virtual void Clear(); ///<清除所有数据 virtual void Clear(); ///<清除所有数据
virtual void ClearFree(); ///<清除所有引用计数为0的数据 virtual void ClearFree(); ///<清除所有引用计数为0的数据
@@ -51,19 +50,19 @@ namespace hgl
virtual int Release(const K &,bool zero_clear=false); ///<释放一个数据 virtual int Release(const K &,bool zero_clear=false); ///<释放一个数据
virtual int Release(V *,bool zero_clear=false); ///<释放一个数据 virtual int Release(V *,bool zero_clear=false); ///<释放一个数据
};//template<typename K,typename V> class ResManage };//template<typename K,typename V> class ObjectManage
/** /**
* 使int类做数标致的资源管理 * 使
*/ */
template<typename K,typename V> class IDResManage:public ResManage<K,V> template<typename K,typename V> class IDObjectManage:public ObjectManage<K,V>
{ {
K id_count=0; K id_count=0;
public: public:
using ResManage<K,V>::ResManage; using ObjectManage<K,V>::ObjectManage;
virtual ~IDResManage()=default; virtual ~IDObjectManage()=default;
virtual K Add(V *value) virtual K Add(V *value)
{ {
@@ -73,19 +72,19 @@ namespace hgl
K key; K key;
uint count; uint count;
if(ResManage<K,V>::GetKeyByValue(value,&key,&count,true)) if(ObjectManage<K,V>::GetKeyByValue(value,&key,&count,true))
return key; return key;
} }
if(!ResManage<K,V>::Add(id_count,value)) if(!ObjectManage<K,V>::Add(id_count,value))
return(-1); return(-1);
return id_count++; return id_count++;
} }
};//template<typename K,typename V> class IDResManage:public ResManage<K,V> };//template<typename K,typename V> class IDObjectManage:public ObjectManage<K,V>
template<typename V> using ID32ResManage=IDResManage<uint32,V>; template<typename V> using U32ObjectManage=IDObjectManage<uint32,V>;
template<typename V> using ID64ResManage=IDResManage<uint64,V>; template<typename V> using U64ObjectManage=IDObjectManage<uint64,V>;
}//namespace hgl }//namespace hgl
#include<hgl/type/ResManage.cpp>
#endif//HGL_RES_MANAGE_INCLUDE #include<hgl/type/ObjectManage.cpp>

View File

@@ -2,11 +2,11 @@
#define HGL_RES_POOL_MANAGE_INCLUDE #define HGL_RES_POOL_MANAGE_INCLUDE
#include<hgl/type/Pool.h> #include<hgl/type/Pool.h>
#include<hgl/type/ResManage.h> #include<hgl/type/ObjectManage.h>
namespace hgl namespace hgl
{ {
template <typename K,typename V,typename OP> class _ResPoolManage:public ResManage<K,V> template <typename K,typename V,typename OP> class _ResPoolManage:public ObjectManage<K,V>
{ {
protected: protected:
@@ -21,7 +21,7 @@ namespace hgl
_ResPoolManage(OP *op):data_pool(op){} _ResPoolManage(OP *op):data_pool(op){}
virtual ~_ResPoolManage()=default; virtual ~_ResPoolManage()=default;
};//template <typename K,typename V,typename OP> class _ResPoolManage:public ResManage<K,V> };//template <typename K,typename V,typename OP> class _ResPoolManage:public ObjectManage<K,V>
/** /**
* 资源池是Pool/ResManage两个模板的组合应用 * 资源池是Pool/ResManage两个模板的组合应用