added SeriesPool.h

This commit is contained in:
hyzboy 2024-03-20 23:07:02 +08:00
parent 2be810bbe9
commit 4163cf421c

75
inc/hgl/type/SeriesPool.h Normal file
View File

@ -0,0 +1,75 @@
#pragma once
//#include<hgl/type/DataType.h>
namespace hgl
{
/**
*
*/
template<typename T> class SeriesPool
{
//一定要用带BOM头的UTF8存哦“量”字在一行的最后会导致编译器报错认不出来换行符。
T max_count; ///<最大数量
T *series_data; ///<序列数据
T *end; ///<结束指针
T *access; ///<访问指针
public:
const int GetMaxCount()const{return max_count;}
public:
SeriesPool(const T &count)
{
max_count=count;
series_data=new T[max_count];
end=series_data+max_count;
access=end;
{
T *p=series_data;
for(T i=0;i<max_count;i++)
{
*p=i;
++p;
}
}
}
virtual ~SeriesPool()
{
delete[] series_data;
}
bool Acquire(T *sp)
{
if(!sp)return(false);
if(access<=series_data)
return(false);
*sp=*(--access);
return(true);
}
bool Release(const T &s)
{
if(access>=end)
return(false);
*access=s;
++access;
return(true);
}
};//template<typename T> class SeriesPool
using SeriesInt=SeriesPool<int>;
using SeriesUInt=SeriesPool<uint>;
using SeriesInt64=SeriesPool<int64>;
using SeriesUInt64=SeriesPool<uint64>;
}//namespace hgl