diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 06c361c..2255f0f 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -621,7 +621,7 @@ namespace ZNsMain VP_DelLink = mp_NoUseHead ; } - while(--VI_DelCntCopy>0); /*+++++++*/ + while(--VI_DelCntCopy>0); /*++++*/ ml_AllSize -= AI_DelCnt; ml_UseSize -= AI_DelCnt; diff --git a/ZCppMain/ZtCSimList.H b/ZCppMain/ZtCSimList.H index 2565af9..3188e41 100644 --- a/ZCppMain/ZtCSimList.H +++ b/ZCppMain/ZtCSimList.H @@ -558,6 +558,22 @@ namespace ZNsMain }/* ~ZtCBody()*/ + ZtCBody(const ZtCBody& rhs) + { + ml_AllSize = + ml_UseSize = 0 ; + + mp_NoUseHead = + mp_NoUseTail = 0 ; + }/* + ZtCBody(const ZtCBody& rhs)*/ + + ZtCBody& operator=(const ZtCBody& rhs) + { + return *this; + }/* + ZtCBody& operator=(const ZtCBody& rhs)*/ + void DeleteHeap() { @@ -584,6 +600,127 @@ namespace ZNsMain void DeleteHeap()*/ + TypeSize DeleteHeap(TypeSize AI_DelCnt) + { + if(ml_UseSize<1) return 0; + if(AI_DelCnt <1) return 0; + if(AI_DelCnt > size()) + { + AI_DelCnt=size(); DeleteHeap(); return AI_DelCnt; + }/* + if(AI_DelCnt > size())*/ + + + TypeSize VI_DelCntCopy = AI_DelCnt ; + ZCLink* VP_DelLink = mp_NoUseHead ; + + do /*++++++++++++++++++++++++++++*/ + { + mp_NoUseHead = + mp_NoUseHead->GetNextPtr() ; + + delete VP_DelLink; + + VP_DelLink = mp_NoUseHead ; + } + while(--VI_DelCntCopy>0); /*+++++*/ + + ml_AllSize -= AI_DelCnt; + ml_UseSize -= AI_DelCnt; + + return AI_DelCnt; + }/* + TypeSize DeleteHeap(TypeSize AI_DelCnt)*/ + + + void AddHeap(TypeSize AI_AddCnt) + { + if(AI_AddCnt<1) return; + + if(size() < 1) + { + MakeLink + (AI_AddCnt, RR(mp_NoUseHead), RR(mp_NoUseTail)); + } + else + { + ZCLink* VP_MakeHead = 0; + ZCLink* VP_MakeTail = 0; + + MakeLink + (AI_AddCnt, RR(VP_MakeHead), RR(VP_MakeTail)); + + ZCLink::JoinLink(mp_NoUseTail, VP_MakeHead); + + mp_NoUseTail = VP_MakeTail ; + }/* + else*/ + + ml_UseSize += AI_AddCnt; + }/* + void AddHeap(TypeSize AI_AddCnt)*/ + + + void Fetch(ZtCBody& rhs) + { + if(this==&rhs ) return; + if(rhs.size()<1) return; + + RecvFreeIn //////////////////////// + ( + rhs.ml_UseSize , + rhs.mp_NoUseHead, + rhs.mp_NoUseTail + ); + /////////////////////////////////// + + this->ml_AllSize += rhs.ml_UseSize; + rhs. ml_AllSize -= rhs.ml_UseSize; + rhs. ml_UseSize = 0 ; + + rhs. mp_NoUseHead = 0 ; + rhs. mp_NoUseTail = 0 ; + }/* + void Fetch(ZtCBody& rhs)*/ + + + TypeSize Fetch(ZtCBody& rhs, TypeSize AI_FetchSize) + { + // rhs 의 앞에서 AI_FetchSize 개를 가져온다. + + if(this==&rhs ) return 0; + if(AI_FetchSize<1 ) return 0; + if(rhs.size() <1 ) return 0; + + if(AI_FetchSize>= rhs.size()) + { + AI_FetchSize = rhs.size(); + + Fetch(rhs); return AI_FetchSize; + }/* + if(AI_FetchSize>= rhs.size())*/ + + + ZCLink* VP_RhsCutTail = + rhs.mp_NoUseHead->GetNextPrevPtr(AI_FetchSize-1); + ZCLink* VP_RhsNewHead = VP_RhsCutTail->GetNextPtr( ); + + RecvFreeIn ////////////////////////////////////////// + ( + AI_FetchSize, rhs.mp_NoUseHead, VP_RhsCutTail + ); + ///////////////////////////////////////////////////// + + this->ml_AllSize += AI_FetchSize ; + rhs. ml_AllSize -= AI_FetchSize ; + rhs. ml_UseSize -= AI_FetchSize ; + rhs. mp_NoUseHead = VP_RhsNewHead; + + return AI_FetchSize; + }/* + TypeSize Fetch(ZtCBody& rhs, TypeSize AI_FetchSize)*/ + + TypeSize GetUseHeapSize() const { return ml_UseSize; @@ -1941,6 +2078,12 @@ namespace ZNsMain }/* inline TTypSize capacity() const*/ + inline TypeSize GetFreeSize() const + { + return mo_FreeObjt.size(); + }/* + inline TypeSize GetFreeSize() const*/ + inline bool IsEmpty() const { diff --git a/ZCppMainTest/ZtCObjList_000.cpp b/ZCppMainTest/ZtCObjList_000.cpp index 82554fb..e7b63ac 100644 --- a/ZCppMainTest/ZtCObjList_000.cpp +++ b/ZCppMainTest/ZtCObjList_000.cpp @@ -125,6 +125,49 @@ namespace ZNsMain cout<<"# list10 capacity : " <