commit 2025-09-11 14:17 edit a bit ZCppMain/ZtCObjList.H
This commit is contained in:
@ -2608,31 +2608,30 @@ 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 :
|
||||
|
||||
ZCLinkUnit()
|
||||
{
|
||||
ml_UseSize =0;
|
||||
mp_NextUnit=0;
|
||||
mp_PrevUnit=0;
|
||||
ml_UseSize =0 ;
|
||||
mp_NextUnit=0 ;
|
||||
mp_PrevUnit=0 ;
|
||||
}/*
|
||||
ZCLinkUnit()*/
|
||||
|
||||
ZCLinkUnit(const ZCLinkUnit& rhs)
|
||||
{
|
||||
ml_UseSize =rhs.ml_UseSize;
|
||||
mp_NextUnit=0 ;
|
||||
mp_PrevUnit=0 ;
|
||||
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)*/
|
||||
|
||||
@ -2640,10 +2639,13 @@ namespace ZNsMain
|
||||
{
|
||||
if(this==&rhs) return *this;
|
||||
|
||||
ml_UseSize=rhs.ml_UseSize;
|
||||
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;
|
||||
}/*
|
||||
@ -2788,8 +2789,8 @@ namespace ZNsMain
|
||||
{
|
||||
for(; AI_Distance!=0; ++AI_Distance)
|
||||
{
|
||||
VP_NowUnit =VP_NowUnit->mp_PrevUnit;
|
||||
ARRI_ObjCnt+=VP_NowUnit->ml_UseSize ;
|
||||
VP_NowUnit = VP_NowUnit->mp_PrevUnit;
|
||||
ARRI_ObjCnt+= VP_NowUnit->ml_UseSize ;
|
||||
}/*
|
||||
for(; AI_Distance!=0; ++AI_Distance)*/
|
||||
|
||||
@ -2799,8 +2800,8 @@ namespace ZNsMain
|
||||
|
||||
for(; AI_Distance!=0; --AI_Distance)
|
||||
{
|
||||
VP_NowUnit =VP_NowUnit->mp_NextUnit;
|
||||
ARRI_ObjCnt+=VP_NowUnit->ml_UseSize ;
|
||||
VP_NowUnit = VP_NowUnit->mp_NextUnit;
|
||||
ARRI_ObjCnt+= VP_NowUnit->ml_UseSize ;
|
||||
}/*
|
||||
for(; AI_Distance!=0; --AI_Distance)*/
|
||||
|
||||
@ -3070,13 +3071,14 @@ namespace ZNsMain
|
||||
// ZEMaxUnitCnt 개 단위로 등록한다.
|
||||
// CAllocWork_BASE2_T<> 를 참고하면, *this 는 '임시 작업 큐'다.
|
||||
|
||||
typedef typename TAllocWork::CSyncExec CSyncExec;
|
||||
|
||||
if(AI_ArrSize<1) return;
|
||||
|
||||
TypeSize VI_AddUnitCnt =AI_ArrSize/ZEArrSize;
|
||||
TypeSize VI_AddExtraCnt=AI_ArrSize%ZEArrSize;
|
||||
TypeSize VI_MaxUnitCnt =ZEMaxUnitCnt ;
|
||||
typedef typename
|
||||
TAllocWork::CSyncExec CSyncExec ;
|
||||
|
||||
TypeSize VI_AddUnitCnt = AI_ArrSize/ZEArrSize;
|
||||
TypeSize VI_AddExtraCnt= AI_ArrSize%ZEArrSize;
|
||||
TypeSize VI_MaxUnitCnt = ZEMaxUnitCnt ;
|
||||
|
||||
while(--VI_AddUnitCnt>=0)
|
||||
{
|
||||
@ -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 연산자가 지원되어야 한다.
|
||||
|
||||
@ -3134,14 +3136,14 @@ namespace ZNsMain
|
||||
|
||||
if(AI_ArrSize<1) return;
|
||||
|
||||
TypeSize VI_AddUnitCnt =AI_ArrSize/ZEArrSize;
|
||||
TypeSize VI_AddExtraCnt=AI_ArrSize%ZEArrSize;
|
||||
TypeSize VI_MaxUnitCnt =ZEMaxUnitCnt ;
|
||||
TypeSize VI_AddUnitCnt = AI_ArrSize/ZEArrSize;
|
||||
TypeSize VI_AddExtraCnt= AI_ArrSize%ZEArrSize;
|
||||
TypeSize VI_MaxUnitCnt = ZEMaxUnitCnt ;
|
||||
|
||||
while(--VI_AddUnitCnt>=0)
|
||||
{
|
||||
__for0(TypeSize, i, ZEArrSize)
|
||||
push_back() = *(AP_ObjArr++);
|
||||
push_back() = *(AP_ObjArr++) ;
|
||||
|
||||
if(--VI_MaxUnitCnt<=0)
|
||||
{
|
||||
@ -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)
|
||||
@ -3192,7 +3194,7 @@ namespace ZNsMain
|
||||
|
||||
while(--VI_AddUnitCnt>0) // AI_AddUnitCnt-1 번 순환.
|
||||
{
|
||||
ZCLinkUnit* VP_UnitTail2=CreateUnit();
|
||||
ZCLinkUnit* VP_UnitTail2 = CreateUnit();
|
||||
ZCLinkUnit::JoinLink(VP_UnitTail, VP_UnitTail2);
|
||||
|
||||
VP_UnitTail=VP_UnitTail2;
|
||||
@ -3368,10 +3370,10 @@ namespace ZNsMain
|
||||
|
||||
// rhs.ml_NowUnitCnt>AI_FetchSize 이고 rhs.ml_NowUnitCnt>0
|
||||
|
||||
TypeSize VI_RhsObjCnt =0 ;
|
||||
ZCLinkUnit* VP_RhsNowTail=rhs.mp_NowHeadUnit->mp_PrevUnit ;
|
||||
ZCLinkUnit* VP_RhsNowHead=VP_RhsNowTail->
|
||||
GetObjtPtr( -(AI_FetchSize-1), RR(VI_RhsObjCnt) ) ;
|
||||
TypeSize VI_RhsObjCnt = 0 ;
|
||||
ZCLinkUnit* VP_RhsNowTail = rhs.mp_NowHeadUnit->mp_PrevUnit ;
|
||||
ZCLinkUnit* VP_RhsNowHead = VP_RhsNowTail->
|
||||
GetObjtPtr( -(AI_FetchSize-1), RR(VI_RhsObjCnt) ) ;
|
||||
|
||||
ZCLinkUnit::MakeCircle(
|
||||
rhs.mp_NowHeadUnit, VP_RhsNowHead->mp_PrevUnit);
|
||||
@ -3407,12 +3409,12 @@ namespace ZNsMain
|
||||
|
||||
// rhs.ml_NowUnitCnt>AI_FetchSize 이고 rhs.ml_NowUnitCnt>0
|
||||
|
||||
TypeSize VI_RhsObjCnt =0 ;
|
||||
ZCLinkUnit* VP_RhsNowHead=rhs.mp_NowHeadUnit ;
|
||||
ZCLinkUnit* VP_RhsNowTail=VP_RhsNowHead->
|
||||
TypeSize VI_RhsObjCnt = 0 ;
|
||||
ZCLinkUnit* VP_RhsNowHead= rhs.mp_NowHeadUnit ;
|
||||
ZCLinkUnit* VP_RhsNowTail= VP_RhsNowHead->
|
||||
GetObjtPtr( AI_FetchSize-1, RR(VI_RhsObjCnt) );
|
||||
|
||||
rhs.mp_NowHeadUnit=VP_RhsNowTail->mp_NextUnit;
|
||||
rhs.mp_NowHeadUnit = VP_RhsNowTail->mp_NextUnit ;
|
||||
|
||||
ZCLinkUnit::MakeCircle(
|
||||
rhs.mp_NowHeadUnit, VP_RhsNowHead->mp_PrevUnit);
|
||||
@ -3475,8 +3477,8 @@ namespace ZNsMain
|
||||
|
||||
if(rhs.ml_NowUnitCnt<1) return;
|
||||
|
||||
ZCLinkUnit* VP_RhsNowHead=rhs.mp_NowHeadUnit;
|
||||
rhs.mp_NowHeadUnit =rhs.mp_NowHeadUnit->mp_NextUnit;
|
||||
ZCLinkUnit* VP_RhsNowHead = rhs.mp_NowHeadUnit;
|
||||
rhs. mp_NowHeadUnit= rhs.mp_NowHeadUnit->mp_NextUnit;
|
||||
|
||||
if(--rhs.ml_NowUnitCnt<1)
|
||||
{
|
||||
@ -3543,8 +3545,9 @@ 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_RhsCutTail = rhs.mp_CutHeadUnit->mp_PrevUnit;
|
||||
ZCLinkUnit* VP_RhsCutHead =
|
||||
VP_RhsCutTail->GetObjtPtr( -(AI_FetchSize-1) );
|
||||
|
||||
ZCLinkUnit::MakeCircle(
|
||||
rhs.mp_CutHeadUnit, VP_RhsCutHead->mp_PrevUnit);
|
||||
|
Reference in New Issue
Block a user