diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 2255f0f..8398972 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -664,20 +664,23 @@ namespace ZNsMain if(this==&rhs ) return; if(rhs.size()<1) return; - RecvFreeIn //////////////////////// - ( - rhs.ml_UseSize , - rhs.mp_NoUseHead, - rhs.mp_NoUseTail - ); - /////////////////////////////////// + if(this->size()<1) + this->mp_NoUseHead = rhs.mp_NoUseHead; + else + { + ZCLink::JoinLink + (this->mp_NoUseTail, rhs.mp_NoUseHead); + } - this->ml_AllSize += rhs.ml_UseSize; - rhs. ml_AllSize -= rhs.ml_UseSize; - rhs. ml_UseSize = 0 ; + this->mp_NoUseTail = rhs.mp_NoUseTail; + this->ml_UseSize += rhs.ml_UseSize ; + this->ml_AllSize += rhs.ml_UseSize ; - rhs. mp_NoUseHead = 0 ; - rhs. mp_NoUseTail = 0 ; + rhs.ml_AllSize -= rhs.ml_UseSize ; + rhs.ml_UseSize = 0 ; + + rhs.mp_NoUseHead = 0 ; + rhs.mp_NoUseTail = 0 ; }/* void Fetch(ZtCBody& rhs)*/ @@ -703,13 +706,21 @@ namespace ZNsMain rhs.mp_NoUseHead->GetNextPrevPtr(AI_FetchSize-1); ZCLink* VP_RhsNewHead = VP_RhsCutTail->GetNextPtr( ); - RecvFreeIn ////////////////////////////////////////// - ( - AI_FetchSize, rhs.mp_NoUseHead, VP_RhsCutTail - ); - ///////////////////////////////////////////////////// - + if(ml_UseSize<1) + { + // mp_NoUseHead, mp_NoUseTail 이 0 + this->mp_NoUseHead = rhs.mp_NoUseHead ; + } + else + { + // mp_NoUseHead 고정. + ZCLink::JoinLink + (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; @@ -984,7 +995,7 @@ namespace ZNsMain /*public :*/ protected: ZCLink* mp_HeadLink; - TypeSize ml_Size ; + TypeSize ml_Size ; mutable ZCFreeHeap mo_FreeObjt; protected: @@ -1583,11 +1594,11 @@ namespace ZNsMain Type& operator[](TypeSize AL_Index) const*/ - ZCFreeHeap& GetCFreeHeap() + ZCFreeHeap& GetCFreeHeap() const { return mo_FreeObjt; }/* - ZCFreeHeap& GetCFreeHeap()*/ + ZCFreeHeap& GetCFreeHeap() const*/ TypeSize Find /*###############################################################*/ diff --git a/ZCppMain/ZtCSimList.H b/ZCppMain/ZtCSimList.H index 3188e41..0f5fdff 100644 --- a/ZCppMain/ZtCSimList.H +++ b/ZCppMain/ZtCSimList.H @@ -666,20 +666,23 @@ namespace ZNsMain if(this==&rhs ) return; if(rhs.size()<1) return; - RecvFreeIn //////////////////////// - ( - rhs.ml_UseSize , - rhs.mp_NoUseHead, - rhs.mp_NoUseTail - ); - /////////////////////////////////// + if(this->size()<1) + this->mp_NoUseHead = rhs.mp_NoUseHead; + else + { + ZCLink::JoinLink + (this->mp_NoUseTail, rhs.mp_NoUseHead); + } - this->ml_AllSize += rhs.ml_UseSize; - rhs. ml_AllSize -= rhs.ml_UseSize; - rhs. ml_UseSize = 0 ; + this->mp_NoUseTail = rhs.mp_NoUseTail; + this->ml_UseSize += rhs.ml_UseSize ; + this->ml_AllSize += rhs.ml_UseSize ; - rhs. mp_NoUseHead = 0 ; - rhs. mp_NoUseTail = 0 ; + rhs.ml_AllSize -= rhs.ml_UseSize ; + rhs.ml_UseSize = 0 ; + + rhs.mp_NoUseHead = 0 ; + rhs.mp_NoUseTail = 0 ; }/* void Fetch(ZtCBody& rhs)*/ @@ -705,13 +708,21 @@ namespace ZNsMain rhs.mp_NoUseHead->GetNextPrevPtr(AI_FetchSize-1); ZCLink* VP_RhsNewHead = VP_RhsCutTail->GetNextPtr( ); - RecvFreeIn ////////////////////////////////////////// - ( - AI_FetchSize, rhs.mp_NoUseHead, VP_RhsCutTail - ); - ///////////////////////////////////////////////////// - + if(ml_UseSize<1) + { + // mp_NoUseHead, mp_NoUseTail 이 0 + this->mp_NoUseHead = rhs.mp_NoUseHead ; + } + else + { + // mp_NoUseHead 고정. + ZCLink::JoinLink + (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; @@ -983,7 +994,7 @@ namespace ZNsMain TTypSize ml_Size ; ZCLink* mp_HeadLink ; - ZCLink* mp_TailLink ; + ZCLink* mp_TailLink ; mutable ZCFreeHeap mo_FreeObjt ; @@ -2053,11 +2064,11 @@ namespace ZNsMain const ZCLink* GetLinkPtr(TTypSize AL_Index) const*/ - ZCFreeHeap& GetCFreeHeap() + ZCFreeHeap& GetCFreeHeap() const { return mo_FreeObjt; }/* - ZCFreeHeap& GetCFreeHeap()*/ + ZCFreeHeap& GetCFreeHeap() const*/ inline TTypSize GetSize() const diff --git a/ZCppMainTest/ZtCObjList_000.cpp b/ZCppMainTest/ZtCObjList_000.cpp index e7b63ac..7c84253 100644 --- a/ZCppMainTest/ZtCObjList_000.cpp +++ b/ZCppMainTest/ZtCObjList_000.cpp @@ -110,6 +110,8 @@ namespace ZNsMain CStringList1 VO_ListOfStr11 ; + cout<<"# add 2 elements and clear in VO_ListOfStr11"<