commit 2025-09-14 20:24 is testing ZtCBody::Fetch() in ZCppMain/ZtCSimList.H
This commit is contained in:
@ -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;
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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;
|
||||
}/*
|
||||
|
Reference in New Issue
Block a user