commit 2025-09-14 20:24 is testing ZtCBody::Fetch() in ZCppMain/ZtCSimList.H

This commit is contained in:
2025-09-14 20:25:08 +09:00
parent c87ecc13cd
commit 8059bfd3a0
3 changed files with 187 additions and 1 deletions

View File

@ -621,7 +621,7 @@ namespace ZNsMain
VP_DelLink = mp_NoUseHead ;
}
while(--VI_DelCntCopy>0); /*+++++++*/
while(--VI_DelCntCopy>0); /*++++*/
ml_AllSize -= AI_DelCnt;
ml_UseSize -= AI_DelCnt;

View File

@ -558,6 +558,22 @@ namespace ZNsMain
}/*
~ZtCBody()*/
ZtCBody(const ZtCBody& rhs)
{
ml_AllSize =
ml_UseSize = 0 ;
mp_NoUseHead =
mp_NoUseTail = 0 ;
}/*
ZtCBody(const ZtCBody& rhs)*/
ZtCBody& operator=(const ZtCBody& rhs)
{
return *this;
}/*
ZtCBody& operator=(const ZtCBody& rhs)*/
void DeleteHeap()
{
@ -584,6 +600,127 @@ namespace ZNsMain
void DeleteHeap()*/
TypeSize DeleteHeap(TypeSize AI_DelCnt)
{
if(ml_UseSize<1) return 0;
if(AI_DelCnt <1) return 0;
if(AI_DelCnt > size())
{
AI_DelCnt=size(); DeleteHeap(); return AI_DelCnt;
}/*
if(AI_DelCnt > size())*/
TypeSize VI_DelCntCopy = AI_DelCnt ;
ZCLink* VP_DelLink = mp_NoUseHead ;
do /*++++++++++++++++++++++++++++*/
{
mp_NoUseHead =
mp_NoUseHead->GetNextPtr() ;
delete VP_DelLink;
VP_DelLink = mp_NoUseHead ;
}
while(--VI_DelCntCopy>0); /*+++++*/
ml_AllSize -= AI_DelCnt;
ml_UseSize -= AI_DelCnt;
return AI_DelCnt;
}/*
TypeSize DeleteHeap(TypeSize AI_DelCnt)*/
void AddHeap(TypeSize AI_AddCnt)
{
if(AI_AddCnt<1) return;
if(size() < 1)
{
MakeLink
(AI_AddCnt, RR(mp_NoUseHead), RR(mp_NoUseTail));
}
else
{
ZCLink* VP_MakeHead = 0;
ZCLink* VP_MakeTail = 0;
MakeLink
(AI_AddCnt, RR(VP_MakeHead), RR(VP_MakeTail));
ZCLink::JoinLink(mp_NoUseTail, VP_MakeHead);
mp_NoUseTail = VP_MakeTail ;
}/*
else*/
ml_UseSize += AI_AddCnt;
}/*
void AddHeap(TypeSize AI_AddCnt)*/
void Fetch(ZtCBody& rhs)
{
if(this==&rhs ) return;
if(rhs.size()<1) return;
RecvFreeIn ////////////////////////
(
rhs.ml_UseSize ,
rhs.mp_NoUseHead,
rhs.mp_NoUseTail
);
///////////////////////////////////
this->ml_AllSize += rhs.ml_UseSize;
rhs. ml_AllSize -= rhs.ml_UseSize;
rhs. ml_UseSize = 0 ;
rhs. mp_NoUseHead = 0 ;
rhs. mp_NoUseTail = 0 ;
}/*
void Fetch(ZtCBody& rhs)*/
TypeSize Fetch(ZtCBody& rhs, TypeSize AI_FetchSize)
{
// rhs 의 앞에서 AI_FetchSize 개를 가져온다.
if(this==&rhs ) return 0;
if(AI_FetchSize<1 ) return 0;
if(rhs.size() <1 ) return 0;
if(AI_FetchSize>= rhs.size())
{
AI_FetchSize = rhs.size();
Fetch(rhs); return AI_FetchSize;
}/*
if(AI_FetchSize>= rhs.size())*/
ZCLink* VP_RhsCutTail =
rhs.mp_NoUseHead->GetNextPrevPtr(AI_FetchSize-1);
ZCLink* VP_RhsNewHead = VP_RhsCutTail->GetNextPtr( );
RecvFreeIn //////////////////////////////////////////
(
AI_FetchSize, rhs.mp_NoUseHead, VP_RhsCutTail
);
/////////////////////////////////////////////////////
this->ml_AllSize += AI_FetchSize ;
rhs. ml_AllSize -= AI_FetchSize ;
rhs. ml_UseSize -= AI_FetchSize ;
rhs. mp_NoUseHead = VP_RhsNewHead;
return AI_FetchSize;
}/*
TypeSize Fetch(ZtCBody& rhs, TypeSize AI_FetchSize)*/
TypeSize GetUseHeapSize() const
{
return ml_UseSize;
@ -1941,6 +2078,12 @@ namespace ZNsMain
}/*
inline TTypSize capacity() const*/
inline TypeSize GetFreeSize() const
{
return mo_FreeObjt.size();
}/*
inline TypeSize GetFreeSize() const*/
inline bool IsEmpty() const
{

View File

@ -125,6 +125,49 @@ namespace ZNsMain
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
cout<<"# After list11 Fetch 3 from list10"<<endl;
VO_ListOfStr11.GetCFreeHeap().
Fetch( VO_ListOfStr10.GetCFreeHeap(), 3);
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add1"));
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add2"));
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add3"));
VO_ListOfStr11.AddTail(VO_CStringBase("list11 add4"));
cout<<"# After add 4 in list11"<<endl;
cout<<"# list10 size : " <<VO_ListOfStr10.size ()<<endl;
cout<<"# list11 size : " <<VO_ListOfStr11.size ()<<endl;
cout<<"# list10 free size: " <<VO_ListOfStr10.GetFreeSize ()<<endl;
cout<<"# list11 free size: " <<VO_ListOfStr11.GetFreeSize ()<<endl;
cout<<"# list10 capacity : " <<VO_ListOfStr10.capacity ()<<endl;
cout<<"# list11 capacity : " <<VO_ListOfStr11.capacity ()<<endl;
cout<<"# list11 IterElemRev ####" <<endl;
{
VO_ListOfStr11.IterElemRev(&ShowDataInNode);
}/*
cout<<"# list11 IterElemRev ####" <<endl;*/
VO_ListOfStr11.RotateBack();
cout<<"# list11 IterElemRev after RotateBack"<<endl;
cout<<"# list11 IterElemRev ####" <<endl;
{
VO_ListOfStr11.IterElemRev(&ShowDataInNode);
}/*
cout<<"# list11 IterElemRev ####" <<endl;*/
return 0;
}/*