added ArrayItemProcess.h
This commit is contained in:
parent
4d94b76683
commit
befd853b83
66
inc/hgl/type/ArrayItemProcess.h
Normal file
66
inc/hgl/type/ArrayItemProcess.h
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace hgl
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 阵列数据英处理回调
|
||||||
|
*/
|
||||||
|
template<typename T> struct ArrayItemProcessCallback
|
||||||
|
{
|
||||||
|
virtual void Init(const T *){return;} ///<初始化回调(当一个数据的内存被分配出来,需要做的处理)
|
||||||
|
|
||||||
|
virtual void Init(const T *,const int){return;} ///<批量初始化(当一个数据的内存被分配出来,需要做的处理)
|
||||||
|
|
||||||
|
virtual void Clear(T *){return;} ///<当地个数据需要被清除,最后做的处理
|
||||||
|
|
||||||
|
virtual void Equal(T &dst,const T &src)=0; ///<将src赋值给dst
|
||||||
|
|
||||||
|
virtual void Equal(T *dst,const T *src,const int count)=0; ///<批量将src赋值给dst
|
||||||
|
|
||||||
|
virtual int Comp(const T &a,const T &b)=0; ///<数据比较,数值的话,如果纯整数比较,建议返回a-b
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T> struct RawTypeArrayItemProcessCallback:public ArrayItemProcessCallback
|
||||||
|
{
|
||||||
|
void Equal(T &dst,const T &src) override {dst=src;}
|
||||||
|
|
||||||
|
void Equal(T *dst,const T *src,const int count) override {hgl_cpy(dst,src,count);}
|
||||||
|
|
||||||
|
int Comp(const T &a,const T &b) override {return a-b;}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T> struct MemoryArrayItemProcessCallback:public ArrayItemProcessCallback
|
||||||
|
{
|
||||||
|
void Equal(T &dst,const T &src) override {hgl_cpy<T>(dst,src);}
|
||||||
|
|
||||||
|
void Equal(T *dst,const T *src,const int count) override {hgl_cpy(dst,src,count);}
|
||||||
|
|
||||||
|
int Comp(const T &a,const T &b) override {return memcmp(a,b,sizeof(T));}
|
||||||
|
};
|
||||||
|
|
||||||
|
//template<typename T> struct ObjectArrayItemProcessCallback:public ArrayItemProcessCallback
|
||||||
|
//{
|
||||||
|
// virtual void
|
||||||
|
//};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 阵列数据查找模板
|
||||||
|
*/
|
||||||
|
template<typename T> int FindDataAtArray(const T *array,const int count,const T &data)
|
||||||
|
{
|
||||||
|
if(!obj)return(-1);
|
||||||
|
if(count<=0)return(-2);
|
||||||
|
|
||||||
|
T *p=array;
|
||||||
|
|
||||||
|
for(int i=0;i<count;i++)
|
||||||
|
{
|
||||||
|
if(*p==data)
|
||||||
|
return i;
|
||||||
|
|
||||||
|
++p;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
}//namespace hgl
|
Loading…
x
Reference in New Issue
Block a user