From fee4f8aee1ee85390cfdf195c808968d7652e586 Mon Sep 17 00:00:00 2001 From: sauron Date: Fri, 3 Oct 2025 16:01:49 +0900 Subject: [PATCH] commit 2025-10-03 16:01 delete ChangeCapacity() in ZtCBaseList : ZCppMain/ZMainHead.H --- ZCppMain/ZMainHead.H | 152 ++++++++------------ ZCppMain/ZtCObjList.H | 304 ++++++++++++++++----------------------- ZCppMain/ZtCSimList.H | 293 ++++++++++++++++--------------------- ZCppMainTest/ZtCBaseList_000.cpp | 12 -- 4 files changed, 312 insertions(+), 449 deletions(-) diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index 511053e..7d1f5bd 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -4097,12 +4097,6 @@ namespace ZNsMain }/* _NP_ TypeSize capacity() const*/ - - _NP_ void ChangeCapacity(TypeSize AI_AddCut) - { - }/* - _NP_ void ChangeCapacity(TypeSize AI_AddCut)*/ - public: };/* template class ZtCBody*/ @@ -5398,9 +5392,9 @@ namespace ZNsMain public : private : - ZCLink* mp_HeadLink; - ZCLink* mp_TailLink; - TypeSize ml_LinkCnt ; + ZCLink* mp_HeadLink ; + ZCLink* mp_TailLink ; + TypeSize ml_LinkSize ; private : TypeChild& GetChildObj() @@ -5621,25 +5615,12 @@ namespace ZNsMain ) /////////////////////////////////////////////////////*/ - - _VT_ void ChangeCapacity(TypeSize AI_AddCut) - { - if(TTypeCRTP::ZEUseCRTP<1) - { - return; /*nothing to do*/ - }/* - if(TTypeCRTP::ZEUseCRTP<1)*/ - - GetChildObj().ChangeCapacity(AI_AddCut); - }/* - _VT_ void ChangeCapacity(TypeSize AI_AddCut)*/ - /*private :*/ private : ZCLink* AddTailLink(ZCLink* AP_NewLink) { - if(ml_LinkCnt<1) + if(ml_LinkSize<1) { mp_HeadLink = AP_NewLink; mp_TailLink = AP_NewLink; @@ -5647,14 +5628,14 @@ namespace ZNsMain ZCLink::MakeRing ( mp_HeadLink, mp_TailLink ) ; - ml_LinkCnt= 1; return AP_NewLink; + ml_LinkSize= 1; return AP_NewLink; }/* - if(ml_LinkCnt<1)*/ + if(ml_LinkSize<1)*/ ZCLink::JoinLink(mp_TailLink, AP_NewLink) ; ZCLink::MakeRing(mp_HeadLink, AP_NewLink) ; - mp_TailLink = AP_NewLink; ++ml_LinkCnt ; + mp_TailLink = AP_NewLink; ++ml_LinkSize ; return AP_NewLink; /*::::::::::::::::::::*/ }/* @@ -5662,7 +5643,7 @@ namespace ZNsMain ZCLink* AddHeadLink(ZCLink* AP_NewLink) { - if(ml_LinkCnt<1) + if(ml_LinkSize<1) { mp_HeadLink = AP_NewLink; mp_TailLink = AP_NewLink; @@ -5670,14 +5651,14 @@ namespace ZNsMain ZCLink::MakeRing ( mp_HeadLink, mp_TailLink ) ; - ml_LinkCnt= 1; return AP_NewLink; + ml_LinkSize= 1; return AP_NewLink; }/* - if(ml_LinkCnt<1)*/ + if(ml_LinkSize<1)*/ ZCLink::JoinLink(AP_NewLink, mp_HeadLink) ; ZCLink::MakeRing(AP_NewLink, mp_TailLink) ; - mp_HeadLink = AP_NewLink; ++ml_LinkCnt ; + mp_HeadLink = AP_NewLink; ++ml_LinkSize ; return AP_NewLink; /*::::::::::::::::::::*/ }/* @@ -5691,7 +5672,7 @@ namespace ZNsMain { mp_HeadLink = 0 ; mp_TailLink = 0 ; - ml_LinkCnt = 0 ; + ml_LinkSize = 0 ; }/* ZtCBaseList()*/ @@ -5699,7 +5680,7 @@ namespace ZNsMain { mp_HeadLink = 0 ; mp_TailLink = 0 ; - ml_LinkCnt = 0 ; + ml_LinkSize = 0 ; *this = (rhs); }/* @@ -5731,7 +5712,7 @@ namespace ZNsMain ); /////////////////////////////////////////////////// - ml_LinkCnt -= VL_MinusSize; + ml_LinkSize -= VL_MinusSize; } else if(VL_MinusSize<0) { @@ -5746,7 +5727,7 @@ namespace ZNsMain ); /////////////////////////////////////////////////// - if(ml_LinkCnt>0) + if(ml_LinkSize>0) { ZCLink::JoinLink(mp_TailLink, VP_HeadLink); ZCLink::MakeRing(mp_HeadLink, VP_TailLink); @@ -5762,7 +5743,7 @@ namespace ZNsMain }/* else*/ - ml_LinkCnt += (-VL_MinusSize); + ml_LinkSize += (-VL_MinusSize); }/* else if(VL_MinusSize<0)*/ @@ -5786,14 +5767,14 @@ namespace ZNsMain void DeleteAll() { - if(ml_LinkCnt<1) return; + if(ml_LinkSize<1) return; RecvFreeIn - (ml_LinkCnt, mp_HeadLink, mp_TailLink); + (ml_LinkSize, mp_HeadLink, mp_TailLink); mp_HeadLink =0 ; mp_TailLink =0 ; - ml_LinkCnt =0 ; + ml_LinkSize =0 ; }/* void DeleteAll()*/ @@ -5864,18 +5845,18 @@ namespace ZNsMain void DeleteHead() { - if(ml_LinkCnt<1) return; + if(ml_LinkSize<1) return; ZCLink* VP_TempLink = mp_HeadLink ; mp_HeadLink = mp_HeadLink->mp_NextLink ; RecvFreeIn(VP_TempLink); - if(--ml_LinkCnt<1) + if(--ml_LinkSize<1) { mp_HeadLink = mp_TailLink =0; return; }/* - if(--ml_LinkCnt<1)*/ + if(--ml_LinkSize<1)*/ ZCLink::MakeRing(mp_HeadLink, mp_TailLink); }/* @@ -5884,18 +5865,18 @@ namespace ZNsMain void DeleteTail() { - if(ml_LinkCnt<1) return; + if(ml_LinkSize<1) return; ZCLink* VP_TempLink = mp_TailLink ; mp_TailLink = mp_TailLink->mp_PrevLink ; RecvFreeIn(VP_TempLink); - if(--ml_LinkCnt<1) + if(--ml_LinkSize<1) { mp_HeadLink = mp_TailLink =0; return; }/* - if(--ml_LinkCnt<1)*/ + if(--ml_LinkSize<1)*/ ZCLink::MakeRing(mp_HeadLink, mp_TailLink); }/* @@ -5906,34 +5887,31 @@ namespace ZNsMain { // AP_StdLink 의 뒤에 rhs 를 삽입. - if(rhs.ml_LinkCnt<1) return *this; - - this->ChangeCapacity( rhs.ml_LinkCnt) ; - rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; + if(rhs.ml_LinkSize<1) return *this; if(AP_StdLink==0) // 맨 앞에 삽입 { - if(ml_LinkCnt<1) + if(ml_LinkSize<1) { - mp_HeadLink =rhs.mp_HeadLink; - mp_TailLink =rhs.mp_TailLink; - ml_LinkCnt =rhs.ml_LinkCnt ; + mp_HeadLink = rhs.mp_HeadLink ; + mp_TailLink = rhs.mp_TailLink ; + ml_LinkSize = rhs.ml_LinkSize ; } - else // ml_LinkCnt>=1 + else // ml_LinkSize>=1 { ZCLink::JoinLink( rhs.mp_TailLink, mp_HeadLink ); ZCLink::MakeRing( rhs.mp_HeadLink, mp_TailLink ); - mp_HeadLink =rhs.mp_HeadLink; - ml_LinkCnt =rhs.ml_LinkCnt ; + mp_HeadLink = rhs.mp_HeadLink ; + ml_LinkSize = rhs.ml_LinkSize ; }/* - else // ml_LinkCnt>=1*/ + else // ml_LinkSize>=1*/ - ml_LinkCnt += rhs.ml_LinkCnt; + ml_LinkSize += rhs.ml_LinkSize; rhs.mp_HeadLink = 0 ; rhs.mp_TailLink = 0 ; - rhs.ml_LinkCnt = 0 ; + rhs.ml_LinkSize = 0 ; return *this; }/* @@ -5948,11 +5926,11 @@ namespace ZNsMain if(AP_StdLink==mp_TailLink) { mp_TailLink=rhs.mp_TailLink; } - rhs.mp_HeadLink=0; - rhs.mp_TailLink=0; - rhs.ml_LinkCnt =0; + rhs.mp_HeadLink =0 ; + rhs.mp_TailLink =0 ; + rhs.ml_LinkSize =0 ; - ml_LinkCnt += rhs.ml_LinkCnt; return *this; + ml_LinkSize += rhs.ml_LinkSize; return *this; }/* ZtCBaseList& JoinAfter(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/ @@ -5965,30 +5943,27 @@ namespace ZNsMain if(AP_StdLink==0) // 맨 뒤에 삽입 { - if(ml_LinkCnt<1) + if(ml_LinkSize<1) { - mp_HeadLink =rhs.mp_HeadLink; - mp_TailLink =rhs.mp_TailLink; - ml_LinkCnt =rhs.ml_LinkCnt ; + mp_HeadLink = rhs.mp_HeadLink ; + mp_TailLink = rhs.mp_TailLink ; + ml_LinkSize = rhs.ml_LinkSize ; } - else // ml_LinkCnt>=1 + else // ml_LinkSize>=1 { ZCLink::JoinLink(mp_TailLink, rhs.mp_HeadLink ); ZCLink::MakeRing(mp_HeadLink, rhs.mp_TailLink ); - mp_TailLink = rhs.mp_TailLink ; - ml_LinkCnt += rhs.ml_LinkCnt ; + mp_TailLink = rhs.mp_TailLink ; + ml_LinkSize += rhs.ml_LinkSize ; }/* - else // ml_LinkCnt>=1*/ - - this->ChangeCapacity( rhs.ml_LinkCnt) ; - rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; + else // ml_LinkSize>=1*/ rhs.mp_HeadLink=0; rhs.mp_TailLink=0; - rhs.ml_LinkCnt =0; + rhs.ml_LinkSize=0; - ml_LinkCnt += rhs.ml_LinkCnt; return *this; + ml_LinkSize += rhs.ml_LinkSize; return *this; }/* if(AP_StdLink==0)*/ @@ -6001,14 +5976,11 @@ namespace ZNsMain if(AP_StdLink==mp_HeadLink) { mp_HeadLink = rhs.mp_HeadLink; } - this->ChangeCapacity( rhs.ml_LinkCnt) ; - rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; + rhs.mp_HeadLink =0 ; + rhs.mp_TailLink =0 ; + rhs.ml_LinkSize =0 ; - rhs.mp_HeadLink=0; - rhs.mp_TailLink=0; - rhs.ml_LinkCnt =0; - - ml_LinkCnt += rhs.ml_LinkCnt; return *this; + ml_LinkSize += rhs.ml_LinkSize; return *this; }/* ZtCBaseList& JoinBefore(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/ @@ -6028,8 +6000,8 @@ namespace ZNsMain operator TypeData&() { return AddTail() ; } - TypeSize size() const{ return ml_LinkCnt; } - TypeSize GetSize() const{ return ml_LinkCnt; } + TypeSize size() const{ return ml_LinkSize; } + TypeSize GetSize() const{ return ml_LinkSize; } void push_front(TypeArg AO_ArgData){AddHead(AO_ArgData);} @@ -6050,7 +6022,7 @@ namespace ZNsMain { ZCLink* VP_LoopLink=mp_HeadLink; - __for0(TypeSize, i, ml_LinkCnt) + __for0(TypeSize, i, ml_LinkSize) { ZtCTypeData:: GetObjRef(AO_Functor)(VP_LoopLink->mo_Data); @@ -6097,7 +6069,7 @@ namespace ZNsMain ZCLink* VP_LoopLink=mp_HeadLink; - __for0(TypeSize, i, ml_LinkCnt) + __for0(TypeSize, i, ml_LinkSize) { ZtCTypeData::GetObjRef(AO_Functor) ( @@ -6130,7 +6102,7 @@ namespace ZNsMain ZCLink* VP_LoopLink=mp_HeadLink; - __for0(TypeSize, i, ml_LinkCnt) + __for0(TypeSize, i, ml_LinkSize) { ZtCTypeData::GetObjRef(AO_Functor) ( @@ -6155,7 +6127,7 @@ namespace ZNsMain { ZCLink* VP_LoopLink=mp_TailLink; - __for0(TypeSize, i, ml_LinkCnt) + __for0(TypeSize, i, ml_LinkSize) { ZtCTypeData:: GetObjRef(AO_Functor)(VP_LoopLink->mo_Data); @@ -6174,7 +6146,7 @@ namespace ZNsMain ZCLink* VP_LoopLink = mp_TailLink; - __for0(TypeSize, i, ml_LinkCnt) + __for0(TypeSize, i, ml_LinkSize) { ZtCTypeData::GetObjRef(AO_Functor) ( @@ -6199,7 +6171,7 @@ namespace ZNsMain ZCLink* VP_LoopLink = mp_TailLink; - __for0(TypeSize, i, ml_LinkCnt) + __for0(TypeSize, i, ml_LinkSize) { ZtCTypeData::GetObjRef(AO_Functor) ( diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 5ddba28..42b8648 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -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 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<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<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 @@ -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<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<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,"<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<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<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 void IterElement(TFunctor AO_Functor) { ZCLink* VP_LoopLink=mp_HeadLink; - __for0(TypeSize, i, ml_Size) + __for0(TypeSize, i, ml_LinkSize) { ZtCTypeData:: GetObjRef(AO_Functor)( VP_LoopLink->mo_Data ); VP_LoopLink = VP_LoopLink->mp_NextLink ; }/* - __for0(TypeSize, i, ml_Size)*/ + __for0(TypeSize, i, ml_LinkSize)*/ }/* template 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::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 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::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::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 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::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:: GetObjRef(AO_Functor)( VP_LoopLink->mo_Data ); VP_LoopLink = VP_LoopLink->mp_PrevLink ; }/* - __for0(TypeSize, i, ml_Size)*/ + __for0(TypeSize, i, ml_LinkSize)*/ }/* template 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::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 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::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*/ diff --git a/ZCppMain/ZtCSimList.H b/ZCppMain/ZtCSimList.H index 5b6b473..a64cd4f 100644 --- a/ZCppMain/ZtCSimList.H +++ b/ZCppMain/ZtCSimList.H @@ -47,9 +47,7 @@ namespace ZNsMain friend class ZNsMain::ZtCSimList; ///////////////////////////// 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)*/ @@ -298,8 +296,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 ; @@ -321,10 +317,7 @@ namespace ZNsMain if(VP_MakeLink==0) { - ml_AllSize -= AL_MakeSize+1 ; - VB_IsHeapOver = true ; - - break; + VB_IsHeapOver = true; break; }/* if(VP_MakeLink==0)*/ @@ -399,14 +392,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)*/ @@ -421,7 +410,6 @@ namespace ZNsMain if(VP_MakeLink==0) { - ml_AllSize -= AL_FarNum+1 ; APR_TailCopy = VP_TailLink ; VB_IsHeapOver= true ; @@ -543,9 +531,7 @@ namespace ZNsMain ZtCBody() { - ml_AllSize = ml_UseSize = 0 ; - mp_NoUseHead = mp_NoUseTail = 0 ; }/* @@ -559,9 +545,7 @@ namespace ZNsMain ZtCBody(const ZtCBody& rhs) { - ml_AllSize = ml_UseSize = 0 ; - mp_NoUseHead = mp_NoUseTail = 0 ; }/* @@ -592,7 +576,6 @@ namespace ZNsMain } while(--VI_UseSize>0); /*++++++++*/ - ml_AllSize -= ml_UseSize; ml_UseSize = 0 ; mp_NoUseHead = mp_NoUseTail = 0 ; @@ -625,10 +608,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)*/ @@ -676,11 +656,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 ; }/* @@ -720,11 +697,9 @@ 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; @@ -752,32 +727,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 class ZtCBody*/ @@ -1013,7 +968,7 @@ namespace ZNsMain //public : protected: - TTypSize ml_Size ; + TTypSize ml_LinkSize ; ZCLink* mp_HeadLink ; ZCLink* mp_TailLink ; mutable ZCFreeHeap mo_FreeObjt ; @@ -1051,7 +1006,7 @@ namespace ZNsMain ARR_StoreList.mp_HeadLink= VP_HeadLink ; ARR_StoreList.mp_TailLink= VP_TailLink ; - ARR_StoreList.ml_Size = AL_FarNum+1 ; + ARR_StoreList.ml_LinkSize= AL_FarNum+1 ; return ARR_StoreList; }/* @@ -1096,7 +1051,7 @@ namespace ZNsMain } //else - return (--ml_Size, AP_CutLink); + return (--ml_LinkSize, AP_CutLink); }/* ZCLink* CutLink(ZCLink* AP_PrevLink, ZCLink* AP_CutLink)*/ @@ -1130,7 +1085,7 @@ namespace ZNsMain } //else - return (--ml_Size, AP_CutLink); + return (--ml_LinkSize, AP_CutLink); } //ZCLink* CutLink(ZCLink* AP_PrevLink, ZCLink* AP_CutLink, TTypSize AL_CutPos) @@ -1172,11 +1127,12 @@ namespace ZNsMain } else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때. { - AP_CutHeadPrev->mp_NextLink=AP_CutTail->mp_NextLink; + AP_CutHeadPrev->mp_NextLink = AP_CutTail->mp_NextLink; } //else - ml_Size -= AL_CutTailPos-AL_CutHeadPos+1 ; + TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ; + /*++++*/ ml_LinkSize-= VL_CutSize ; #ifdef _DEBUG @@ -1185,20 +1141,20 @@ namespace ZNsMain { std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); fileout<ml_Size) + if(AL_Index<1 || AL_Index>ml_LinkSize) { std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); fileout<ml_Size)*/ + if(AL_Index<1 || AL_Index>ml_LinkSize)*/ #endif //_DEBUG @@ -1325,7 +1281,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<ml_Size)*/ + if(AL_Index<1 || AL_Index>ml_LinkSize)*/ #endif //_DEBUG @@ -1366,7 +1322,7 @@ namespace ZNsMain #endif VP_AddLink->mo_Data= AR_Type ; - if(++ml_Size==1) // ml_Size==0 + if(++ml_LinkSize==1) // ml_LinkSize==0 { mp_HeadLink = mp_TailLink = VP_AddLink ; @@ -1387,7 +1343,7 @@ namespace ZNsMain { ZCLink* VP_AddLink=GetCFreeHeap().SendFreeOut(); - if(++ml_Size==1) // ml_Size==0 + if(++ml_LinkSize==1) // ml_LinkSize==0 { mp_HeadLink = mp_TailLink = VP_AddLink ; @@ -1416,7 +1372,7 @@ namespace ZNsMain #endif VP_AddLink->mo_Data= AR_Type ; - if(++ml_Size==1) // ml_Size==0 + if(++ml_LinkSize==1) // ml_LinkSize==0 { mp_HeadLink = mp_TailLink = VP_AddLink ; @@ -1437,7 +1393,7 @@ namespace ZNsMain { ZCLink* VP_AddLink = GetCFreeHeap().SendFreeOut(); - if(++ml_Size==1) // ml_Size==0 + if(++ml_LinkSize==1) // ml_LinkSize==0 { mp_HeadLink = mp_TailLink = VP_AddLink ; @@ -1605,7 +1561,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<ml_Size)*/ + if(AL_Index<1 || AL_Index>ml_LinkSize)*/ #endif //_DEBUG @@ -1626,7 +1582,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<ml_Size)*/ + if(AL_Index<1 || AL_Index>ml_LinkSize)*/ #endif //_DEBUG @@ -1677,7 +1633,7 @@ namespace ZNsMain mp_HeadLink = AP_Link ; } - ++ml_Size; ZCLink::MakeRing(mp_HeadLink, mp_TailLink); + ++ml_LinkSize; ZCLink::MakeRing(mp_HeadLink, mp_TailLink); }/* void JoinHead(ZCLink* AP_Link)*/ @@ -1717,7 +1673,7 @@ namespace ZNsMain }/* else*/ - ++ml_Size; ZCLink::MakeRing(mp_HeadLink, mp_TailLink); + ++ml_LinkSize; ZCLink::MakeRing(mp_HeadLink, mp_TailLink); }/* void JoinTail(ZCLink* AP_Link)*/ @@ -1731,26 +1687,23 @@ namespace ZNsMain { mp_HeadLink= rhs.mp_HeadLink; mp_TailLink= rhs.mp_TailLink; - ml_Size = rhs.ml_Size ; + ml_LinkSize= rhs.ml_LinkSize; } else { rhs.mp_TailLink->mp_NextLink = mp_HeadLink; - mp_HeadLink= rhs.mp_HeadLink ; - ml_Size += rhs.ml_Size ; + mp_HeadLink = rhs.mp_HeadLink ; + ml_LinkSize += rhs.ml_LinkSize ; ZCLink::MakeRing(mp_HeadLink, mp_TailLink); }/* else*/ - this->ChangeCapacity( rhs.ml_LinkCnt) ; - rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; - rhs.mp_HeadLink=0; rhs.mp_TailLink=0; - rhs.ml_Size =0; + rhs.ml_LinkSize=0; }/* void JoinHead(ZtCSimList& rhs)*/ @@ -1762,45 +1715,42 @@ namespace ZNsMain if(mp_HeadLink==0) { - mp_HeadLink=rhs.mp_HeadLink; - mp_TailLink=rhs.mp_TailLink; - ml_Size =rhs.ml_Size ; + mp_HeadLink = rhs.mp_HeadLink ; + mp_TailLink = rhs.mp_TailLink ; + ml_LinkSize = rhs.ml_LinkSize ; } else { mp_TailLink->mp_NextLink=rhs.mp_HeadLink; mp_TailLink =rhs.mp_TailLink; - ml_Size += rhs.ml_Size; + ml_LinkSize += rhs.ml_LinkSize; ZCLink::MakeRing(mp_HeadLink, mp_TailLink); }/* else*/ - this->ChangeCapacity( rhs.ml_LinkCnt) ; - rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; - - rhs.mp_HeadLink=0; - rhs.mp_TailLink=0; - rhs.ml_Size =0; + rhs.mp_HeadLink =0 ; + rhs.mp_TailLink =0 ; + rhs.ml_LinkSize =0 ; }/* void JoinTail(ZtCSimList& rhs)*/ void DeleteHead() { - if(ml_Size==0) return; + if(ml_LinkSize==0) return; - ZCLink* VP_DelLink= mp_HeadLink ; - mp_HeadLink = mp_HeadLink->mp_NextLink; + ZCLink* VP_DelLink = mp_HeadLink ; + /*+++*/ mp_HeadLink = mp_HeadLink->mp_NextLink; GetCFreeHeap().RecvFreeIn(VP_DelLink); - if(--ml_Size==0) + if(--ml_LinkSize==0) { mp_HeadLink = mp_TailLink = 0 ; return; }/* - if(--ml_Size==0)*/ + if(--ml_LinkSize==0)*/ ZCLink::MakeRing(mp_HeadLink, mp_TailLink); }/* @@ -1810,41 +1760,51 @@ namespace ZNsMain { // AL_DelSize 개의 링크를 앞 부분에서 삭제 - if(AL_DelSize < 1 ) AL_DelSize= 1 ; - if(AL_DelSize > ml_Size) AL_DelSize= ml_Size; + if(ml_LinkSize==0 || AL_DelSize<1){ return; } - ZCLink* VP_CutTail = - mp_HeadLink->GetNextPtr(AL_DelSize-1); + if(AL_DelSize> ml_LinkSize){ AL_DelSize=ml_LinkSize; } - ZtCSimList VO_StoreList; CutLink ///////////// - ( - 0, mp_HeadLink - , 1, VP_CutTail - , AL_DelSize - , VO_StoreList - ) - .DeleteAll(); - //////////////////////////////////////////////// + if(AL_DelSize==ml_LinkSize) + { + GetCFreeHeap().RecvFreeIn + (ml_LinkSize, mp_HeadLink, mp_TailLink); + mp_HeadLink=0 ; + mp_TailLink=0 ; + ml_LinkSize=0 ; + + return; + }/* + if(AL_DelSize==ml_LinkSize)*/ + + ZCLink* VP_NewHead= mp_HeadLink-> + GetNextPtr( AL_DelSize ); + GetCFreeHeap().RecvFreeIn + (AL_DelSize, mp_HeadLink, VP_NewHead->mp_PrevLink); + + mp_HeadLink = VP_NewHead ; + ml_LinkSize -= AL_DelSize ; + + ZCLink::MakeRing(mp_HeadLink, mp_TailLink); }/* void DeleteHead(TTypSize AL_DelSize)*/ void DeleteTail() { - if(ml_Size==0){return;} + if(ml_LinkSize==0){return;} ZCLink* VP_CutLink = mp_TailLink; - if(--ml_Size==0) + if(--ml_LinkSize==0) { mp_HeadLink = mp_TailLink = 0 ; return; }/* - if(--ml_Size==0)*/ + if(--ml_LinkSize==0)*/ mp_TailLink = - mp_HeadLink->GetNextPtr(ml_Size-1); + mp_HeadLink->GetNextPtr(ml_LinkSize-1); mp_TailLink->mp_NextLink=0 ; GetCFreeHeap().RecvFreeIn(VP_CutLink); @@ -1855,30 +1815,29 @@ namespace ZNsMain void DeleteTail(TTypSize AL_DelSize) { - if(ml_Size==0){return;} + if(ml_LinkSize==0 || AL_DelSize<1){ return; } - if(AL_DelSize> ml_Size){ AL_DelSize=ml_Size; } - if(AL_DelSize< 1 ){ AL_DelSize=1 ; } + if(AL_DelSize> ml_LinkSize){ AL_DelSize=ml_LinkSize; } - if(AL_DelSize==ml_Size) + if(AL_DelSize==ml_LinkSize) { GetCFreeHeap().RecvFreeIn - (ml_Size, mp_HeadLink, mp_TailLink); + (ml_LinkSize, mp_HeadLink, mp_TailLink); mp_HeadLink=0 ; mp_TailLink=0 ; - ml_Size =0 ; + ml_LinkSize=0 ; return; }/* - if(AL_DelSize==ml_Size)*/ + if(AL_DelSize==ml_LinkSize)*/ - ZCLink* VP_NewTail= mp_HeadLink-> - GetNextPtr( ml_Size-AL_DelSize-1 ); + ZCLink* VP_NewTail= mp_TailLink-> + GetNextPtr( -AL_DelSize ); GetCFreeHeap().RecvFreeIn (AL_DelSize, VP_NewTail->mp_NextLink, mp_TailLink); - mp_TailLink = VP_NewTail ; - ml_Size -= AL_DelSize ; + mp_TailLink = VP_NewTail ; + ml_LinkSize -= AL_DelSize ; ZCLink::MakeRing(mp_HeadLink, mp_TailLink); }/* @@ -1908,7 +1867,7 @@ namespace ZNsMain void Delete(ZCLink* AP_PrevLink, ZCLink* AP_CutLink, TTypSize AL_CutPos) { #ifdef _DEBUG - if ( ml_Size==0 || + if ( ml_LinkSize==0 || Find(AP_CutLink) !=AL_CutPos || Find(AP_PrevLink)!=(AL_CutPos-1) ) @@ -1937,7 +1896,7 @@ namespace ZNsMain { #ifdef _DEBUG - if ( ml_Size==0 || + if ( ml_LinkSize==0 || AL_CutHeadPos>AL_CutTailPos || Find(AP_CutHead)!=AL_CutHeadPos || Find(AP_CutTail)!=AL_CutTailPos || @@ -1976,14 +1935,14 @@ namespace ZNsMain void DeleteAll() { - if(ml_Size==0) {return;} + if(ml_LinkSize==0) {return;} GetCFreeHeap().RecvFreeIn - (ml_Size, mp_HeadLink, mp_TailLink); + (ml_LinkSize, mp_HeadLink, mp_TailLink); mp_HeadLink = - mp_TailLink =0; - ml_Size =0; + mp_TailLink =0 ; + ml_LinkSize =0 ; }/* void DeleteAll()*/ @@ -2004,7 +1963,7 @@ namespace ZNsMain ( mp_HeadLink ==0 || AL_FirstFindIndex < 1 || - AL_FirstFindIndex > ml_Size + AL_FirstFindIndex > ml_LinkSize ); if(CB_DoStop) {return 0;} ///////// @@ -2019,7 +1978,7 @@ namespace ZNsMain { 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= VL_FindIndex + 1 ; @@ -2032,7 +1991,7 @@ namespace ZNsMain { const bool CB_DoStop = ( - mp_HeadLink==0 || AL_FirstFindIndex<1 || AL_FirstFindIndex>ml_Size + mp_HeadLink==0 || AL_FirstFindIndex<1 || AL_FirstFindIndex>ml_LinkSize ); if(CB_DoStop) return 0; @@ -2047,7 +2006,7 @@ namespace ZNsMain {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= VL_FindIndex + 1 ; @@ -2077,7 +2036,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<ml_Size)*/ + if(AL_Index<1 || AL_Index>ml_LinkSize)*/ #endif //_DEBUG @@ -2099,7 +2058,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<ml_Size)*/ + if(AL_Index<1 || AL_Index>ml_LinkSize)*/ #endif //_DEBUG @@ -2126,19 +2085,19 @@ namespace ZNsMain inline TTypSize GetSize() const { - return ml_Size; + return ml_LinkSize; }/* inline TTypSize GetSize() const*/ inline TTypSize size() const { - return ml_Size; + return ml_LinkSize; }/* inline TTypSize size() const*/ inline TTypSize capacity() const { - return mo_FreeObjt.capacity(); + return size()+mo_FreeObjt.size(); }/* inline TTypSize capacity() const*/ @@ -2148,12 +2107,6 @@ namespace ZNsMain }/* inline TypeSize GetFreeSize() const*/ - void ChangeCapacity(TypeSize AI_AddCut) const - { - mo_FreeObjt.ChangeCapacity(AI_AddCut); - }/* - void ChangeCapacity(TypeSize AI_AddCut) const*/ - inline bool IsEmpty() const { @@ -2174,14 +2127,14 @@ namespace ZNsMain { ZCLink* VP_LoopLink = mp_HeadLink; - __for1(TTypSize, VL_Index, ml_Size) + __for1(TTypSize, VL_Index, ml_LinkSize) { ZtCTypeData:: GetObjRef(AO_Functor)(VP_LoopLink->mo_Data); VP_LoopLink = VP_LoopLink->mp_NextLink; }/* - __for1(TTypSize, VL_Index, ml_Size)*/ + __for1(TTypSize, VL_Index, ml_LinkSize)*/ }/* template void IterElement(TFunctor AO_Functor) */ @@ -2194,7 +2147,7 @@ namespace ZNsMain ZCLink* VP_LoopLink=mp_HeadLink; - __for0(TTypSize, i, ml_Size) + __for0(TTypSize, i, ml_LinkSize) { ZtCTypeData::GetObjRef(AO_Functor) ( @@ -2204,7 +2157,7 @@ namespace ZNsMain VP_LoopLink = VP_LoopLink->mp_NextLink ; }/* - __for0(TTypSize, i, ml_Size)*/ + __for0(TTypSize, i, ml_LinkSize)*/ }/* template void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */ @@ -2219,7 +2172,7 @@ namespace ZNsMain ZCLink* VP_LoopLink = mp_HeadLink ; - __for0(TTypSize, i, ml_Size) + __for0(TTypSize, i, ml_LinkSize) { ZtCTypeData::GetObjRef(AO_Functor) ( @@ -2231,7 +2184,7 @@ namespace ZNsMain VP_LoopLink = VP_LoopLink->mp_NextLink ; }/* - __for0(TTypSize, i, ml_Size)*/ + __for0(TTypSize, i, ml_LinkSize)*/ }/* template @@ -2250,10 +2203,10 @@ namespace ZNsMain ZCLink* VP_TempBefore=VP_TempLink ; // 순회 도중에 링크가 삭제되면 노드갯수가 변할 수 있으므로 - // ml_Size 를 다른 변수에 담아 놓는다. + // ml_LinkSize 를 다른 변수에 담아 놓는다. - TTypSize VL_Count=ml_Size ; - TTypSize VL_Index=1 ; + TTypSize VL_Count=ml_LinkSize ; + TTypSize VL_Index=1 ; __for1(TTypSize, VL_Loop, VL_Count) { @@ -2299,7 +2252,7 @@ namespace ZNsMain #ifdef _DEBUG - if(ml_Size==0 || Find(AP_StdLink)==0 || AL_WorkDistance>=ml_Size || AL_WorkDistance<0) + if(ml_LinkSize==0 || Find(AP_StdLink)==0 || AL_WorkDistance>=ml_LinkSize || AL_WorkDistance<0) { std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); fileout<=ml_Size || AL_WorkDistance<0)*/ + /*if(ml_LinkSize==0 || Find(AP_StdLink)==0 || AL_WorkDistance>=ml_LinkSize || AL_WorkDistance<0)*/ #endif //_DEBUG diff --git a/ZCppMainTest/ZtCBaseList_000.cpp b/ZCppMainTest/ZtCBaseList_000.cpp index 757a14c..35f5c9e 100644 --- a/ZCppMainTest/ZtCBaseList_000.cpp +++ b/ZCppMainTest/ZtCBaseList_000.cpp @@ -172,12 +172,6 @@ namespace ZNsMain this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail); } - _VT_ void ChangeCapacity(ZTypLong AI_AddCut) - { - cout<<"** ZCBaseListEx10 : ChangeCapacity("<ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail); } - _VT_ void ChangeCapacity(ZTypLong AI_AddCut) - { - cout<<"** ZCBaseListEx11 : ChangeCapacity("<