commit 2025-09-11 14:17 edit a bit ZCppMain/ZtCObjList.H

This commit is contained in:
2025-09-11 14:17:42 +09:00
parent 4c40e76abd
commit 562381e4c2

View File

@ -2608,11 +2608,11 @@ namespace ZNsMain
}/*
static void MakeCircle(ZCLinkUnit* AP_HeadUnit, ZCLinkUnit* AP_TailUnit)*/
TypeData& AddEmptyObj_E() // E 는 Error 가 발생할 수 있다는 뜻.
TypeData& AddEmptyObj()
{
return mo_TypeArr[ml_UseSize++]; // error 체크 즉, ml_UseSize>=ZEArrSize 인지를 체크하지 않는다.
return mo_TypeArr[ml_UseSize++]; // must ml_UseSize>=ZEArrSize
}/*
TypeData& AddEmptyObj_E()*/
TypeData& AddEmptyObj()*/
/*private:*/
public :
@ -2627,12 +2627,11 @@ namespace ZNsMain
ZCLinkUnit(const ZCLinkUnit& rhs)
{
ml_UseSize =rhs.ml_UseSize;
ml_UseSize =0 ;
mp_NextUnit=0 ;
mp_PrevUnit=0 ;
::memcpy( mo_TypeArr,
rhs.mo_TypeArr, ml_UseSize*sizeof(TypeData));
*this = (rhs) ;
}/*
ZCLinkUnit(const ZCLinkUnit& rhs)*/
@ -2642,8 +2641,11 @@ namespace ZNsMain
ml_UseSize = rhs.ml_UseSize;
::memcpy( mo_TypeArr,
rhs.mo_TypeArr, ml_UseSize*sizeof(TypeData));
__for0(TypeSize, i, rhs.ml_UseSize)
{
mo_TypeArr[i] = rhs.mo_TypeArr[i] ;
}/*
__for0(TypeSize, i, rhs.ml_UseSize)*/
return *this;
}/*
@ -2659,16 +2661,15 @@ namespace ZNsMain
const ZCLinkUnit* GetNextUnitPtr() const{return mp_NextUnit;}
const ZCLinkUnit* GetPrevUniPtr () const{return mp_PrevUnit;}
TypeData& GetData(TypeSize AI_Index) // AI_Index start from 1
{
return mo_TypeArr[AI_Index-1];
}/*
TypeData& GetData(TypeSize AI_Index) // AI_Index start from 1*/
TypeArg GetData(TypeSize AI_Index) const // AI_Index start from 1
{
return mo_TypeArr[AI_Index-1];
}/*
TypeArg GetData(TypeSize AI_Index) const // AI_Index start from 1*/
TypeData& GetData (TypeSize AI_Index)
{ return mo_TypeArr[AI_Index-1]; } // AI_Index start from 1
TypeData& operator[](TypeSize AI_Index)
{ return mo_TypeArr[AI_Index ]; }
const TypeData& GetData (TypeSize AI_Index) const // AI_Index start from 1
{ return mo_TypeArr[AI_Index-1]; }
const TypeData& operator[](TypeSize AI_Index) const
{ return mo_TypeArr[AI_Index ]; }
bool AddObj(TypeArg AR_Object)
@ -2718,7 +2719,7 @@ namespace ZNsMain
if(AI_Distance<0)*/
for(; AI_Distance!=0; --AI_Distance)
VP_NowUnit = VP_NowUnit->mp_NextUnit;
{ VP_NowUnit = VP_NowUnit->mp_NextUnit; }
return VP_NowUnit;
}/*
@ -2740,7 +2741,7 @@ namespace ZNsMain
if(AI_Distance<0)*/
for(; AI_Distance!=0; --AI_Distance)
VP_NowUnit=VP_NowUnit->mp_NextUnit;
{ VP_NowUnit=VP_NowUnit->mp_NextUnit; }
return VP_NowUnit;
}/*
@ -3070,10 +3071,11 @@ namespace ZNsMain
// ZEMaxUnitCnt 개 단위로 등록한다.
// CAllocWork_BASE2_T<> 를 참고하면, *this 는 '임시 작업 큐'다.
typedef typename TAllocWork::CSyncExec CSyncExec;
if(AI_ArrSize<1) return;
typedef typename
TAllocWork::CSyncExec CSyncExec ;
TypeSize VI_AddUnitCnt = AI_ArrSize/ZEArrSize;
TypeSize VI_AddExtraCnt= AI_ArrSize%ZEArrSize;
TypeSize VI_MaxUnitCnt = ZEMaxUnitCnt ;
@ -3125,8 +3127,8 @@ namespace ZNsMain
TAllocWork& AR_CAllocWork, TypeData* AP_ObjArr, TypeSize AI_ArrSize) */
template<typename TAllocWork, typename TypeData2> void AddTailInPool2(
TAllocWork& AR_CAllocWork, TypeData2* AP_ObjArr, TypeSize AI_ArrSize)
template<typename TAllocWork, typename TypeData2> void AddTailInPool2
( TAllocWork& AR_CAllocWork, TypeData2* AP_ObjArr, TypeSize AI_ArrSize )
{
// TypeData = TypeData2 연산자가 지원되어야 한다.
@ -3156,7 +3158,7 @@ namespace ZNsMain
if(VI_AddExtraCnt>0)
{
__for0(TypeSize, i, VI_AddExtraCnt)
push_back() = *(AP_ObjArr++);
{ push_back() = *(AP_ObjArr++); }
AR_CAllocWork.AddList(RR(*this)); return;
}/*
@ -3172,12 +3174,12 @@ namespace ZNsMain
if(VI_AddExtraCnt<1)*/
__for0(TypeSize, i, VI_AddExtraCnt)
push_back() = *(AP_ObjArr++);
{ push_back() = *(AP_ObjArr++); }
AR_CAllocWork.AddList(RR(*this));
}/*
template<typename TAllocWork, typename TypeData2> void AddTailInPool2(
TAllocWork& AR_CAllocWork, TypeData2* AP_ObjArr, TypeSize AI_ArrSize) */
template<typename TAllocWork, typename TypeData2> void AddTailInPool2
( TAllocWork& AR_CAllocWork, TypeData2* AP_ObjArr, TypeSize AI_ArrSize ) */
void AddUnitInCutList(TypeSize AI_AddUnitCnt)
@ -3544,7 +3546,8 @@ namespace ZNsMain
// rhs.ml_CutUnitCnt>AI_FetchSize 이고 rhs.ml_CutUnitCnt>0
ZCLinkUnit* VP_RhsCutTail = rhs.mp_CutHeadUnit->mp_PrevUnit;
ZCLinkUnit* VP_RhsCutHead=VP_RhsCutTail->GetObjtPtr(-(AI_FetchSize-1));
ZCLinkUnit* VP_RhsCutHead =
VP_RhsCutTail->GetObjtPtr( -(AI_FetchSize-1) );
ZCLinkUnit::MakeCircle(
rhs.mp_CutHeadUnit, VP_RhsCutHead->mp_PrevUnit);