renamed few value and functions.
This commit is contained in:
parent
12cc938060
commit
3df4005aa4
@ -6,7 +6,9 @@
|
|||||||
namespace hgl
|
namespace hgl
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 数据池模板用于管于两个队列,一个在用的,一个空闲的。默认情部下空闲队列使用Queue模板管理(先入先出,总是使用最早扔进去的数据,可手动换成Stack性能更好),活动队列使用List模板管理(无序)。
|
* 数据池模板用于管于两个队列,一个在用的,一个空闲的。<br>
|
||||||
|
* 默认情部下空闲队列使用Queue模板管理(先入先出,总是使用最早扔进去的数据。可手动换成Stack运行性能更好,但逻辑性能更差。),
|
||||||
|
* 活动队列使用List模板管理(无序)。
|
||||||
*/
|
*/
|
||||||
template<typename T,typename AT,typename IT,typename DEFAULT_DLC> class _Pool ///数据池
|
template<typename T,typename AT,typename IT,typename DEFAULT_DLC> class _Pool ///数据池
|
||||||
{
|
{
|
||||||
@ -15,15 +17,15 @@ namespace hgl
|
|||||||
DEFAULT_DLC default_dlc;
|
DEFAULT_DLC default_dlc;
|
||||||
|
|
||||||
AT Active;
|
AT Active;
|
||||||
IT Inactive;
|
IT Idle;
|
||||||
|
|
||||||
int max_active_count;
|
int max_active_count;
|
||||||
int history_max; ///<历史最大数量
|
int history_max; ///<历史最大数量
|
||||||
|
|
||||||
void UpdateHistoryMax()
|
void UpdateHistoryMax()
|
||||||
{
|
{
|
||||||
if(Active.GetCount()+Inactive.GetCount()>history_max)
|
if(Active.GetCount()+Idle.GetCount()>history_max)
|
||||||
history_max=Active.GetCount()+Inactive.GetCount();
|
history_max=Active.GetCount()+Idle.GetCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -33,13 +35,13 @@ namespace hgl
|
|||||||
public: //属性
|
public: //属性
|
||||||
|
|
||||||
int GetActiveCount() const{return Active.GetCount();} ///<取得活动数据数量
|
int GetActiveCount() const{return Active.GetCount();} ///<取得活动数据数量
|
||||||
int GetInactiveCount() const{return Inactive.GetCount();} ///<取得非活动数据数量
|
int GetIdleCount() const{return Idle.GetCount();} ///<取得非活动数据数量
|
||||||
int GetHistoryMaxCount()const{return history_max;} ///<取得历史性最大数据数量
|
int GetHistoryMaxCount()const{return history_max;} ///<取得历史性最大数据数量
|
||||||
|
|
||||||
DataArray<T> & GetActiveArray(){return Active.GetArray();} ///<取得所有活跃数据
|
DataArray<T> & GetActiveArray(){return Active.GetArray();} ///<取得所有活跃数据
|
||||||
|
|
||||||
bool IsActive (const T &data)const{return Active.IsExist(data);} ///<是否为活跃的
|
bool IsActive (const T &data)const{return Active.IsExist(data);} ///<是否为活跃的
|
||||||
bool IsInactive (const T &data)const{return Inactive.IsExist(data);} ///<是否为非活跃的
|
bool IsIdle (const T &data)const{return Idle.IsExist(data);} ///<是否为非活跃的
|
||||||
|
|
||||||
bool IsFull()const ///<活跃队列是否已满
|
bool IsFull()const ///<活跃队列是否已满
|
||||||
{
|
{
|
||||||
@ -71,7 +73,7 @@ namespace hgl
|
|||||||
virtual void PreAlloc(int count,bool set_to_max=false) ///<预分配空间
|
virtual void PreAlloc(int count,bool set_to_max=false) ///<预分配空间
|
||||||
{
|
{
|
||||||
Active.PreAlloc(count);
|
Active.PreAlloc(count);
|
||||||
Inactive.PreAlloc(count);
|
Idle.PreAlloc(count);
|
||||||
|
|
||||||
if(set_to_max)
|
if(set_to_max)
|
||||||
max_active_count=count;
|
max_active_count=count;
|
||||||
@ -94,7 +96,7 @@ namespace hgl
|
|||||||
|
|
||||||
virtual bool GetOrCreate(T &value) ///<获取一个数据(如果没有空余,创建新的)
|
virtual bool GetOrCreate(T &value) ///<获取一个数据(如果没有空余,创建新的)
|
||||||
{
|
{
|
||||||
if(!Inactive.Pop(value))
|
if(!Idle.Pop(value))
|
||||||
{
|
{
|
||||||
if(IsFull())
|
if(IsFull())
|
||||||
return(false);
|
return(false);
|
||||||
@ -114,7 +116,7 @@ namespace hgl
|
|||||||
|
|
||||||
virtual bool Get(T &value) ///<获取一个数据(如果没有空余,返回失败)
|
virtual bool Get(T &value) ///<获取一个数据(如果没有空余,返回失败)
|
||||||
{
|
{
|
||||||
if(!Inactive.Pop(value))
|
if(!Idle.Pop(value))
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
dlc->OnActive(&value);
|
dlc->OnActive(&value);
|
||||||
@ -142,7 +144,7 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
Active.Delete(index);
|
Active.Delete(index);
|
||||||
|
|
||||||
if(!Inactive.Push(value))
|
if(!Idle.Push(value))
|
||||||
return(false);
|
return(false);
|
||||||
|
|
||||||
dlc->OnIdle(&value);
|
dlc->OnIdle(&value);
|
||||||
@ -172,7 +174,7 @@ namespace hgl
|
|||||||
{
|
{
|
||||||
dlc->OnIdle(Active.GetData(),Active.GetCount());
|
dlc->OnIdle(Active.GetData(),Active.GetCount());
|
||||||
|
|
||||||
Inactive.Push(Active.GetData(),Active.GetCount());
|
Idle.Push(Active.GetData(),Active.GetCount());
|
||||||
Active.ClearData();
|
Active.ClearData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,15 +185,15 @@ namespace hgl
|
|||||||
Active.ClearData();
|
Active.ClearData();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ClearInactive() ///<清除所有非活跃数据
|
virtual void ClearIdle() ///<清除所有非活跃数据
|
||||||
{
|
{
|
||||||
Inactive.Clear(dlc);
|
Idle.Clear(dlc);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void Clear() ///<清除所有数据
|
virtual void Clear() ///<清除所有数据
|
||||||
{
|
{
|
||||||
ClearActive();
|
ClearActive();
|
||||||
ClearInactive();
|
ClearIdle();
|
||||||
}
|
}
|
||||||
};//template<typename T,typename AT,typename IT> class _Pool
|
};//template<typename T,typename AT,typename IT> class _Pool
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user