From 97b1280b15c7d4f45807d66c95711227a6634d70 Mon Sep 17 00:00:00 2001 From: sauron Date: Fri, 3 Oct 2025 11:51:55 +0900 Subject: [PATCH] commit 2025-10-03 11:51 add ChangeCapacity() in ZtCBaseList : ZCppMain/ZMainHead.H --- ZCppMain/ZMainHead.H | 367 ++++++++++++++++++++++++++++++++------- ZCppMain/ZtCObjList.H | 36 ++-- ZCppMain/ZtCSimList.H | 28 ++- ZCppMainTest/ZtCBaseList_000.cpp | 36 +++- 4 files changed, 379 insertions(+), 88 deletions(-) diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index 496300d..511053e 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -4035,68 +4035,75 @@ namespace ZNsMain typedef typename TLinkList::TypeSize TypeSize; public: - void RecvFreeIn(ZCLink* AP_CutLink){} - void RecvFreeIn ///////////////////// + _NP_ void RecvFreeIn(ZCLink* AP_CutLink){} + _NP_ void RecvFreeIn ///////////////////// ( TypeSize AL_CutCnt , ZCLink* AP_CutHead, ZCLink* AP_CutTail ) - { } ///////////////////////////////// + { } ////////////////////////////////////// - ZCLink* SendFreeOut(){} - void SendFreeOut ///////////////// + _NP_ ZCLink* SendFreeOut(){} + _NP_ void SendFreeOut ///////////////// ( TypeSize AL_NeedCnt , ZCLink*& APR_NewHead, ZCLink*& APR_NewTail ) - { } ///////////////////////////////// + { } ////////////////////////////////////// - void SendFreeOutCopy /*////////////////////////////*/ + _NP_ void SendFreeOutCopy /*////////////////////////////*/ ( ZCLink* AP_LinkOrgin, TypeSize AL_FarNum , ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy ) - { } /*/////////////////////////////////////////////*/ + { } /*//////////////////////////////////////////////////*/ - void DeleteHeap(){} + _NP_ void DeleteHeap(){} - void MakeEuqal(ZtCBody& rhs) + _NP_ void MakeEuqal(ZtCBody& rhs) { }/* - void MakeEuqal(ZtCBody& rhs)*/ + _NP_ void MakeEuqal(ZtCBody& rhs)*/ - TypeSize GetUseHeapSize() const + _NP_ TypeSize GetUseHeapSize() const { return 0; }/* - TypeSize GetUseHeapSize() const*/ + _NP_ TypeSize GetUseHeapSize() const*/ - TypeSize GetAllHeapSize() const + _NP_ TypeSize GetAllHeapSize() const { return 0; }/* - TypeSize GetAllHeapSize() const*/ + _NP_ TypeSize GetAllHeapSize() const*/ - TypeSize size() const + _NP_ TypeSize size() const { return GetUseHeapSize(); }/* - TypeSize GetHeapSize() const*/ + _NP_ TypeSize size() const*/ - TypeSize capacity() const + _NP_ TypeSize capacity() const { return GetAllHeapSize(); }/* - TypeSize GetHeapSize() const*/ + _NP_ TypeSize capacity() const*/ + + _NP_ void ChangeCapacity(TypeSize AI_AddCut) + { + }/* + _NP_ void ChangeCapacity(TypeSize AI_AddCut)*/ + + public: };/* template class ZtCBody*/ @@ -4155,14 +4162,14 @@ namespace ZNsMain :::::::::::::::::::::::::::::::::::::::::::::::::::*/ public: - void RecvFreeIn(ZCLink* AP_CutLink){delete AP_CutLink;} - void RecvFreeIn /////////////////////////////////////// + _NP_ void RecvFreeIn(ZCLink* AP_CutLink){delete AP_CutLink;} + _NP_ void RecvFreeIn /////////////////////////////////////// ( TypeSize AL_CutCnt , ZCLink* AP_CutHead, ZCLink* AP_CutTail ) - /////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// { ZCLink* VP_DelLink = AP_CutHead; @@ -4174,17 +4181,17 @@ namespace ZNsMain }/* __for0(TypeSize, i, AL_CutCnt)*/ } - /////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// - ZCLink* SendFreeOut(){return new ZCLink;} - void SendFreeOut /////////////////////////////////// + _NP_ ZCLink* SendFreeOut(){return new ZCLink;} + _NP_ void SendFreeOut /////////////////////////////////// ( TypeSize AL_NeedCnt , ZCLink*& APR_HeadLink , ZCLink*& APR_TailLink ) - /////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// { APR_HeadLink = new ZCLink; @@ -4205,15 +4212,15 @@ namespace ZNsMain APR_TailLink = VP_TailLink; } - /////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// - void SendFreeOutCopy /*////////////////////////////*/ + _NP_ void SendFreeOutCopy /*////////////////////////////*/ ( ZCLink* AP_LinkOrgin, TypeSize AL_FarNum , ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy ) - ///////////////////////////////////////////////////// + ////////////////////////////////////////////////////////// { // 총 AL_FarNum+1 개의 링크가 만들어짊. @@ -4239,47 +4246,53 @@ namespace ZNsMain APR_TailCopy=VP_TailLink; }/* - void SendFreeOutCopy ////////////////////////////// + _NP_ void SendFreeOutCopy ////////////////////////////// ( ZCLink* AP_LinkOrgin, TypeSize AL_FarNum , ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy ) - ///////////////////////////////////////////////////*/ + ////////////////////////////////////////////////////////*/ - void DeleteHeap(){} + _NP_ void DeleteHeap(){} - void MakeEuqal(ZtCBody& rhs) + _NP_ void MakeEuqal(ZtCBody& rhs) { }/* - void MakeEuqal(ZtCBody& rhs)*/ + _NP_ void MakeEuqal(ZtCBody& rhs)*/ - TypeSize GetUseHeapSize() const + _NP_ TypeSize GetUseHeapSize() const { return 0; }/* - TypeSize GetUseHeapSize() const*/ + _NP_ TypeSize GetUseHeapSize() const*/ - TypeSize GetAllHeapSize() const + _NP_ TypeSize GetAllHeapSize() const { return 0; }/* - TypeSize GetAllHeapSize() const*/ + _NP_ TypeSize GetAllHeapSize() const*/ - TypeSize size() const + _NP_ TypeSize size() const { return GetUseHeapSize(); }/* - TypeSize GetHeapSize() const*/ + _NP_ TypeSize GetHeapSize() const*/ - TypeSize capacity() const + _NP_ TypeSize capacity() const { return GetAllHeapSize(); }/* - TypeSize GetHeapSize() const*/ + _NP_ TypeSize capacity() const*/ + + + _NP_ void ChangeCapacity(TypeSize AI_AddCut) + { + }/* + _NP_ void ChangeCapacity(TypeSize AI_AddCut)*/ };/* template class ZtCBody*/ @@ -4300,14 +4313,14 @@ namespace ZNsMain typedef typename TLinkList::TypeSize TypeSize; public: - void RecvFreeIn(ZCLink* AP_CutLink){delete AP_CutLink;} - void RecvFreeIn /////////////////////////////////////// + _NP_ void RecvFreeIn(ZCLink* AP_CutLink){delete AP_CutLink;} + _NP_ void RecvFreeIn /////////////////////////////////////// ( TypeSize AL_CutCnt , ZCLink* AP_CutHead, ZCLink* AP_CutTail ) - /////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// { ZCLink* VP_DelLink = AP_CutHead; @@ -4319,17 +4332,17 @@ namespace ZNsMain }/* __for0(TypeSize, i, AL_CutCnt)*/ } - /////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// - ZCLink* SendFreeOut(){return new ZCLink;} - void SendFreeOut /////////////////////////////////// + _NP_ ZCLink* SendFreeOut(){return new ZCLink;} + _NP_ void SendFreeOut /////////////////////////////////// ( TypeSize AL_NeedCnt , ZCLink*& APR_HeadLink , ZCLink*& APR_TailLink ) - /////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// { APR_HeadLink = new ZCLink; @@ -4351,15 +4364,15 @@ namespace ZNsMain APR_TailLink = VP_TailLink; } - /////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////// - void SendFreeOutCopy /*////////////////////////////*/ + _NP_ void SendFreeOutCopy /*////////////////////////////*/ ( ZCLink* AP_LinkOrgin, TypeSize AL_FarNum , ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy ) - ///////////////////////////////////////////////////// + ////////////////////////////////////////////////////////// { // 총 AL_FarNum+1 개의 링크가 만들어짊 @@ -4385,47 +4398,53 @@ namespace ZNsMain APR_TailCopy=VP_TailLink; }/* - void SendFreeOutCopy ////////////////////////////// + _NP_ void SendFreeOutCopy ////////////////////////////// ( ZCLink* AP_LinkOrgin, TypeSize AL_FarNum , ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy ) - ///////////////////////////////////////////////////*/ + ////////////////////////////////////////////////////////*/ - void DeleteHeap(){} + _NP_ void DeleteHeap(){} - void MakeEuqal(ZtCBody& rhs) + _NP_ void MakeEuqal(ZtCBody& rhs) { }/* - void MakeEuqal(ZtCBody& rhs)*/ + _NP_ void MakeEuqal(ZtCBody& rhs)*/ - TypeSize GetUseHeapSize() const + _NP_ TypeSize GetUseHeapSize() const { return 0; }/* - TypeSize GetUseHeapSize() const*/ + _NP_ TypeSize GetUseHeapSize() const*/ - TypeSize GetAllHeapSize() const + _NP_ TypeSize GetAllHeapSize() const { return 0; }/* - TypeSize GetAllHeapSize() const*/ + _NP_ TypeSize GetAllHeapSize() const*/ - TypeSize size() const + _NP_ TypeSize size() const { return GetUseHeapSize(); }/* - TypeSize GetHeapSize() const*/ + TypeSize size() const*/ - TypeSize capacity() const + _NP_ TypeSize capacity() const { return GetAllHeapSize(); }/* - TypeSize GetHeapSize() const*/ + _NP_ TypeSize capacity() const*/ + + + _NP_ void ChangeCapacity(TypeSize AI_AddCut) + { + }/* + _NP_ void ChangeCapacity(TypeSize AI_AddCut)*/ };/* template class ZtCBody*/ @@ -5602,6 +5621,19 @@ 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 : @@ -5807,6 +5839,29 @@ namespace ZNsMain TypeData& AddTail(TypeArg AO_ArgData) ##########################*/ + ZtCBaseList& AddHead(ZtCBaseList& rhs) + { + if(this == &rhs ) return *this; + if(rhs.size()<1 ) return *this; + + ZtCBaseList VO_TempList(rhs); + + return JoinHead(VO_TempList); + }/* + ZtCBaseList& AddHead(ZtCBaseList& rhs)*/ + + ZtCBaseList& AddTail(ZtCBaseList& rhs) + { + if(this == &rhs ) return *this; + if(rhs.size()<1 ) return *this; + + ZtCBaseList VO_TempList(rhs); + + return JoinTail(VO_TempList); + }/* + ZtCBaseList& AddTail(ZtCBaseList& rhs)*/ + + void DeleteHead() { if(ml_LinkCnt<1) return; @@ -5847,6 +5902,122 @@ namespace ZNsMain void DeleteTail()*/ + ZtCBaseList& JoinAfter(ZtCBaseList& rhs, ZCLink* AP_StdLink) + { + // AP_StdLink 의 뒤에 rhs 를 삽입. + + if(rhs.ml_LinkCnt<1) return *this; + + this->ChangeCapacity( rhs.ml_LinkCnt) ; + rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; + + if(AP_StdLink==0) // 맨 앞에 삽입 + { + if(ml_LinkCnt<1) + { + mp_HeadLink =rhs.mp_HeadLink; + mp_TailLink =rhs.mp_TailLink; + ml_LinkCnt =rhs.ml_LinkCnt ; + } + else // ml_LinkCnt>=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 ; + }/* + else // ml_LinkCnt>=1*/ + + ml_LinkCnt += rhs.ml_LinkCnt; + + rhs.mp_HeadLink = 0 ; + rhs.mp_TailLink = 0 ; + rhs.ml_LinkCnt = 0 ; + + return *this; + }/* + if(AP_StdLink==0)*/ + + + ZCLink* VP_StdNext=AP_StdLink->mp_NextLink; + + ZCLink::JoinLink(AP_StdLink , rhs.mp_HeadLink ); + ZCLink::JoinLink(rhs.mp_TailLink, VP_StdNext ); + + if(AP_StdLink==mp_TailLink) + { mp_TailLink=rhs.mp_TailLink; } + + rhs.mp_HeadLink=0; + rhs.mp_TailLink=0; + rhs.ml_LinkCnt =0; + + ml_LinkCnt += rhs.ml_LinkCnt; return *this; + }/* + ZtCBaseList& JoinAfter(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/ + + + ZtCBaseList& JoinBefore(ZtCBaseList& rhs, ZCLink* AP_StdLink) + { + // AP_StdLink 의 앞에 rhs 를 삽입. + + if(rhs.size()<1) return *this; + + if(AP_StdLink==0) // 맨 뒤에 삽입 + { + if(ml_LinkCnt<1) + { + mp_HeadLink =rhs.mp_HeadLink; + mp_TailLink =rhs.mp_TailLink; + ml_LinkCnt =rhs.ml_LinkCnt ; + } + else // ml_LinkCnt>=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 ; + }/* + else // ml_LinkCnt>=1*/ + + this->ChangeCapacity( rhs.ml_LinkCnt) ; + rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; + + rhs.mp_HeadLink=0; + rhs.mp_TailLink=0; + rhs.ml_LinkCnt =0; + + ml_LinkCnt += rhs.ml_LinkCnt; return *this; + }/* + if(AP_StdLink==0)*/ + + + ZCLink* VP_StdPrev = AP_StdLink->mp_PrevLink; + + ZCLink::JoinLink( VP_StdPrev , rhs.mp_HeadLink ); + ZCLink::JoinLink(rhs.mp_TailLink, AP_StdLink ); + + 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_LinkCnt =0; + + ml_LinkCnt += rhs.ml_LinkCnt; return *this; + }/* + ZtCBaseList& JoinBefore(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/ + + + ZtCBaseList& JoinHead(ZtCBaseList& rhs) + { if(this==&rhs) return *this; return JoinAfter (rhs, 0); } + ZtCBaseList& JoinTail(ZtCBaseList& rhs) + { if(this==&rhs) return *this; return JoinBefore(rhs, 0); } + TypeData& GetHeadData(){return mp_HeadLink->mo_Data;} TypeData& GetTailData(){return mp_TailLink->mo_Data;} @@ -5980,6 +6151,72 @@ namespace ZNsMain ###############################################################################*/ + template void IterElemRev(TFunctor AO_Functor) + { + ZCLink* VP_LoopLink=mp_TailLink; + + __for0(TypeSize, i, ml_LinkCnt) + { + ZtCTypeData:: + GetObjRef(AO_Functor)(VP_LoopLink->mo_Data); + + VP_LoopLink = VP_LoopLink->mp_PrevLink ; + }/* + __for0(TypeSize, i, ml_Size)*/ + }/* + template void IterElemRev(TFunctor AO_Functor) */ + + template + void IterElemRev(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) + { + typedef ZNsMain:: + ZtCCheckRef ZCCheckRef; + + ZCLink* VP_LoopLink = mp_TailLink; + + __for0(TypeSize, i, ml_LinkCnt) + { + ZtCTypeData::GetObjRef(AO_Functor) + ( + VP_LoopLink->mo_Data, ZCCheckRef::PassData(AO_TypeHelp) + ); + VP_LoopLink = VP_LoopLink->mp_PrevLink ; + }/* + __for0(TypeSize, i, ml_Size)*/ + }/* + template + void IterElemRev(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */ + + + template + < typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 > + void IterElemRev + ( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 ) + /*#############################################################################*/ + { + typedef ZNsMain::ZtCCheckRef ZCCheckRef1; + typedef ZNsMain::ZtCCheckRef ZCCheckRef2; + + ZCLink* VP_LoopLink = mp_TailLink; + + __for0(TypeSize, i, ml_LinkCnt) + { + ZtCTypeData::GetObjRef(AO_Functor) + ( + VP_LoopLink->mo_Data + , ZCCheckRef1::PassData(AO_TypeHelp1) + , ZCCheckRef2::PassData(AO_TypeHelp2) + ); + VP_LoopLink = VP_LoopLink->mp_PrevLink ; + }/* + __for0(TypeSize, i, ml_Size)*/ + }/* + template + < typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 > + void IterElemRev + ( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 ) + ###############################################################################*/ + ZCLink* GetHeadLinkPtr(){return mp_HeadLink;} ZCLink* GetTailLinkPtr(){return mp_TailLink;} diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 83a64d8..5ddba28 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -769,6 +769,13 @@ namespace ZNsMain }/* TypeSize capacity() const*/ + + void ChangeCapacity(TypeSize AI_AddCut) + { + ml_AllSize =+ AI_AddCut; + }/* + void ChangeCapacity(TypeSize AI_AddCut)*/ + public: };/* template class ZtCBody*/ @@ -1077,6 +1084,9 @@ namespace ZNsMain 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(AP_LinkStd==0) { if(ml_Size==0) @@ -1144,9 +1154,7 @@ namespace ZNsMain { if(AL_CutPos==1) // 첫째 링크를 삭제. { - if(ml_Size==1) - mp_HeadLink=0; - else + if(ml_Size==1){ mp_HeadLink=0; }else { ZCLink::MakeRing ( @@ -1155,7 +1163,7 @@ namespace ZNsMain ); //////////////// }/* - else*/ + else :::::::::::::::::::::::::::::*/ } else if(AL_CutPos==ml_Size) // 끝 링크를 삭제할 때 ZCLink::MakeRing(mp_HeadLink , AP_CutLink->mp_PrevLink); @@ -1213,7 +1221,8 @@ namespace ZNsMain }/* else*/ - ml_Size -= AL_CutTailPos-AL_CutHeadPos+1 ; + TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ; + /*++++*/ ml_Size -= VL_CutSize ; // AP_CutHead 과 AP_CutTail 을 연결하여 // 이중 원형 연결리스트가 되도록 한다. @@ -1239,8 +1248,11 @@ namespace ZNsMain #endif //_DEBUG - ARR_StoreList.mp_HeadLink=AP_CutHead ; - ARR_StoreList.ml_Size =AL_CutTailPos-AL_CutHeadPos+1; + this-> ChangeCapacity(-VL_CutSize) ; + ARR_StoreList.ChangeCapacity( VL_CutSize) ; + + ARR_StoreList.mp_HeadLink = AP_CutHead ; + ARR_StoreList.ml_Size = VL_CutSize ; return ARR_StoreList; }/* @@ -1412,13 +1424,13 @@ namespace ZNsMain { ZtCObjList VO_StoreList; - CutLink /////////////////////////////////////// + CutLink //////////////////////////////////////// ( GetLinkPtr(rhs.ml_Size+1), rhs.ml_Size+1, GetLinkPtr( ml_Size ), ml_Size , RR(VO_StoreList) ). DeleteAll(); - //////////////////////////////////////////////// + ///////////////////////////////////////////////// }/* else*/ @@ -1452,7 +1464,11 @@ namespace ZNsMain TypeSize capacity() const{return mo_FreeObjt.capacity();} TypeSize GetFreeSize() const - { return mo_FreeObjt.size(); } + { return mo_FreeObjt.size(); } + + void ChangeCapacity(TypeSize AI_AddCut) const + { mo_FreeObjt.ChangeCapacity(AI_AddCut); } + ZCLink* GetHeadLinkPtr(){return mp_HeadLink;} ZCLink* GetTailLinkPtr() diff --git a/ZCppMain/ZtCSimList.H b/ZCppMain/ZtCSimList.H index 85045ce..5b6b473 100644 --- a/ZCppMain/ZtCSimList.H +++ b/ZCppMain/ZtCSimList.H @@ -771,6 +771,13 @@ namespace ZNsMain }/* TypeSize capacity() const*/ + + void ChangeCapacity(TypeSize AI_AddCut) + { + ml_AllSize =+ AI_AddCut; + }/* + void ChangeCapacity(TypeSize AI_AddCut)*/ + public: };/* template class ZtCBody*/ @@ -1722,13 +1729,13 @@ 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_Size = rhs.ml_Size ; } else { - rhs.mp_TailLink->mp_NextLink=mp_HeadLink; + rhs.mp_TailLink->mp_NextLink = mp_HeadLink; mp_HeadLink= rhs.mp_HeadLink ; ml_Size += rhs.ml_Size ; @@ -1737,6 +1744,10 @@ namespace ZNsMain }/* else*/ + + this->ChangeCapacity( rhs.ml_LinkCnt) ; + rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; + rhs.mp_HeadLink=0; rhs.mp_TailLink=0; rhs.ml_Size =0; @@ -1766,6 +1777,9 @@ namespace ZNsMain }/* else*/ + this->ChangeCapacity( rhs.ml_LinkCnt) ; + rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; + rhs.mp_HeadLink=0; rhs.mp_TailLink=0; rhs.ml_Size =0; @@ -2134,6 +2148,12 @@ 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 { diff --git a/ZCppMainTest/ZtCBaseList_000.cpp b/ZCppMainTest/ZtCBaseList_000.cpp index f0dbca0..757a14c 100644 --- a/ZCppMainTest/ZtCBaseList_000.cpp +++ b/ZCppMainTest/ZtCBaseList_000.cpp @@ -134,7 +134,7 @@ namespace ZNsMain _VT_ void SendFreeOut (ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink) { - cout<<"** ZCBaseListEx10 : SendFreeOut(ZTypLong, ZCLink*&, ZCLink*&)"<ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink); } @@ -146,7 +146,7 @@ namespace ZNsMain ) ///////////////////////////////////////////////////// { - cout<<"** ZCBaseListEx10 : SendFreeOut(ZCLink*, ZTypLong, ZCLink*&, ZCLink*&)"<ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy); } @@ -167,11 +167,17 @@ namespace ZNsMain ) /////////////////////////////////////////////////////// { - cout<<"** ZCBaseListEx10 : RecvFreeIn(ZTypLong, AP_CutHead, AP_CutTail)"<ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail); } + _VT_ void ChangeCapacity(ZTypLong AI_AddCut) + { + cout<<"** ZCBaseListEx10 : ChangeCapacity("<ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink); } @@ -237,7 +243,7 @@ namespace ZNsMain ) ///////////////////////////////////////////////////// { - cout<<"** ZCBaseListEx11 : SendFreeOut(ZCLink*, ZTypLong, ZCLink*&, ZCLink*&)"<ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy); } @@ -258,11 +264,17 @@ namespace ZNsMain ) /////////////////////////////////////////////////////// { - cout<<"** ZCBaseListEx11: RecvFreeIn(ZTypLong, AP_CutHead, AP_CutTail)"<ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail); } + _VT_ void ChangeCapacity(ZTypLong AI_AddCut) + { + cout<<"** ZCBaseListEx11 : ChangeCapacity("<