commit 2025-09-27 08:52 bug fix in DeleteHeap(TypeSize AI_DelCnt) : ZCppMain/ZtCObjList.H
This commit is contained in:
@ -156,7 +156,7 @@ namespace ZNsMain
|
||||
if(VP_Temp==mp_NoUseTail)
|
||||
{ break; }
|
||||
|
||||
VP_Temp=VP_Temp->GetNexPtr() ;
|
||||
VP_Temp=VP_Temp->GetNextPtr() ;
|
||||
}/*
|
||||
while(true)*/
|
||||
|
||||
@ -340,6 +340,7 @@ namespace ZNsMain
|
||||
|
||||
APR_TailLink = VP_TempLink;
|
||||
|
||||
|
||||
// 메모리를 더 이상 할당할 수 없었다면
|
||||
// 이미 만들어진 VL_Count 개의 비원형 이중 링크를 지운다.
|
||||
|
||||
@ -626,6 +627,9 @@ namespace ZNsMain
|
||||
ml_AllSize -= AI_DelCnt;
|
||||
ml_UseSize -= AI_DelCnt;
|
||||
|
||||
if(ml_UseSize<1)
|
||||
mp_NoUseHead = mp_NoUseTail = 0 ;
|
||||
|
||||
return AI_DelCnt;
|
||||
}/*
|
||||
TypeSize DeleteHeap(TypeSize AI_DelCnt)*/
|
||||
@ -1085,7 +1089,7 @@ namespace ZNsMain
|
||||
}
|
||||
else
|
||||
{
|
||||
ZCLink* VP_TailLink=AO_CObjList.mp_HeadLink->mp_PrevLink;
|
||||
ZCLink* VP_TailLink = AO_CObjList.mp_HeadLink->mp_PrevLink;
|
||||
|
||||
ZCLink::MakeCircle(AO_CObjList.mp_HeadLink, mp_HeadLink->mp_PrevLink);
|
||||
ZCLink::JoinLink (VP_TailLink , mp_HeadLink );
|
||||
@ -1403,7 +1407,7 @@ namespace ZNsMain
|
||||
{
|
||||
return DeleteAll();
|
||||
}
|
||||
else if(ml_Size<=rhs.ml_Size)
|
||||
if(ml_Size<=rhs.ml_Size)
|
||||
{
|
||||
AddDefault(rhs.ml_Size-ml_Size, ml_Size+1);
|
||||
}
|
||||
@ -1863,7 +1867,7 @@ namespace ZNsMain
|
||||
if(CB_IsTrue) return 0; //////////////////
|
||||
|
||||
ZtCObjList VO_StoreList; MakeDefault
|
||||
(AL_DefaultSize, VO_StoreList);
|
||||
( AL_DefaultSize, RR(VO_StoreList) ) ;
|
||||
|
||||
ZCLink* VP_HeadLink= VO_StoreList.mp_HeadLink;
|
||||
|
||||
@ -2337,6 +2341,7 @@ namespace ZNsMain
|
||||
}/*
|
||||
template<typename TFunctor> void IterElement(TFunctor AO_Functor) */
|
||||
|
||||
|
||||
template<typename TFunctor, typename TTypeHelp>
|
||||
void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)
|
||||
{
|
||||
|
@ -628,6 +628,9 @@ namespace ZNsMain
|
||||
ml_AllSize -= AI_DelCnt;
|
||||
ml_UseSize -= AI_DelCnt;
|
||||
|
||||
if(ml_UseSize<1)
|
||||
mp_NoUseHead = mp_NoUseTail = 0 ;
|
||||
|
||||
return AI_DelCnt;
|
||||
}/*
|
||||
TypeSize DeleteHeap(TypeSize AI_DelCnt)*/
|
||||
@ -1025,6 +1028,8 @@ namespace ZNsMain
|
||||
{
|
||||
// AP_CopyLink 부터 AP_CopyLink->GetNextPrePtr(AL_FarNum)
|
||||
// 링크까지를 복사한다. 총 AL_FarNum + 1 개의 링크가 만들어진다.
|
||||
//
|
||||
// ARR_StoreList.size() 는 0 이어야 한다.
|
||||
|
||||
ZCLink* VP_HeadLink=0;
|
||||
ZCLink* VP_TailLink=0;
|
||||
@ -1038,7 +1043,7 @@ namespace ZNsMain
|
||||
);
|
||||
//////////////////////////////
|
||||
|
||||
VP_TailLink->mp_NextLink=0;
|
||||
ZCLink::MakeCircle(VP_HeadLink, VP_TailLink);
|
||||
|
||||
ARR_StoreList.mp_HeadLink= VP_HeadLink ;
|
||||
ARR_StoreList.mp_TailLink= VP_TailLink ;
|
||||
@ -1263,13 +1268,17 @@ namespace ZNsMain
|
||||
{ DeleteAll(); }
|
||||
if(rhs.ml_Size==0 ){return *this;}
|
||||
|
||||
#if(_CODE_NEW_)
|
||||
CopyLink(rhs.mp_HeadLink, rhs.ml_Size-1, *this); return *this;
|
||||
#else
|
||||
ZtCSimList VO_StoreList;
|
||||
|
||||
JoinHead ///////////////////////////
|
||||
(
|
||||
CopyLink(rhs.mp_HeadLink, rhs.ml_Size-1 ,VO_StoreList)
|
||||
CopyLink(rhs.mp_HeadLink, rhs.ml_Size-1, VO_StoreList)
|
||||
);
|
||||
return *this; //////////////////////
|
||||
#endif
|
||||
}/*
|
||||
ZtCSimList& operator=(const ZtCSimList& rhs)*/
|
||||
|
||||
@ -2136,6 +2145,7 @@ namespace ZNsMain
|
||||
inline bool IsEmpty() const*/
|
||||
|
||||
|
||||
|
||||
// ***************************************************************** //
|
||||
|
||||
// *********************** Functor 부분 시작 *********************** //
|
||||
@ -2207,7 +2217,7 @@ namespace ZNsMain
|
||||
__for0(TTypSize, i, ml_Size)*/
|
||||
}/*
|
||||
template
|
||||
<typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
|
||||
<typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
|
||||
void IterElement
|
||||
(TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2)
|
||||
*/
|
||||
@ -2256,13 +2266,13 @@ namespace ZNsMain
|
||||
template<typename TFunctor> void IterEleCutIf(TFunctor AO_Functor) */
|
||||
|
||||
|
||||
template<typename TFunctor> void IterEleLink
|
||||
template<typename TFunctor> void IterEleLink ////////////////////////
|
||||
(
|
||||
ZCLink* AP_StdLink ,
|
||||
TTypSize AL_WorkDistance,
|
||||
TFunctor AO_Functor
|
||||
)
|
||||
/*########################################*/
|
||||
/*#################################################################*/
|
||||
{
|
||||
/* AP_StdLink 부터 AL_WorkDistance 만큼 이동하면서
|
||||
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.(총 수행 횟수는 (AL_WorkDistance)절대값+1)
|
||||
@ -2297,20 +2307,21 @@ namespace ZNsMain
|
||||
}/*
|
||||
for(TTypSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)*/
|
||||
}/*
|
||||
void IterEleLink /////////////////
|
||||
void IterEleLink ////////////////////////////////////////////////////
|
||||
(
|
||||
ZCLink* AP_StdLink ,
|
||||
TTypSize AL_WorkDistance,
|
||||
TFunctor AO_Functor
|
||||
)
|
||||
////////////////////////////////*/
|
||||
/*#################################################################*/
|
||||
|
||||
|
||||
// ***************************************************************
|
||||
// ******************************************************************
|
||||
|
||||
// *********************** Functor 부분 끝 ***********************
|
||||
// ************************* Functor 부분 끝 ************************
|
||||
|
||||
// ******************************************************************
|
||||
|
||||
// ***************************************************************
|
||||
|
||||
|
||||
/*///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -182,6 +182,12 @@ namespace ZNsMain
|
||||
cout<<"# list11 IterElemRev ####" <<endl;*/
|
||||
|
||||
|
||||
VO_ListOfStr10 = VO_ListOfStr11 ;
|
||||
|
||||
cout<<"# list10 IterElement after list10 = list11"<<endl;
|
||||
VO_ListOfStr10.IterElement(&ShowDataInNode);
|
||||
|
||||
|
||||
return 0;
|
||||
}/*
|
||||
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
|
||||
|
@ -232,6 +232,12 @@ namespace ZNsMain
|
||||
VO_ListOfStr11.IterElement(ZftMCP(VO_CHelpObj));
|
||||
|
||||
|
||||
VO_ListOfStr11 = VO_ListOfStr10 ;
|
||||
|
||||
cout<<"# list11 IterElement : after list11=list10" <<endl;
|
||||
VO_ListOfStr11.IterElement(ZftMCP(VO_CHelpObj));
|
||||
|
||||
|
||||
return 0;
|
||||
}/*
|
||||
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
|
||||
|
Reference in New Issue
Block a user