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