commit 2025-10-03 16:01 delete ChangeCapacity() in ZtCBaseList : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-03 16:01:49 +09:00
parent 97b1280b15
commit fee4f8aee1
4 changed files with 312 additions and 449 deletions

View File

@ -47,9 +47,7 @@ namespace ZNsMain
friend class ZNsMain::ZtCObjList; /////////////////////////////
private:
TypeSize ml_AllSize ;
TypeSize ml_UseSize ;
ZCLink* mp_NoUseHead ;
ZCLink* mp_NoUseTail ;
private:
@ -63,7 +61,7 @@ namespace ZNsMain
if(TypeInit::ZEUseInit>0)
TypeInit::OnInit(*VP_TempLink, *this);
return (++ml_AllSize, VP_TempLink);
return VP_TempLink;
}/*
if(ml_UseSize==0)*/
@ -297,8 +295,6 @@ namespace ZNsMain
if(TypeInit::ZEUseInit>0)
TypeInit::OnInit(**APR_HeadLink, *this);
ml_AllSize += AL_MakeSize;
ZCLink* VP_MakeLink = 0 ;
ZCLink* VP_TempLink = APR_HeadLink;
bool VB_IsHeapOver= false ;
@ -320,10 +316,7 @@ namespace ZNsMain
if(VP_MakeLink==0)
{
ml_AllSize -= AL_MakeSize+1 ;
VB_IsHeapOver = true ;
break;
VB_IsHeapOver = true; break;
}/*
if(VP_MakeLink==0)*/
@ -397,14 +390,10 @@ namespace ZNsMain
VP_TailLink = VP_MakeLink =
new ZCLink(**AP_LinkOrgin) ;
ml_AllSize += AL_FarNum+1 ;
if(VP_MakeLink==0)
{
//add codes for memory over
ml_AllSize -= AL_FarNum+1;
DeleteHeap(); return ;
}/*
if(VP_MakeLink==0)*/
@ -419,7 +408,6 @@ namespace ZNsMain
if(VP_MakeLink==0)
{
ml_AllSize -= AL_FarNum+1 ;
APR_TailCopy = VP_TailLink ;
VB_IsHeapOver= true ;
@ -541,9 +529,7 @@ namespace ZNsMain
ZtCBody()
{
ml_AllSize =
ml_UseSize = 0 ;
mp_NoUseHead =
mp_NoUseTail = 0 ;
}/*
@ -557,9 +543,7 @@ namespace ZNsMain
ZtCBody(const ZtCBody& rhs)
{
ml_AllSize =
ml_UseSize = 0 ;
mp_NoUseHead =
mp_NoUseTail = 0 ;
}/*
@ -591,10 +575,9 @@ namespace ZNsMain
}
while(--VI_UseSize>0); /*++++++++*/
ml_AllSize -= ml_UseSize;
ml_UseSize = 0 ;
ml_UseSize = 0 ;
mp_NoUseHead =
mp_NoUseTail = 0 ;
mp_NoUseTail = 0 ;
}/*
void DeleteHeap()*/
@ -624,10 +607,7 @@ namespace ZNsMain
}
while(--VI_DelCntCopy>0); /*++++*/
ml_AllSize -= AI_DelCnt;
ml_UseSize -= AI_DelCnt;
return AI_DelCnt;
ml_UseSize -= AI_DelCnt; return AI_DelCnt;
}/*
TypeSize DeleteHeap(TypeSize AI_DelCnt)*/
@ -675,11 +655,8 @@ namespace ZNsMain
this->mp_NoUseTail = rhs.mp_NoUseTail;
this->ml_UseSize += rhs.ml_UseSize ;
this->ml_AllSize += rhs.ml_UseSize ;
rhs.ml_AllSize -= rhs.ml_UseSize ;
rhs.ml_UseSize = 0 ;
rhs.ml_UseSize = 0 ;
rhs.mp_NoUseHead = 0 ;
rhs.mp_NoUseTail = 0 ;
}/*
@ -719,10 +696,8 @@ namespace ZNsMain
(this->mp_NoUseTail, rhs.mp_NoUseHead);
}
this->ml_AllSize += AI_FetchSize ;
this->ml_UseSize += AI_FetchSize ;
this->mp_NoUseTail = VP_RhsCutTail;
rhs. ml_AllSize -= AI_FetchSize ;
rhs. ml_UseSize -= AI_FetchSize ;
rhs. mp_NoUseHead = VP_RhsNewHead;
@ -750,32 +725,12 @@ namespace ZNsMain
}/*
TypeSize GetUseHeapSize() const*/
TypeSize GetAllHeapSize() const
{
return ml_AllSize;
}/*
TypeSize GetAllHeapSize() const*/
TypeSize size() const
{
return ml_UseSize;
}/*
TypeSize size() const*/
TypeSize capacity() const
{
return ml_AllSize;
}/*
TypeSize capacity() const*/
void ChangeCapacity(TypeSize AI_AddCut)
{
ml_AllSize =+ AI_AddCut;
}/*
void ChangeCapacity(TypeSize AI_AddCut)*/
public:
};/*
template<typename TObjList> class ZtCBody*/
@ -1016,7 +971,7 @@ namespace ZNsMain
/*public :*/
protected:
ZCLink* mp_HeadLink;
TypeSize ml_Size ; mutable
TypeSize ml_LinkSize; mutable
ZCFreeHeap mo_FreeObjt;
protected:
@ -1028,7 +983,7 @@ namespace ZNsMain
if(AP_LinkStd==0)
{
if(++ml_Size==1)
if(++ml_LinkSize==1)
{
mp_HeadLink =AP_LinkInsert ;
mp_HeadLink->mp_NextLink=mp_HeadLink ;
@ -1047,7 +1002,7 @@ namespace ZNsMain
}
else
{
++ml_Size;
++ml_LinkSize;
AP_LinkInsert->mp_NextLink = AP_LinkStd->mp_NextLink ;
AP_LinkStd ->mp_NextLink = AP_LinkInsert ;
@ -1081,18 +1036,15 @@ namespace ZNsMain
#endif //_DEBUG
if(this == &AO_CObjList ) return;
if(AO_CObjList.ml_Size<1) return;
this-> ChangeCapacity( AO_CObjList.ml_LinkCnt) ;
AO_CObjList.ChangeCapacity(-AO_CObjList.ml_LinkCnt) ;
if(this == &AO_CObjList ) return;
if(AO_CObjList.ml_LinkSize<1) return;
if(AP_LinkStd==0)
{
if(ml_Size==0)
if(ml_LinkSize==0)
{
mp_HeadLink=AO_CObjList.mp_HeadLink ;
ml_Size =AO_CObjList.ml_Size ;
mp_HeadLink = AO_CObjList.mp_HeadLink ;
ml_LinkSize = AO_CObjList.ml_LinkSize ;
}
else
{
@ -1101,8 +1053,8 @@ namespace ZNsMain
ZCLink::MakeRing(AO_CObjList.mp_HeadLink, mp_HeadLink->mp_PrevLink);
ZCLink::JoinLink(VP_TailLink , mp_HeadLink );
mp_HeadLink = AO_CObjList.mp_HeadLink;
ml_Size += AO_CObjList.ml_Size ;
mp_HeadLink = AO_CObjList.mp_HeadLink ;
ml_LinkSize += AO_CObjList.ml_LinkSize ;
}/*
else*/
}
@ -1113,12 +1065,12 @@ namespace ZNsMain
ZCLink::JoinLink(VP_TailLink, AP_LinkStd->mp_NextLink);
ZCLink::JoinLink(AP_LinkStd , AO_CObjList.mp_HeadLink);
ml_Size += AO_CObjList.ml_Size ;
ml_LinkSize += AO_CObjList.ml_LinkSize ;
}/*
else // AP_LinkStd!=0*/
AO_CObjList.mp_HeadLink=0;
AO_CObjList.ml_Size =0;
AO_CObjList.mp_HeadLink = 0;
AO_CObjList.ml_LinkSize = 0;
}/*
void JoinAfter
(ZtCObjList& AO_CObjList, ZCLink* AP_LinkStd, TypeSize AL_PosStd)*/
@ -1145,7 +1097,7 @@ namespace ZNsMain
ZCLink::MakeRing(mp_HeadLink , AP_CutLink->mp_PrevLink);
else ZCLink::JoinLink(AP_CutLink->mp_PrevLink, AP_CutLink->mp_NextLink);
return (--ml_Size, AP_CutLink);
return (--ml_LinkSize, AP_CutLink);
}/*
protected: ZCLink* CutLink(ZCLink* AP_CutLink)*/
@ -1154,22 +1106,22 @@ namespace ZNsMain
{
if(AL_CutPos==1) // 첫째 링크를 삭제.
{
if(ml_Size==1){ mp_HeadLink=0; }else
if(ml_LinkSize==1){ mp_HeadLink=0; }else
{
ZCLink::MakeRing
(
mp_HeadLink=mp_HeadLink->mp_NextLink,
AP_CutLink->mp_PrevLink
mp_HeadLink = mp_HeadLink->mp_NextLink,
AP_CutLink-> mp_PrevLink
);
////////////////
}/*
else :::::::::::::::::::::::::::::*/
}
else if(AL_CutPos==ml_Size) // 끝 링크를 삭제할 때
else if(AL_CutPos==ml_LinkSize) // 끝 링크를 삭제할 때
ZCLink::MakeRing(mp_HeadLink , AP_CutLink->mp_PrevLink);
else ZCLink::JoinLink(AP_CutLink->mp_PrevLink, AP_CutLink->mp_NextLink);
return (--ml_Size, AP_CutLink);
return (--ml_LinkSize, AP_CutLink);
}/*
ZCLink* CutLink(ZCLink* AP_CutLink, TypeSize AL_CutPos)*/
@ -1203,7 +1155,7 @@ namespace ZNsMain
#endif // _DEBUG
if(AL_CutHeadPos==1 && AL_CutTailPos==ml_Size) // 모든 링크를 삭제할 때.
if(AL_CutHeadPos==1 && AL_CutTailPos==ml_LinkSize) // 모든 링크를 삭제할 때.
{
mp_HeadLink=0;
}
@ -1211,18 +1163,18 @@ namespace ZNsMain
{
ZCLink::MakeRing(mp_HeadLink=AP_CutTail->mp_NextLink, AP_CutHead->mp_PrevLink);
}
else if(AL_CutTailPos==ml_Size) // 잘라내려는 링크가 끝 링크를 포함할 때.
else if(AL_CutTailPos==ml_LinkSize) // 잘라내려는 링크가 끝 링크를 포함할 때.
{
ZCLink::MakeRing(mp_HeadLink, AP_CutHead->mp_PrevLink);
}
else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때.
{
ZCLink::JoinLink(AP_CutHead ->mp_PrevLink, AP_CutTail->mp_NextLink);
ZCLink::JoinLink(AP_CutHead->mp_PrevLink, AP_CutTail->mp_NextLink);
}/*
else*/
TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ;
/*++++*/ ml_Size -= VL_CutSize ;
TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ;
/*++++*/ ml_LinkSize -= VL_CutSize ;
// AP_CutHead 과 AP_CutTail 을 연결하여
// 이중 원형 연결리스트가 되도록 한다.
@ -1248,11 +1200,8 @@ namespace ZNsMain
#endif //_DEBUG
this-> ChangeCapacity(-VL_CutSize) ;
ARR_StoreList.ChangeCapacity( VL_CutSize) ;
ARR_StoreList.mp_HeadLink = AP_CutHead ;
ARR_StoreList.ml_Size = VL_CutSize ;
ARR_StoreList.ml_LinkSize = VL_CutSize ;
return ARR_StoreList;
}/*
@ -1310,8 +1259,8 @@ namespace ZNsMain
ZCLink::MakeRing(VP_HeadLink, VP_TailLink);
ARR_StoreList.mp_HeadLink=VP_HeadLink;
ARR_StoreList.ml_Size =(AL_FarNum<0 ? -AL_FarNum : AL_FarNum)+1 ;
ARR_StoreList.mp_HeadLink = VP_HeadLink;
ARR_StoreList.ml_LinkSize = (AL_FarNum<0 ? -AL_FarNum : AL_FarNum)+1 ;
return ARR_StoreList;
}/*
@ -1326,7 +1275,7 @@ namespace ZNsMain
ZtCObjList& CopyThis(ZtCObjList& ARR_StoreList) const
{
return CopyLink(mp_HeadLink, ml_Size-1, RR(ARR_StoreList));
return CopyLink(mp_HeadLink, ml_LinkSize-1, RR(ARR_StoreList));
}/*
ZtCObjList& CopyThis(ZtCObjList& ARR_StoreList) const*/
@ -1344,7 +1293,7 @@ namespace ZNsMain
ZCLink::MakeRing(VP_HeadLink, VP_TailLink);
ARR_StoreList.mp_HeadLink= VP_HeadLink ;
ARR_StoreList.ml_Size = AL_DefaultSize ;
ARR_StoreList.ml_LinkSize= AL_DefaultSize ;
return ARR_StoreList;
}/*
@ -1388,12 +1337,12 @@ namespace ZNsMain
ZtCObjList()
{
mp_HeadLink=0;
ml_Size =0;
mp_HeadLink = 0;
ml_LinkSize = 0;
}/*
ZtCObjList()*/
ZtCObjList(const ZtCObjList& rhs):mp_HeadLink(0),ml_Size(0)
ZtCObjList(const ZtCObjList& rhs):mp_HeadLink(0),ml_LinkSize(0)
{
*this=rhs;
}/*
@ -1412,25 +1361,25 @@ namespace ZNsMain
ZtCObjList& operator=(const ZtCObjList& rhs)
{
if(rhs.ml_Size<1)
if(rhs.ml_LinkSize<1)
{
return DeleteAll();
}
if(ml_Size<=rhs.ml_Size)
if(ml_LinkSize<=rhs.ml_LinkSize)
{
AddDefault(rhs.ml_Size-ml_Size, ml_Size+1);
AddDefault(rhs.ml_LinkSize-ml_LinkSize, ml_LinkSize+1);
}
else // ml_Size > rhs.ml_Size
else // ml_LinkSize > rhs.ml_LinkSize
{
ZtCObjList VO_StoreList;
CutLink ////////////////////////////////////////
CutLink ////////////////////////////////////////////////
(
GetLinkPtr(rhs.ml_Size+1), rhs.ml_Size+1,
GetLinkPtr( ml_Size ), ml_Size ,
GetLinkPtr(rhs.ml_LinkSize+1), rhs.ml_LinkSize+1,
GetLinkPtr( ml_LinkSize ), ml_LinkSize ,
RR(VO_StoreList)
). DeleteAll();
/////////////////////////////////////////////////
/////////////////////////////////////////////////////////
}/*
else*/
@ -1438,14 +1387,14 @@ namespace ZNsMain
ZCLink* pRhsLink = rhs.mp_HeadLink;
ZCLink* pLhsLink = mp_HeadLink;
__for1(TypeSize, i, ml_Size)
__for1(TypeSize, i, ml_LinkSize)
{
**pLhsLink = ** pRhsLink ;
pLhsLink = pLhsLink->mp_NextLink;
pRhsLink = pRhsLink->mp_NextLink;
}/*
__for1(TypeSize, i, ml_Size)*/
__for1(TypeSize, i, ml_LinkSize)*/
return *this;
}/*
@ -1459,16 +1408,13 @@ namespace ZNsMain
bool IsEmpty() const*/
TypeSize GetSize () const{return ml_Size;}
TypeSize size () const{return ml_Size;}
TypeSize capacity() const{return mo_FreeObjt.capacity();}
TypeSize GetSize () const{return ml_LinkSize;}
TypeSize size () const{return ml_LinkSize;}
TypeSize capacity() const{return size()+mo_FreeObjt.size();}
TypeSize GetFreeSize() const
{ return mo_FreeObjt.size(); }
void ChangeCapacity(TypeSize AI_AddCut) const
{ mo_FreeObjt.ChangeCapacity(AI_AddCut); }
ZCLink* GetHeadLinkPtr(){return mp_HeadLink;}
ZCLink* GetTailLinkPtr()
@ -1492,7 +1438,7 @@ namespace ZNsMain
#ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size)
if(AL_Index<1 || AL_Index>ml_LinkSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1501,7 +1447,7 @@ namespace ZNsMain
::exit(1); return *(new Type);
}/*
if(AL_Index<1 || AL_Index>ml_Size)*/
if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG
@ -1513,7 +1459,7 @@ namespace ZNsMain
{
#ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size)
if(AL_Index<1 || AL_Index>ml_LinkSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1522,7 +1468,7 @@ namespace ZNsMain
::exit(1); return *(new Type);
}/*
if(AL_Index<1 || AL_Index>ml_Size)*/
if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG
@ -1554,7 +1500,7 @@ namespace ZNsMain
(
mp_HeadLink == 0 ||
AL_FirstFindIndex < 1 ||
AL_FirstFindIndex > ml_Size
AL_FirstFindIndex > ml_LinkSize
) ;
if(CB_IsTrue) return 0; ////////////////
@ -1566,7 +1512,7 @@ namespace ZNsMain
do /////////
{
if(VP_TempLink->GetData()==AR_SearchType) return VL_FindIndex;
if(VL_FindIndex ==ml_Size ) return 0 ;
if(VL_FindIndex ==ml_LinkSize ) return 0 ;
VP_TempLink=VP_TempLink->mp_NextLink; ++VL_FindIndex;
}
@ -1604,9 +1550,9 @@ namespace ZNsMain
) const
/*#############################################################################*/
{
if(mp_HeadLink==0 || AL_FirstFindIndex<1 || AL_FirstFindIndex>ml_Size)
if(mp_HeadLink==0 || AL_FirstFindIndex<1 || AL_FirstFindIndex>ml_LinkSize)
return 0;
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
TypeSize VL_FindIndex= AL_FirstFindIndex;
ZCLink* VP_TempLink = const_cast<ZCLink*>
@ -1617,7 +1563,7 @@ namespace ZNsMain
do /**/
{
if(VP_TempLink ==AP_SearchLink) return VL_FindIndex;
if(VL_FindIndex==ml_Size ) return 0 ;
if(VL_FindIndex==ml_LinkSize ) return 0 ;
VP_TempLink=VP_TempLink->mp_NextLink; ++VL_FindIndex;
}
@ -1669,7 +1615,7 @@ namespace ZNsMain
{
#ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size)
if(AL_Index<1 || AL_Index>ml_LinkSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1678,12 +1624,12 @@ namespace ZNsMain
::exit(1); return 0;
}/*
if(AL_Index<1 || AL_Index>ml_Size)*/
if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif // _DEBUG
TypeSize VI_LeftDistance =AL_Index-1 ;
TypeSize VI_RightDistance=ml_Size-AL_Index+1;
TypeSize VI_LeftDistance =AL_Index-1 ;
TypeSize VI_RightDistance=ml_LinkSize-AL_Index+1;
TypeSize VI_ShortDistance=
(VI_LeftDistance<=VI_RightDistance ? VI_LeftDistance : -VI_RightDistance);
@ -1695,7 +1641,7 @@ namespace ZNsMain
{
#ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size)
if(AL_Index<1 || AL_Index>ml_LinkSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1704,12 +1650,12 @@ namespace ZNsMain
::exit(1); return 0;
}/*
if(AL_Index<1 || AL_Index>ml_Size)*/
if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif // _DEBUG
TypeSize VI_LeftDistance = AL_Index-1 ;
TypeSize VI_RightDistance= ml_Size -AL_Index+1;
TypeSize VI_LeftDistance = AL_Index-1 ;
TypeSize VI_RightDistance= ml_LinkSize -AL_Index+1;
TypeSize VI_ShortDistance=
(VI_LeftDistance<=VI_RightDistance ? VI_LeftDistance : -VI_RightDistance);
@ -1723,9 +1669,9 @@ namespace ZNsMain
if(mp_HeadLink==0) return *this;
mo_FreeObjt.RecvFreeIn
( ml_Size, mp_HeadLink, mp_HeadLink->mp_PrevLink );
( ml_LinkSize, mp_HeadLink, mp_HeadLink->mp_PrevLink );
mp_HeadLink= 0; ml_Size= 0; return *this;
mp_HeadLink= 0; ml_LinkSize= 0; return *this;
}/*
ZtCObjList& DeleteAll()*/
@ -1814,7 +1760,7 @@ namespace ZNsMain
ZtCObjList& DeleteLink(TypeSize AL_DeletePos)
{
if(AL_DeletePos<1 || this->ml_Size>AL_DeletePos) return *this;
if(AL_DeletePos<1 || this->ml_LinkSize>AL_DeletePos) return *this;
Delete(this->GetLinkPtr(AL_DeletePos), AL_DeletePos); return *this;
}/*
@ -1823,7 +1769,7 @@ namespace ZNsMain
ZtCObjList& DeleteHead()
{
if(ml_Size>0)
if(ml_LinkSize>0)
#if(_CODE_NEW_)
mo_FreeObjt.RecvFreeIn
( this->CutLink(mp_HeadLink) );
@ -1856,7 +1802,7 @@ namespace ZNsMain
ZtCObjList& DeleteTail()
{
if(ml_Size>0)
if(ml_LinkSize>0)
#if(_CODE_NEW_)
mo_FreeObjt.RecvFreeIn
( this->CutLink(mp_HeadLink->mp_PrevLink) );
@ -1875,7 +1821,7 @@ namespace ZNsMain
(
AL_DefaultSize< 1 ||
AL_AddPos < 1 ||
AL_AddPos > ml_Size+1
AL_AddPos > ml_LinkSize+1
);
if(CB_IsTrue) return 0; //////////////////
@ -1949,7 +1895,7 @@ namespace ZNsMain
**VP_NewNode = AR_Type;
JoinAfter
(VP_NewNode, GetTailLinkPtr(), ml_Size);
(VP_NewNode, GetTailLinkPtr(), ml_LinkSize);
return *this ;
}/*
ZtCObjList& AddTail(TypeArg AR_Type)*/
@ -1985,7 +1931,7 @@ namespace ZNsMain
#else
ZCLink* VP_NewLink = new ZCLink ;
#endif
JoinAfter(VP_NewLink, GetTailLinkPtr(), ml_Size); return VP_NewLink;
JoinAfter(VP_NewLink, GetTailLinkPtr(), ml_LinkSize); return VP_NewLink;
}
@ -2006,15 +1952,18 @@ namespace ZNsMain
if(this==&rhs) return *this;
JoinAfter(rhs.CutLink(AP_CLink), GetTailLinkPtr(), ml_Size);
JoinAfter
(rhs.CutLink(AP_CLink), GetTailLinkPtr(), ml_LinkSize);
mp_HeadLink=mp_HeadLink->GetPrevPtr(); return *this;
mp_HeadLink = mp_HeadLink->GetPrevPtr() ;
return *this;
}/*
ZtCObjList& JoinHead(ZtCObjList& rhs, ZCLink* AP_CLink)*/
ZtCObjList& JoinTail(ZtCObjList& rhs)
{
if(this==&rhs) return *this; JoinAfter(rhs, GetTailLinkPtr(), ml_Size); return *this;
if(this==&rhs) return *this; JoinAfter(rhs, GetTailLinkPtr(), ml_LinkSize); return *this;
}/*
ZtCObjList& JoinTail(ZtCObjList& rhs)*/
@ -2028,7 +1977,7 @@ namespace ZNsMain
(
rhs.CutLink(AP_CLink) ,
GetTailLinkPtr() ,
ml_Size
ml_LinkSize
);
return *this; ////////////////////////////
}/*
@ -2056,9 +2005,9 @@ namespace ZNsMain
fileout<<"Error In 'ZtCObjList& JoinAfter(ZtCObjList& rhs,"<<std::endl;
fileout<<" (ZtCObjList& rhs ,"<<std::endl;
fileout<<" ZCLink* AP_LinkOfRhs ,"<<std::endl;
fileout<<" TypeSize AL_AddPosOfRhs ,"<<std::endl;
fileout<<" TypeSize AL_AddPosOfRhs ,"<<std::endl;
fileout<<" ZCLink* AP_LinkStd ,"<<std::endl;
fileout<<" TypeSize AL_PosStd" <<std::endl;
fileout<<" TypeSize AL_PosStd" <<std::endl;
fileout<<"/*//////////////////////////*/ ): Parameter is bad index"<<std::endl;
fileout.close();
@ -2113,10 +2062,7 @@ namespace ZNsMain
#endif // _DEBUG
OnDelete(AP_CutHead, AL_CutHeadPos, AP_CutTail, AL_CutTailPos);
if(AL_CutHeadPos==1 && AL_CutTailPos==ml_Size) // 모든 링크를 삭제할 때.
if(AL_CutHeadPos==1 && AL_CutTailPos==ml_LinkSize) // 모든 링크를 삭제할 때.
{
mp_HeadLink=0;
}
@ -2124,7 +2070,7 @@ namespace ZNsMain
{
ZCLink::MakeRing(mp_HeadLink=AP_CutTail->mp_NextLink, AP_CutHead->mp_PrevLink);
}
else if(AL_CutTailPos==ml_Size) // 잘라내려는 링크가 끝 링크를 포함할 때.
else if(AL_CutTailPos==ml_LinkSize) // 잘라내려는 링크가 끝 링크를 포함할 때.
{
ZCLink::MakeRing(mp_HeadLink, AP_CutHead->mp_PrevLink);
}
@ -2134,28 +2080,32 @@ namespace ZNsMain
}/*
else*/
ml_Size -= AL_CutTailPos-AL_CutHeadPos+1 ;
TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ;
/*++++*/ ml_LinkSize -= VL_CutSize ;
/* 여기까지는
// 여기까지는 CutLink(ZCLink*,TypeSize,ZCLink*,TypeSize,ZtCObjList&) 와 같다. 이후에 CutLink() 에서는
// ARR_StoreList 가 비어 있는 것으로 간주하지만, CutLinkOut() 는 ARR_StoreList 이 비어 있지
// 않은 경우에도 대비한다.
CutLink(ZCLink*, TypeSize, ZCLink*, TypeSize, ZtCObjList&)
if(ARR_StoreList.ml_Size<1)
와 같다. 이후에 CutLink() 에서는 ARR_StoreList 가 비어 있는 것으로
간주하지만, CutLinkOut() 는 ARR_StoreList 이 비어 있지 않은 경우에
도 대비한다.
*/
if(ARR_StoreList.ml_LinkSize<1)
{
// AP_CutHead 과 AP_CutTail 을 연결하여 이중 원형 연결리스트가 되도록 한다.
ZCLink::MakeRing(AP_CutHead, AP_CutTail);
ARR_StoreList.mp_HeadLink=AP_CutHead ;
ARR_StoreList.ml_Size =AL_CutTailPos-AL_CutHeadPos+1;
ARR_StoreList.mp_HeadLink = AP_CutHead ;
ARR_StoreList.ml_LinkSize = AL_CutTailPos-AL_CutHeadPos+1;
}
else
{
ZCLink::JoinLink(ARR_StoreList.mp_HeadLink->mp_PrevLink, AP_CutHead);
ZCLink::MakeRing(ARR_StoreList.mp_HeadLink , AP_CutTail);
ARR_StoreList.ml_Size += AL_CutTailPos-AL_CutHeadPos+1 ;
ARR_StoreList.ml_LinkSize += AL_CutTailPos-AL_CutHeadPos+1 ;
}/*
else*/
@ -2173,7 +2123,7 @@ namespace ZNsMain
operator Type&()
{
return AddDefault(1, ml_Size+1)->GetData();
return AddDefault(1, ml_LinkSize+1)->GetData();
}/*
operator Type&()*/
@ -2182,7 +2132,7 @@ namespace ZNsMain
{
#ifdef _DEBUG
if(AI_Index<1 || AI_Index>ml_Size)
if(AI_Index<1 || AI_Index>ml_LinkSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -2191,7 +2141,7 @@ namespace ZNsMain
::exit(1);
}/*
if(AI_Index<1 || AI_Index>ml_Size)*/
if(AI_Index<1 || AI_Index>ml_LinkSize)*/
#endif //_DEBUG
@ -2204,7 +2154,7 @@ namespace ZNsMain
{
#ifdef _DEBUG
if(AI_Index<1 || AI_Index>ml_Size)
if(AI_Index<1 || AI_Index>ml_LinkSize)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -2213,7 +2163,7 @@ namespace ZNsMain
::exit(1);
}/*
if(AI_Index<1 || AI_Index>ml_Size)*/
if(AI_Index<1 || AI_Index>ml_LinkSize)*/
#endif //_DEBUG
@ -2317,7 +2267,7 @@ namespace ZNsMain
ZtCObjList& Rotate(TypeSize AL_RotateNum)
{
if(ml_Size>0) mp_HeadLink =
if(ml_LinkSize>0) mp_HeadLink =
mp_HeadLink->GetNextPrevPtr(AL_RotateNum);
return *this;
@ -2325,23 +2275,23 @@ namespace ZNsMain
ZtCObjList& Rotate(TypeSize AL_RotateNum)*/
ZtCObjList& Rotate ()
{ if(ml_Size>0) mp_HeadLink = mp_HeadLink->mp_NextLink ; return *this; }
{ if(ml_LinkSize>0) mp_HeadLink = mp_HeadLink->mp_NextLink ; return *this; }
ZtCObjList& RotateBack()
{ if(ml_Size>0) mp_HeadLink = mp_HeadLink->mp_PrevLink ; return *this; }
{ if(ml_LinkSize>0) mp_HeadLink = mp_HeadLink->mp_PrevLink ; return *this; }
template<typename TFunctor> void IterElement(TFunctor AO_Functor)
{
ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size)
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)( VP_LoopLink->mo_Data );
VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/*
__for0(TypeSize, i, ml_Size)*/
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template<typename TFunctor> void IterElement(TFunctor AO_Functor) */
@ -2354,7 +2304,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size)
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
@ -2364,7 +2314,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/*
__for0(TypeSize, i, ml_Size)*/
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template<typename TFunctor, typename TTypeHelp>
void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
@ -2381,7 +2331,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size)
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
@ -2393,7 +2343,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/*
__for0(TypeSize, i, ml_Size)*/
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
@ -2409,14 +2359,14 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size)
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef
(AO_Functor)(VP_LoopLink->mo_Data, AR_TypeHelp);
VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/*
__for0(TypeSize, i, ml_Size)*/
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template<typename TFunctor, typename TTypeHelp>
void IterElemRef(TFunctor AO_Functor, TTypeHelp& AR_TypeHelp) */
@ -2432,14 +2382,14 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size)
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( VP_LoopLink->mo_Data, AR_TypeHelp1, AR_TypeHelp2 );
VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/*
__for0(TypeSize, i, ml_Size)*/
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
@ -2455,14 +2405,14 @@ namespace ZNsMain
if(size()<1) return; ZCLink*
VP_LoopLink = mp_HeadLink->mp_PrevLink;
__for0(TypeSize, i, ml_Size)
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)( VP_LoopLink->mo_Data );
VP_LoopLink = VP_LoopLink->mp_PrevLink ;
}/*
__for0(TypeSize, i, ml_Size)*/
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template<typename TFunctor> void IterElemRev(TFunctor AO_Functor) */
@ -2475,7 +2425,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink = mp_HeadLink->mp_PrevLink ;
__for0(TypeSize, i, ml_Size)
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
@ -2485,7 +2435,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_PrevLink ;
}/*
__for0(TypeSize, i, ml_Size)*/
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template<typename TFunctor, typename TTypeHelp>
void IterElemRev(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
@ -2504,7 +2454,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink = mp_HeadLink->mp_PrevLink ;
__for0(TypeSize, i, ml_Size)
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
@ -2516,7 +2466,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_PrevLink ;
}/*
__for0(TypeSize, i, ml_Size)*/
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
@ -2722,25 +2672,25 @@ namespace ZNsMain
ZCIterator begin()
{
return ZCIterator(mp_HeadLink, (ml_Size>0 ? 1 : 0) );
return ZCIterator(mp_HeadLink, (ml_LinkSize>0 ? 1 : 0) );
}/*
ZCIterator begin()*/
ZCIterator end()
{
return ZCIterator(mp_HeadLink, (ml_Size>0 ? ml_Size+1 : 0) );
return ZCIterator(mp_HeadLink, (ml_LinkSize>0 ? ml_LinkSize+1 : 0) );
}/*
ZCIterator end()*/
const ZCIterator begin() const
{
return ZCIterator(mp_HeadLink, (ml_Size>0 ? 1 : 0) );
return ZCIterator(mp_HeadLink, (ml_LinkSize>0 ? 1 : 0) );
}/*
const ZCIterator begin() const*/
const ZCIterator end() const
{
return ZCIterator(mp_HeadLink, (ml_Size>0 ? ml_Size+1 : 0) );
return ZCIterator(mp_HeadLink, (ml_LinkSize>0 ? ml_LinkSize+1 : 0) );
}/*
const ZCIterator end() const*/