diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index e225819..ccb73ca 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -3765,6 +3765,57 @@ namespace ZNsMain class ZCFreeAllocBase*/ + namespace ZNsIFace + { + + // 자료 구조에서 자유 기억 공간을 구현하는 interface + + class ZIFreeHeap + { + public: + + template + + class ZtIMain + { + public: + void RecvFreeIn(TTypeLink* AP_CutLink){} + void RecvFreeIn //////////////////////// + ( + TTypeLink* AP_CutHead , + TTypeLink* AP_CutTail , + TTypSize AL_CutCnt + ) + { } //////////////////////////////////// + + + TTypeLink* SendFreeOut(){} + void SendFreeOut ///////////////// + ( + TTypeLink*& APR_NewHead , + TTypeLink*& APR_NewTail , + TTypSize AL_NeedCnt + ) + { } //////////////////////////////////// + + + void DeleteHeap(){} + + public: + };/* + template + + class ZtIMain */ + + public: + };/* + class ZIFreeHeap*/ + + + }/* + namespace ZNsIFace*/ + + // 자유 기억 공간을 총괄하는 단방향 연결 리스트 class ZCHeapAllocList @@ -3993,7 +4044,8 @@ namespace ZNsMain TypeData& mr_TypeData; public : - ZtCObjPtr(TType& AR_CData) : mr_TypeData(AR_CData){} + ZtCObjPtr(TType& AR_CData) : mr_TypeData(AR_CData ){} + ZtCObjPtr(ZtCObjPtr& AR_Rhs ) : mr_TypeData(AR_Rhs.mr_TypeData){} TypeData* operator->(){return &mr_TypeData;} TypeData& operator* (){return mr_TypeData;} diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index cad3b7d..103c145 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -58,6 +58,7 @@ namespace ZNsMain typedef const ZCIterator const_iterator; public: + class ZCLink : public TypeAlloc { public : @@ -748,7 +749,7 @@ namespace ZNsMain } else if(ml_Size<=rhs.ml_Size) { - AddDefault(rhs.ml_Size-ml_Size,ml_Size+1); + AddDefault(rhs.ml_Size-ml_Size, ml_Size+1); ZCLink* pRhsLink=rhs.mp_HeadLink; ZCLink* pLhsLink= mp_HeadLink; @@ -1034,27 +1035,27 @@ namespace ZNsMain ZtCObjList& DeleteAll() { - if(mp_HeadLink!=0) + if(mp_HeadLink==0) return *this; + + OnDelete /*============================*/ + ( + mp_HeadLink , 1 , + mp_HeadLink->mp_PrevLink, ml_Size + ); + /*=====================================*/ + + ZCLink* VP_DelLink=0 ; + + do /////////////////// { - OnDelete( - mp_HeadLink, 1, mp_HeadLink->mp_PrevLink, ml_Size); + VP_DelLink =mp_HeadLink ; + mp_HeadLink=mp_HeadLink->mp_NextLink ; - ZCLink* VP_DelLink=0; + delete VP_DelLink; + } + while(--ml_Size>0); - do //// - { - VP_DelLink =mp_HeadLink; - mp_HeadLink=mp_HeadLink->mp_NextLink ; - - delete VP_DelLink; - } - while(--ml_Size>0); - - mp_HeadLink =0; - }/* - if(mp_HeadLink!=0)*/ - - return *this; + mp_HeadLink =0; return *this; }/* ZtCObjList& DeleteAll()*/ @@ -1168,7 +1169,7 @@ namespace ZNsMain { if(AL_DefaultSize<1 || AL_AddPos<1 || AL_AddPos>ml_Size+1) return 0; - ////////////////////////////////////////////////////////// + /*======================================================*/ ZtCObjList VO_StoreList; MakeDefault( AL_DefaultSize, VO_StoreList);