From 0c07b0e497621aa39778babb5624c94d9b7d0ef5 Mon Sep 17 00:00:00 2001 From: sauron Date: Thu, 11 Sep 2025 12:37:05 +0900 Subject: [PATCH] commit 2025-09-11 12:36 edit codes for ZtCInit<> in ZCppMain/ZtSimList.H etc --- ZCppMain/ZMainHead.H | 42 ++++++++--- ZCppMain/ZtCObjAVL.H | 1 + ZCppMain/ZtCObjList.H | 103 +++++++++++++++----------- ZCppMain/ZtCSimList.H | 196 +++++++++++++++++++++++++++++-------------------- ZCppMain/ZtCTreeData.H | 25 +++---- 5 files changed, 222 insertions(+), 145 deletions(-) diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index 7ebcd8e..d3bc219 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -3628,13 +3628,36 @@ namespace ZNsMain ZftCopyChars(TTypeCh* ApcDest, TTypeSize AL_DestSize, const TTypeCh* ApcSource) */ + + /*###################################################################################### + + ■ ZtCInit<>, ZCInit 은 주로 자유 기억 공간을 구현하는 자료 구조에서 사용한다. + + 1) 자유 기억 공간에서 나오는 data 에 대하여 OnInit() 를 호출한다. + 2) 자유 기억 공간으로 가 는 data 에 대하여 OnFini() 를 호출한다. + + 그런데 2) 는 자료 구조에 따라 호출하지 않을 수도 있다. 다수의 원소가 자유 기억 공간으 + 로 들어갈 때, 일일이 그 모든 원소에 대해 Onfini() 를 호출하는 것은 낭비일 수 있는 것이 + 다. + + -- 2025-09-11 11:00 + + ■ 주로 container 인 typename TType2 을 인수로 받아, container 와의 활용도롤 높이고 있다. + + -- 2025-09-11 11:03 + + ######################################################################################*/ + template class ZtCInit { public: - void operator()(TType& AR_TypeArg){} + enum{EUseInit=0}; + enum{EUseFini=0}; public: - void OnInit(TType& AR_TypeArg){} - void OnFini(TType& AR_TypeArg){} + template + static void OnInit(TType& AR_TypeArg, TType2& AR_TypeArg2){} + template + static void OnFini(TType& AR_TypeArg, TType2& AR_TypeArg2){} public: };/* template class ZtCInit*/ @@ -3643,12 +3666,13 @@ namespace ZNsMain class ZCInit { public: - template void operator()(TType& AR_TypeArg){} - template void OnInit (TType& AR_TypeArg){} - template void OnFini (TType& AR_TypeArg){} - - void OnInit(){} - void OnFini(){} + enum{EUseInit=0}; + enum{EUseFini=0}; + public: + template + static void OnInit(TType& AR_TypeArg, TType2& AR_TypeArg2){} + template + static void OnFini(TType& AR_TypeArg, TType2& AR_TypeArg2){} public: };/* class ZCInit*/ diff --git a/ZCppMain/ZtCObjAVL.H b/ZCppMain/ZtCObjAVL.H index bf39a0b..abfb204 100644 --- a/ZCppMain/ZtCObjAVL.H +++ b/ZCppMain/ZtCObjAVL.H @@ -2422,6 +2422,7 @@ namespace ZNsMain using ZNsMain::ZtCObjAVL; + namespace ZNsTmplParam { diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 4075f07..db71ec0 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -12,7 +12,7 @@ namespace ZNsMain /*///////////////////////////////////////////////////////////////// - ■ typename TTypCInit 는 별다른 역할을 하지 않고 있다. 다른 리스트 + ■ typename TTypeInit 는 별다른 역할을 하지 않고 있다. 다른 리스트 클래스와 템플릿 인수를 비슷하게 맞추기 위해, 그리고 차후의 설계 를 위해 일단 이대로 두자. @@ -20,7 +20,7 @@ namespace ZNsMain -- 2025-08-11 14:47 - ZtCTreeData.H 에서 ZtCObjList<> 에서 TTypCInit 자리에 형을 지정 + ZtCTreeData.H 에서 ZtCObjList<> 에서 TTypeInit 자리에 형을 지정 하고 있다. 쓰긴 쓰니까 주석을 해제하자. -- 2025-08-14 13:43 /////////////////////////////////////////////////////////////////*/ @@ -29,15 +29,15 @@ namespace ZNsMain template class ZtCSortObjList; - template< typename TType , - typename TTypArgu = const TType&, - typename TTypCAlloc = ZCAllocator , - typename TTypCInit = ZCInit , - typename TTypSize = ZTypLong , + template< typename TType , ///////////////////////////// + typename TTypArgu = const TType& , + typename TTypCAlloc = ZCAllocator , + typename TTypeInit = ZtCInit, + typename TTypSize = ZTypLong , typename TMoveObj = ZNsMain:: ZtCMoveObj > - class ZtCObjList ////////////////////////////// + class ZtCObjList ////////////////////////////////////////////////////////////*/ { public: template friend class ZtCSortObjList; @@ -46,7 +46,7 @@ namespace ZNsMain typedef TType TypeData ; typedef TTypArgu TypeArg ; typedef TTypCAlloc TypeAlloc ; - //typedef TTypCInit TypeInit ; + typedef TTypeInit TypeInit ; typedef TTypSize TypeSize ; typedef TMoveObj TypeMoveObj; public: @@ -231,34 +231,53 @@ namespace ZNsMain TypeSize ml_Size ; protected: - virtual void OnDelete( - ZCLink* AP_CutHead, TypeSize AI_CutHeadPos, - ZCLink* AP_CutTail, TypeSize AI_CutTailPos - /*//////////*/ ) + void OnDelete /*//////////////////////////////////////////////*/ + ( + ZCLink* AP_CutHead, TypeSize AI_CutHeadPos, + ZCLink* AP_CutTail, TypeSize AI_CutTailPos + ) + /*############################################################*/ { - // 상속클래스에서 추가된 멤버 데이타가 링크의 삭제시 변해야 하는 값이라면 - // 이 함수를 overload 하여 값을 조종한다. - }/* - virtual void OnDelete( - ZCLink* AP_CutHead, TypeSize AI_CutHeadPos, - ZCLink* AP_CutTail, TypeSize AI_CutTailPos - ////////////// ) */ + // 상속클래스에서 추가된 멤버 데이타가 링크의 삭제시 변해야 + // 하는 값이라면, 이 함수를 overload 하여 값을 조종한다. + + if(TypeInit::EUseFini<1) return; + + TypeSize VL_LoopCnt = AI_CutTailPos-AI_CutHeadPos+1 ; + ZCLink* VP_NowLink = AP_CutHead ; + + __for1(TypeSize, i, VL_LoopCnt) + { + TypeInit::OnFini(VP_NowLink->mo_Data, *this) ; + + VP_NowLink = VP_NowLink->mp_NextLink; + }/* + __for1(TypeSize, i, VL_LoopCnt)*/ + } + /*############################################################*/ - virtual void OnInsert( - TypeSize AI_InsertPos , // 삽입되는 위치 - TypeSize AI_InsertSize, // 삽입되는 링크의 갯수 - ZCLink* AP_HeadInsert // 삽입되는 첫번째 링크의 포인터 - /*//////////*/ ) + void OnInsert /*//////////////////////////////////////////////*/ + ( + TypeSize AI_InsertPos , // 삽입되는 위치 + TypeSize AI_InsertSize, // 삽입되는 링크의 갯수 + ZCLink* AP_HeadInsert // 삽입되는 첫번째 링크의 포인터 + ) + /*############################################################*/ { - // 상속클래스에서 추가된 멤버 데이타가 링크의 삽입시 변해야 하는 값이라면 - // 이 함수를 overload 하여 값을 조종한다. - }/* - virtual void OnInsert( - TypeSize AI_InsertPos , - TypeSize AI_InsertSize, - ZCLink* AP_HeadInsert - ////////////// ) */ + if(TypeInit::EUseInit<1) return; + + ZCLink* VP_NowLink = AP_HeadInsert; + + __for1(TypeSize, i, AI_InsertSize) + { + TypeInit::OnInit(VP_NowLink->mo_Data, *this); + + VP_NowLink = VP_NowLink->mp_NextLink; + }/* + __for1(TypeSize, i, AI_InsertSize)*/ + } + /*############################################################*/ void JoinAfter(ZCLink* AP_LinkInsert, ZCLink* AP_LinkStd, TypeSize AL_PosStd) @@ -268,7 +287,7 @@ namespace ZNsMain if(AP_LinkStd==0) { - OnInsert(1,1,AP_LinkInsert); + OnInsert(1, 1, AP_LinkInsert); if(++ml_Size==1) { @@ -1005,7 +1024,7 @@ namespace ZNsMain do //// { VP_DelLink =mp_HeadLink; - mp_HeadLink=mp_HeadLink->mp_NextLink; + mp_HeadLink=mp_HeadLink->mp_NextLink ; delete VP_DelLink; } @@ -2159,15 +2178,15 @@ namespace ZNsMain public: };/* - template< typename TType , - typename TTypArgu = const TType&, - typename TTypCAlloc = ZCAllocator , - typename TTypCInit = ZCInit , - typename TTypSize = ZTypLong , + template< typename TType , + typename TTypArgu = const TType& , + typename TTypCAlloc = ZCAllocator , + typename TTypeInit = ZtCInit, + typename TTypSize = ZTypLong , typename TMoveObj = ZNsMain:: - ZtCMoveObj + ZtCMoveObj > - class ZtCObjList ////////////////////////////*/ + class ZtCObjList ////////////////////////////////////////////////////////////*/ /*///////////////////////////////////////////////////////////////////////////// diff --git a/ZCppMain/ZtCSimList.H b/ZCppMain/ZtCSimList.H index fb39bc9..47872c3 100644 --- a/ZCppMain/ZtCSimList.H +++ b/ZCppMain/ZtCSimList.H @@ -15,11 +15,11 @@ namespace ZNsMain template /*#######################################*/ < - typename TType , - typename TTypArgu =const TType&, - typename TTypCAlloc=ZCAllocator , - typename TTypCInit =ZCInit , - typename TTypSize =ZTypLong , + typename TType , + typename TTypArgu = const TType& , + typename TTypCAlloc= ZCAllocator , + typename TTypCInit = ZtCInit , + typename TTypSize = ZTypLong , typename TMoveObj = ZNsMain:: ZtCMoveObj > @@ -54,7 +54,7 @@ namespace ZNsMain private: ZCLink* mp_NextLink; - TType mo_Type ; + TType mo_Data ; private: @@ -89,62 +89,62 @@ namespace ZNsMain { // TType 의 대입연산자는 반드시 public 영역에 있어야 한다. - mo_Type=rhs.mo_Type; + mo_Data=rhs.mo_Data; }/* ZCLink(const ZCLink& rhs)*/ ZCLink(TypeArg AR_Type):mp_NextLink(0) { - mo_Type=AR_Type; + mo_Data=AR_Type; }/* ZCLink(TypeArg AR_Type)*/ operator TType&() { - return mo_Type; + return mo_Data; }/* operator TType&()*/ operator TType() { - return mo_Type; + return mo_Data; }/* operator TType()*/ TType& GetData() { - return mo_Type; + return mo_Data; }/* TType& GetData()*/ const TType& GetData() const { - return mo_Type; + return mo_Data; }/* const TType& GetData() const*/ TType& GetData(TTypSize AL_FarNum) // must AL_FarNum >= 0 { - return GetNextPtr(AL_FarNum)->mo_Type; + return GetNextPtr(AL_FarNum)->mo_Data; }/* TType& GetData(TTypSize AL_FarNum)*/ const TType& GetData(TTypSize AL_FarNum) const { - return GetNextPtr(AL_FarNum)->mo_Type; + return GetNextPtr(AL_FarNum)->mo_Data; }/* const TType& GetData(TTypSize AL_FarNum) const*/ TType& operator*() { - return mo_Type; + return mo_Data; }/* TType& operator*()*/ const TType& operator*() const { - return mo_Type; + return mo_Data; }/* const TType& operator*() const*/ @@ -199,7 +199,7 @@ namespace ZNsMain ZCLink& operator=(TypeArg AR_Type) { - mo_Type=AR_Type; return *this; + mo_Data=AR_Type; return *this; }/* ZCLink& operator=(TypeArg AR_Type)*/ @@ -222,11 +222,11 @@ namespace ZNsMain class ZCLink*/ - ///////////////////////////////////////////////// + ////////////////////////////////////////////////// /*************** end class ZCLink ***************/ - ///////////////////////////////////////////////// + ////////////////////////////////////////////////// class ZCLinkHeap : public ZCFreeAllocBase @@ -242,8 +242,6 @@ namespace ZNsMain private: - TypeInit mo_TypeInit; - TTypSize ml_AllSize ; TTypSize ml_UseSize ; @@ -264,8 +262,16 @@ namespace ZNsMain #endif //_DEBUG if(ml_UseSize==0) - return (++ml_AllSize, new ZCLink) ; - ///////////////// + { + ZCLink* VP_TempLink = new ZCLink ; + + if(TypeInit::EUseInit>0) + TypeInit::OnInit(VP_TempLink->mo_Data, *this); + + return (++ml_AllSize, VP_TempLink); + }/* + if(ml_UseSize==0)*/ + ZCLink* VP_TempLink=mp_NoUseHeadLink; @@ -305,11 +311,12 @@ namespace ZNsMain } else if(AL_LinkSize==ml_UseSize) { - ZCLink* VP_Temp=mp_NoUseHeadLink; + ZCLink* VP_Temp = mp_NoUseHeadLink; while(true) { - mo_TypeInit(VP_Temp->mo_Type); + if(TypeInit::EUseInit>0) + TypeInit::OnInit(VP_Temp->mo_Data, *this); if(VP_Temp==mp_NoUseTailLink) { break; } @@ -328,17 +335,20 @@ namespace ZNsMain } else if(AL_LinkSizemo_Type); + if(TypeInit::EUseInit>0) + TypeInit::OnInit(mp_NoUseHeadLink->mo_Data, *this); for(TTypSize VL_Count=2; VL_Count<=AL_LinkSize; ++VL_Count) { // VL_Count 가 2 부터 시작함으로 AL_LinkSize-1 번 순환한다. // 그래야지 AL_LinkSize 개의 링크를 자를 수 있다. - mp_NoUseHeadLink=mp_NoUseHeadLink->mp_NextLink; - mo_TypeInit(mp_NoUseHeadLink->mo_Type); + mp_NoUseHeadLink = mp_NoUseHeadLink->mp_NextLink; + + if(TypeInit::EUseInit>0) + TypeInit::OnInit(mp_NoUseHeadLink->mo_Data, *this); } //for(TTypSize VL_Count=2; VL_Count<=AL_LinkSize; ++VL_Count) @@ -353,8 +363,6 @@ namespace ZNsMain while(true) { - mo_TypeInit(VP_Temp->mo_Type); - if(VP_Temp==mp_NoUseTailLink) { break; } @@ -364,6 +372,7 @@ namespace ZNsMain APR_HeadLink = mp_NoUseHeadLink; + // MakeLink() 에서 TypeInit::OnInit() 가 호출됨. MakeLink( AL_LinkSize - ml_UseSize , mp_NoUseTailLink->mp_NextLink, APR_TailLink @@ -415,7 +424,7 @@ namespace ZNsMain { ml_UseSize -= AL_FarNum+1 ; - mp_NoUseHeadLink->mo_Type = AP_LinkOrgin->mo_Type; + mp_NoUseHeadLink->mo_Data = AP_LinkOrgin->mo_Data; APR_HeadCopy = mp_NoUseHeadLink ; while(--AL_FarNum>=0) @@ -423,7 +432,7 @@ namespace ZNsMain mp_NoUseHeadLink= mp_NoUseHeadLink->mp_NextLink ; AP_LinkOrgin = AP_LinkOrgin->mp_NextLink ; - mp_NoUseHeadLink->mo_Type = AP_LinkOrgin->mo_Type; + mp_NoUseHeadLink->mo_Data = AP_LinkOrgin->mo_Data; } //while(--AL_FarNum>=0) @@ -446,7 +455,7 @@ namespace ZNsMain } else // AL_FarNum > ml_UseSize { - mp_NoUseHeadLink->mo_Type = AP_LinkOrgin->mo_Type ; + mp_NoUseHeadLink->mo_Data = AP_LinkOrgin->mo_Data ; APR_HeadCopy = mp_NoUseHeadLink ; while(mp_NoUseHeadLink!=mp_NoUseTailLink) @@ -454,7 +463,7 @@ namespace ZNsMain mp_NoUseHeadLink=mp_NoUseHeadLink->mp_NextLink; AP_LinkOrgin =AP_LinkOrgin ->mp_NextLink; - mp_NoUseHeadLink->mo_Type = AP_LinkOrgin->mo_Type; + mp_NoUseHeadLink->mo_Data = AP_LinkOrgin->mo_Data; } //while(mp_NoUseHeadLink!=mp_NoUseTailLink) @@ -487,11 +496,11 @@ namespace ZNsMain ) ///////////////////////////////////////////////////*/ { - #ifdef _REENTRANT_MUTEX + #ifdef _REENTRANT_MUTEX ZNsMain::ZCMutexSmallLock VO_ZCMutexSmallLock(mo_Mutex); #endif //_REENTRANT_MUTEX - #ifdef _DEBUG + #ifdef _DEBUG ZNsMain::ZCCheckAlloc::ZCAllowAlloc CAllowAllocObj; #endif //_DEBUG @@ -505,6 +514,9 @@ namespace ZNsMain } //if(APR_HeadLink==0) + if(TypeInit::EUseInit>0) + TypeInit::OnInit(APR_HeadLink->mo_Data, *this); + ml_AllSize += AL_MakeSize; ZCLink* VP_MakeLink = 0 ; @@ -535,8 +547,11 @@ namespace ZNsMain } //if(VP_MakeLink==0) + if(TypeInit::EUseInit>0) + TypeInit::OnInit(VP_MakeLink->mo_Data, *this); + VP_TempLink->mp_NextLink=VP_MakeLink; - VP_TempLink=VP_MakeLink; + VP_TempLink=VP_MakeLink ; } //while(--AL_MakeSize>0) @@ -608,7 +623,7 @@ namespace ZNsMain bool VB_IsHeapOver= false; VP_TempLink = \ - VP_MakeLink = new ZCLink(AP_LinkOrgin->mo_Type); + VP_MakeLink = new ZCLink(AP_LinkOrgin->mo_Data); ml_AllSize += AL_FarNum+1 ; @@ -628,7 +643,7 @@ namespace ZNsMain while(--AL_FarNum >= 0) { AP_LinkOrgin= AP_LinkOrgin->mp_NextLink; - VP_MakeLink = new ZCLink(AP_LinkOrgin->mo_Type); + VP_MakeLink = new ZCLink(AP_LinkOrgin->mo_Data); if(VP_MakeLink==0) { @@ -697,15 +712,33 @@ namespace ZNsMain mp_NoUseTailLink = AP_Link; } //else + + if(TypeInit::EUseFini>0) + TypeInit::OnFini(AP_Link->mo_Data, *this); } //void ReceiveLink(ZCLink* AP_Link) - void ReceiveLink(ZCLink* AP_HeadLink,ZCLink* AP_TailLink, TTypSize AL_Count) + void ReceiveLink(ZCLink* AP_HeadLink, ZCLink* AP_TailLink, TTypSize AL_Count) { #ifdef _REENTRANT_MUTEX ZNsMain::ZCMutexSmallLock VO_ZCMutexSmallLock(mo_Mutex); #endif //_REENTRANT_MUTEX + if(TypeInit::EUseFini>0) + { + ZCLink* VP_NowLink = AP_HeadLink; + + __for1(TypeSize, i, AL_Count) + { + TypeInit::OnFini(VP_NowLink->mo_Data, *this) ; + + VP_NowLink = VP_NowLink->mp_NextLink; + }/* + __for1(TypeSize, i, AL_Count)*/ + }/* + if(TypeInit::EUseFini>0)*/ + + if(ml_UseSize==0) { mp_NoUseHeadLink = AP_HeadLink ; @@ -839,12 +872,6 @@ namespace ZNsMain } //long GetMemSize() const - TypeInit& GetTypeInit() - { - return mo_TypeInit; - } - //TypeInit& GetTypeInit() - //public: }; //class ZCLinkHeap @@ -1183,7 +1210,7 @@ namespace ZNsMain #endif //_DEBUG - return GetLinkPtr(AL_Index)->mo_Type; + return GetLinkPtr(AL_Index)->mo_Data; }/* TType& operator[](TTypSize AL_Index)*/ @@ -1204,17 +1231,17 @@ namespace ZNsMain #endif //_DEBUG - return GetLinkPtr(AL_Index)->mo_Type; + return GetLinkPtr(AL_Index)->mo_Data; } //const TType& operator[](TTypSize AL_Index) const - operator TType&(){return AddTailDefault()->mo_Type;} + operator TType&(){return AddTailDefault()->mo_Data;} TType& operator()() { - return AddTailDefault()->mo_Type; + return AddTailDefault()->mo_Data; }/* TType& operator()()*/ @@ -1226,11 +1253,11 @@ namespace ZNsMain #if(_CODE_NEW_) if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// { - TypeMoveObj::Exec(VP_AddLink->mo_Type, AR_Type); + TypeMoveObj::Exec(VP_AddLink->mo_Data, AR_Type); } else /////////////////////////////////////////////// #endif - VP_AddLink->mo_Type= AR_Type ; + VP_AddLink->mo_Data= AR_Type ; if(++ml_Size==1) // ml_Size==0 { @@ -1274,11 +1301,11 @@ namespace ZNsMain #if(_CODE_NEW_) if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// { - TypeMoveObj::Exec(VP_AddLink->mo_Type, AR_Type); + TypeMoveObj::Exec(VP_AddLink->mo_Data, AR_Type); } else /////////////////////////////////////////////// #endif - VP_AddLink->mo_Type= AR_Type ; + VP_AddLink->mo_Data= AR_Type ; if(++ml_Size==1) // ml_Size==0 { @@ -1348,8 +1375,8 @@ namespace ZNsMain ZCLink* GetTailIterEasy (){return mp_TailLink;} IterEasyID GetTailIterEasyID(){return (IterEasyID)mp_TailLink;} - TType& front(){return mp_HeadLink->mo_Type;} - TType& back (){return mp_TailLink->mo_Type;} + TType& front(){return mp_HeadLink->mo_Data;} + TType& back (){return mp_TailLink->mo_Data;} const ZCLink* GetHeadLinkPtr () const{return mp_HeadLink;} @@ -1360,8 +1387,8 @@ namespace ZNsMain const ZCLink* GetTailIterEasy () const{return mp_TailLink;} const IterEasyID GetTailIterEasyID() const{return (IterEasyID)mp_TailLink;} - const TType& front() const{return mp_HeadLink->mo_Type;} - const TType& back () const{return mp_TailLink->mo_Type;} + const TType& front() const{return mp_HeadLink->mo_Data;} + const TType& back () const{return mp_TailLink->mo_Data;} void pop_back(TypeArg AR_Type) @@ -1394,7 +1421,7 @@ namespace ZNsMain #endif //_DEBUG - return mp_HeadLink->mo_Type; + return mp_HeadLink->mo_Data; }/* TType& GetHeadData()*/ @@ -1415,7 +1442,7 @@ namespace ZNsMain #endif //_DEBUG - return mp_HeadLink->mo_Type; + return mp_HeadLink->mo_Data; }/* const TType& GetHeadData() const*/ @@ -1437,7 +1464,7 @@ namespace ZNsMain #endif //_DEBUG - return mp_TailLink->mo_Type ; + return mp_TailLink->mo_Data ; }/* TType& GetTailData()*/ @@ -1458,7 +1485,7 @@ namespace ZNsMain #endif //_DEBUG - return mp_TailLink->mo_Type ; + return mp_TailLink->mo_Data ; }/* const TType& GetTailData() const*/ @@ -1480,7 +1507,7 @@ namespace ZNsMain #endif //_DEBUG - return GetLinkPtr(AL_Index)->mo_Type; + return GetLinkPtr(AL_Index)->mo_Data; }/* TType& GetData(TTypSize AL_Index)*/ @@ -1501,7 +1528,7 @@ namespace ZNsMain #endif //_DEBUG - return GetLinkPtr(AL_Index)->mo_Type; + return GetLinkPtr(AL_Index)->mo_Data; }/* TType GetData(TTypSize AL_Index) const*/ @@ -1685,8 +1712,15 @@ namespace ZNsMain if(AL_DelSize>ml_Size) AL_DelSize=ml_Size; - ZtCSimList VO_StoreList; CutLink( - 0, mp_HeadLink, 1, mp_HeadLink->GetNextPtr(AL_DelSize-1), AL_DelSize , VO_StoreList).DeleteAll(); + ZtCSimList VO_StoreList; CutLink ///////////// + ( + 0, mp_HeadLink + , 1, mp_HeadLink->GetNextPtr(AL_DelSize-1) + , AL_DelSize + , VO_StoreList + ) + .DeleteAll(); + //////////////////////////////////////////////// }/* void DeleteHead(TTypSize AL_DelSize)*/ @@ -1884,13 +1918,13 @@ namespace ZNsMain do ////// { if(VP_TempLink==AP_pSearchLink) - {return VL_FindIndex;} + { return VL_FindIndex; } /*+++++++++++++++++++++++++++*/ if(VL_FindIndex==ml_Size){return 0; } - VP_TempLink= VP_TempLink->mp_NextLink ; - ++VL_FindIndex ; + VP_TempLink = VP_TempLink->mp_NextLink; + VL_FindIndex= VL_FindIndex + 1 ; } while(true); }/* @@ -1917,8 +1951,8 @@ namespace ZNsMain if(VL_FindIndex==ml_Size){return 0; } - VP_TempLink=VP_TempLink->mp_NextLink; - ++VL_FindIndex ; + VP_TempLink = VP_TempLink->mp_NextLink; + VL_FindIndex= VL_FindIndex + 1 ; } while(true); }/* @@ -2026,7 +2060,7 @@ namespace ZNsMain __for1(TTypSize, VL_Index, ml_Size) { ZtCTypeData:: - GetObjRef(AO_Functor)(VP_LoopLink->mo_Type); + GetObjRef(AO_Functor)(VP_LoopLink->mo_Data); VP_LoopLink = VP_LoopLink->mp_NextLink; }/* @@ -2047,7 +2081,7 @@ namespace ZNsMain { ZtCTypeData::GetObjRef(AO_Functor) ( - VP_LoopLink->mo_Type, ZCCheckRef::PassData(AO_TypeHelp) + VP_LoopLink->mo_Data, ZCCheckRef::PassData(AO_TypeHelp) ); //////////////////////////////////////////// @@ -2072,7 +2106,7 @@ namespace ZNsMain { ZtCTypeData::GetObjRef(AO_Functor) ( - VP_LoopLink->mo_Type , + VP_LoopLink->mo_Data , ZCCheckRef1::PassData(AO_TypeHelp1), ZCCheckRef2::PassData(AO_TypeHelp2) ); @@ -2109,7 +2143,7 @@ namespace ZNsMain VP_TempLink=VP_TempLink->mp_NextLink; const bool CB_IsTrue = ZtCTypeData:: - GetObjRef(AO_Functor)( VP_TempBefore->mo_Type ); + GetObjRef(AO_Functor)( VP_TempBefore->mo_Data ); if(CB_IsTrue) { @@ -2322,11 +2356,11 @@ namespace ZNsMain };/* template ########################################### < - typename TType , - typename TTypArgu =const TType&, - typename TTypCAlloc=ZCAllocator , - typename TTypCInit =ZCInit , - typename TTypSize =ZTypLong , + typename TType , + typename TTypArgu = const TType& , + typename TTypCAlloc= ZCAllocator , + typename TTypCInit = ZtCInit , + typename TTypSize = ZTypLong , typename TMoveObj = ZNsMain:: ZtCMoveObj > diff --git a/ZCppMain/ZtCTreeData.H b/ZCppMain/ZtCTreeData.H index bf1bd30..046fdaf 100644 --- a/ZCppMain/ZtCTreeData.H +++ b/ZCppMain/ZtCTreeData.H @@ -122,8 +122,7 @@ namespace ZNsMain namespace ZNsType*/ - template< typename TType , - typename TTypeInit =ZNsMain::ZtCInit, + template< typename TType , typename TTypeTreeData=ZNsType::ZtCTypeTreeData > class ZtCTreeData /*###########################################*/ @@ -131,9 +130,8 @@ namespace ZNsMain public: class ZCNode1; class ZCNode2; class ZCNodeInfo; public: - typedef TType TypeData ; - typedef TTypeInit ZCTypeInit ; - typedef TTypeTreeData ZCTypeTreeData; + typedef TType TypeData ; + typedef TTypeTreeData TypeTreeData; public: typedef typename TTypeTreeData::TypeSize TypeSize ; typedef typename TTypeTreeData::template @@ -148,7 +146,8 @@ namespace ZNsMain typedef typename ZCNodeList::iterator IterOfNode; public: - class ZCNode1 : public ZCTypeInit + + class ZCNode1 : { public : friend class ZCNodeInfo; @@ -160,13 +159,13 @@ namespace ZNsMain ZCNode1() { - mp_HighNode=0; this->ZCTypeInit::OnInit(mo_TypeData); + mp_HighNode=0; }/* ZCNode1()*/ ~ZCNode1() { - mp_HighNode=0; this->ZCTypeInit::OnFini(mo_TypeData); + mp_HighNode=0; }/* ~ZCNode1()*/ @@ -325,7 +324,8 @@ namespace ZNsMain };/* class ZCNode1*/ - class ZCNode2 : public ZCTypeInit + + class ZCNode2 { public : friend class ZCNodeInfo; @@ -337,12 +337,12 @@ namespace ZNsMain ZCNode2() { - mp_HighNode=0; this->ZCTypeInit::OnInit(mo_TypeData); + mp_HighNode=0; }/* ZCNode2()*/ ~ZCNode2() { - mp_HighNode=0; this->ZCTypeInit::OnFini(mo_TypeData); + mp_HighNode=0; }/* ~ZCNode2()*/ @@ -458,8 +458,7 @@ namespace ZNsMain public: };/* - template< typename TType , - typename TTypeInit =ZNsMain::ZtCInit, + template< typename TType , typename TTypeTreeData=ZNsType::ZtCTypeTreeData > class ZtCTreeData #############################################*/