From 004c9a91355786b32f3b761e7a768ad507f74c20 Mon Sep 17 00:00:00 2001 From: sauron Date: Tue, 9 Sep 2025 11:03:06 +0900 Subject: [PATCH] commit 2025-09-09 11:02 add ItHID(), ItNext() etc in ZCppMain/ZtCSimList.H --- ZCppMain/ZtCSimList.H | 268 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 170 insertions(+), 98 deletions(-) diff --git a/ZCppMain/ZtCSimList.H b/ZCppMain/ZtCSimList.H index f93ccc0..217551c 100644 --- a/ZCppMain/ZtCSimList.H +++ b/ZCppMain/ZtCSimList.H @@ -13,7 +13,7 @@ namespace ZNsMain template class ZtCSortObjList; - template /*############################*/ + template /*#######################################*/ < typename TType , typename TTypCArg =const TType&, @@ -21,7 +21,7 @@ namespace ZNsMain typename TTypCInit =ZCInit , typename TTypSize =ZTypLong > - class ZtCSimList /*####################*/ + class ZtCSimList /*###############################*/ { public: typedef TType Type ; @@ -282,22 +282,23 @@ namespace ZNsMain ZCLink* GetOneLink()*/ - void GetManyLink( TTypSize AL_LinkSize, - ZCLink*& APR_HeadLink, - ZCLink*& APR_TailLink - /*************/ ) + void GetManyLink /*#####################################################*/ + ( + TTypSize AL_LinkSize, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink + ) + /*######################################################################*/ { - #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 if(mp_NoUseHeadLink==0) { - MakeLink(AL_LinkSize,APR_HeadLink,APR_TailLink); + MakeLink(AL_LinkSize, APR_HeadLink, APR_TailLink); } else if(AL_LinkSize==ml_UseSize) { @@ -308,17 +309,16 @@ namespace ZNsMain mo_TypeInit(VP_Temp->mo_Type); if(VP_Temp==mp_NoUseTailLink) - break; - else - VP_Temp=VP_Temp->mp_NextLink; - //else + { break; } + + VP_Temp = VP_Temp->mp_NextLink; } //while(true) - APR_HeadLink=mp_NoUseHeadLink; + APR_HeadLink=mp_NoUseHeadLink ; APR_TailLink=mp_NoUseTailLink ; - mp_NoUseHeadLink=0; + mp_NoUseHeadLink =0; mp_NoUseTailLink =0; ml_UseSize=0; @@ -329,7 +329,7 @@ namespace ZNsMain mo_TypeInit(mp_NoUseHeadLink->mo_Type); - for(TTypSize VL_Count=2;VL_Count<=AL_LinkSize;++VL_Count) + for(TTypSize VL_Count=2; VL_Count<=AL_LinkSize; ++VL_Count) { // VL_Count 가 2 부터 시작함으로 AL_LinkSize-1 번 순환한다. // 그래야지 AL_LinkSize 개의 링크를 자를 수 있다. @@ -337,7 +337,7 @@ namespace ZNsMain mp_NoUseHeadLink=mp_NoUseHeadLink->mp_NextLink; mo_TypeInit(mp_NoUseHeadLink->mo_Type); } - //for(TTypSize VL_Count=2;VL_Count<=AL_LinkSize;++VL_Count) + //for(TTypSize VL_Count=2; VL_Count<=AL_LinkSize; ++VL_Count) APR_TailLink = mp_NoUseHeadLink; mp_NoUseHeadLink= mp_NoUseHeadLink->mp_NextLink; @@ -353,16 +353,15 @@ namespace ZNsMain mo_TypeInit(VP_Temp->mo_Type); if(VP_Temp==mp_NoUseTailLink) - break; - else - VP_Temp=VP_Temp->mp_NextLink; - //endif + { break; } + + VP_Temp=VP_Temp->mp_NextLink ; } //while(true) - APR_HeadLink=mp_NoUseHeadLink; + APR_HeadLink = mp_NoUseHeadLink; - MakeLink( AL_LinkSize-ml_UseSize, + MakeLink( AL_LinkSize - ml_UseSize , mp_NoUseTailLink->mp_NextLink, APR_TailLink /*****/ ); @@ -372,12 +371,12 @@ namespace ZNsMain ml_UseSize =0; } //else // AL_LinkSize > ml_UseSize - } - /*void GetManyLink( - TTypSize AL_LinkSize, - ZCLink*& APR_HeadLink, - ZCLink*& APR_TailLink - ////////////// ) */ + }/* + void GetManyLink + ( + TTypSize AL_LinkSize, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink + ) + ########################################################################*/ void GetManyLinkCopy /*////////////////////////////*/ @@ -397,11 +396,11 @@ namespace ZNsMain // 이 함수는 각 링크를 새로 생성하는 MakeLinkCopy() 함수와는 달리 // 기존에 있는 ml_UseSize 개의 링크를 먼저 사용한다. - #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 @@ -414,12 +413,12 @@ namespace ZNsMain ml_UseSize -= AL_FarNum+1 ; mp_NoUseHeadLink->mo_Type = AP_LinkOrgin->mo_Type; - APR_HeadCopy=mp_NoUseHeadLink; + APR_HeadCopy = mp_NoUseHeadLink ; while(--AL_FarNum>=0) { - mp_NoUseHeadLink=mp_NoUseHeadLink->mp_NextLink; - AP_LinkOrgin=AP_LinkOrgin->mp_NextLink; + mp_NoUseHeadLink= mp_NoUseHeadLink->mp_NextLink ; + AP_LinkOrgin = AP_LinkOrgin->mp_NextLink ; mp_NoUseHeadLink->mo_Type = AP_LinkOrgin->mo_Type; } @@ -444,8 +443,8 @@ namespace ZNsMain } else // AL_FarNum > ml_UseSize { - mp_NoUseHeadLink->mo_Type = AP_LinkOrgin->mo_Type; - APR_HeadCopy = mp_NoUseHeadLink; + mp_NoUseHeadLink->mo_Type = AP_LinkOrgin->mo_Type ; + APR_HeadCopy = mp_NoUseHeadLink ; while(mp_NoUseHeadLink!=mp_NoUseTailLink) { @@ -456,11 +455,12 @@ namespace ZNsMain } //while(mp_NoUseHeadLink!=mp_NoUseTailLink) - MakeLinkCopy( AP_LinkOrgin->mp_NextLink , - AL_FarNum-ml_UseSize , - mp_NoUseTailLink->mp_NextLink, - APR_TailCopy - /*********/ ); + MakeLinkCopy /*++++++++++++++++++++++++++++++++++++++++++++*/ + ( + AP_LinkOrgin ->mp_NextLink, AL_FarNum-ml_UseSize , + mp_NoUseTailLink->mp_NextLink, APR_TailCopy + ); + /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ mp_NoUseHeadLink = mp_NoUseTailLink = 0; @@ -592,11 +592,11 @@ namespace ZNsMain // AL_FarNum > 0 , 총 AL_FarNum + 1 개의 링크가 만들어진다. - #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 @@ -614,7 +614,7 @@ namespace ZNsMain //add codes for memory over ml_AllSize -= AL_FarNum+1 ; - DeleteAllInHeap(); + DeleteAllInHeap() ; return; } @@ -629,16 +629,16 @@ namespace ZNsMain if(VP_MakeLink==0) { - ml_AllSize -= AL_FarNum+1 ; + ml_AllSize -= AL_FarNum+1 ; + APR_TailCopy = VP_TempLink ; + VB_IsHeapOver= true ; - APR_TailCopy =VP_TempLink; - VB_IsHeapOver=true; break; } //if(VP_MakeLink==0) - VP_TempLink->mp_NextLink=VP_MakeLink; - VP_TempLink = VP_MakeLink; + VP_TempLink->mp_NextLink= VP_MakeLink; + VP_TempLink = VP_MakeLink; } //while(--AL_FarNum >= 0) @@ -675,7 +675,7 @@ namespace ZNsMain void ReceiveLink(ZCLink* AP_Link) { - #ifdef _REENTRANT_MUTEX + #ifdef _REENTRANT_MUTEX ZNsMain::ZCMutexSmallLock VO_ZCMutexSmallLock(mo_Mutex); #endif //_REENTRANT_MUTEX @@ -690,8 +690,8 @@ namespace ZNsMain { // 새로운 링크는 mp_NoUseTailLink 다음에 붙인다. - mp_NoUseTailLink->mp_NextLink=AP_Link; - mp_NoUseTailLink=AP_Link; + mp_NoUseTailLink->mp_NextLink= AP_Link; + mp_NoUseTailLink = AP_Link; } //else } @@ -699,7 +699,7 @@ namespace ZNsMain void ReceiveLink(ZCLink* AP_HeadLink,ZCLink* AP_TailLink, TTypSize AL_Count) { - #ifdef _REENTRANT_MUTEX + #ifdef _REENTRANT_MUTEX ZNsMain::ZCMutexSmallLock VO_ZCMutexSmallLock(mo_Mutex); #endif //_REENTRANT_MUTEX @@ -712,14 +712,13 @@ namespace ZNsMain { // 새로운 링크는 mp_NoUseTailLink 다음에 붙인다. - mp_NoUseTailLink->mp_NextLink=AP_HeadLink; - mp_NoUseTailLink=AP_TailLink; + mp_NoUseTailLink->mp_NextLink = AP_HeadLink; + mp_NoUseTailLink = AP_TailLink; } //else mp_NoUseTailLink->mp_NextLink=0; - - ml_UseSize += AL_Count ; + ml_UseSize += AL_Count ; } //void ReceiveLink(ZCLink* AP_HeadLink,ZCLink* AP_TailLink, TTypSize AL_Count) @@ -786,7 +785,7 @@ namespace ZNsMain void DeleteAllInHeap() { - #ifdef _REENTRANT_MUTEX + #ifdef _REENTRANT_MUTEX ZNsMain::ZCMutexSmallLock VO_ZCMutexSmallLock(mo_Mutex); #endif //_REENTRANT_MUTEX @@ -891,9 +890,9 @@ namespace ZNsMain VP_TailLink->mp_NextLink=0; - ARR_StoreList.mp_HeadLink=VP_HeadLink; - ARR_StoreList.mp_TailLink=VP_TailLink; - ARR_StoreList.ml_Size =AL_FarNum+1 ; + ARR_StoreList.mp_HeadLink= VP_HeadLink ; + ARR_StoreList.mp_TailLink= VP_TailLink ; + ARR_StoreList.ml_Size = AL_FarNum+1 ; return ARR_StoreList; }/* @@ -1004,12 +1003,11 @@ namespace ZNsMain { mp_HeadLink=AP_CutTail->mp_NextLink; } - //endif } else if(AP_CutTail==mp_TailLink) // 잘라내려는 링크가 끝 링크를 포함할 때. { - mp_TailLink=AP_CutHeadPrev; - mp_TailLink->mp_NextLink=0; + mp_TailLink= AP_CutHeadPrev ; + mp_TailLink->mp_NextLink= 0 ; } else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때. { @@ -1060,12 +1058,13 @@ namespace ZNsMain ZCLink* VP_HeadLink=0; ZCLink* VP_TailLink=0; - GetCLinkHeap().GetManyLink(AL_DefaultSize, VP_HeadLink, VP_TailLink); - ZCLink::MakeCircle(VP_HeadLink, VP_TailLink); + GetCLinkHeap().GetManyLink + (AL_DefaultSize, VP_HeadLink, VP_TailLink); + ZCLink::MakeCircle( VP_HeadLink, VP_TailLink ); - ARR_StoreList.mp_HeadLink=VP_HeadLink; - ARR_StoreList.mp_TailLink=VP_TailLink; - ARR_StoreList.ml_Size =AL_DefaultSize; + ARR_StoreList.mp_HeadLink= VP_HeadLink ; + ARR_StoreList.mp_TailLink= VP_TailLink ; + ARR_StoreList.ml_Size = AL_DefaultSize ; return ARR_StoreList; } @@ -1219,7 +1218,8 @@ namespace ZNsMain void AddHead(TypeArg AR_Type) { - ZCLink* VP_AddLink=GetCLinkHeap().GetOneLink(); VP_AddLink->mo_Type=AR_Type; + ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink() ; + VP_AddLink->mo_Type= AR_Type ; if(++ml_Size==1) // ml_Size==0 { @@ -1258,10 +1258,8 @@ namespace ZNsMain void AddTail(TypeArg AR_Type) { - ZCLink* VP_AddLink = - GetCLinkHeap().GetOneLink(); - - VP_AddLink->mo_Type= AR_Type; + ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink(); + VP_AddLink->mo_Type= AR_Type ; if(++ml_Size==1) // ml_Size==0 { @@ -1270,7 +1268,7 @@ namespace ZNsMain } else { - mp_TailLink->mp_NextLink=VP_AddLink; + mp_TailLink->mp_NextLink=VP_AddLink ; mp_TailLink=mp_TailLink->mp_NextLink; }/* else*/ @@ -1325,11 +1323,11 @@ namespace ZNsMain ZCLink* GetHeadLinkPtr (){return mp_HeadLink;} ZCLink* GetHeadIterEasy (){return mp_HeadLink;} - IterEasyID GetHeadIterEasyID(){return (IterEasyID)mp_HeadLink;} + IterEasyID GetHeadIterEasyID(){return (IterEasyID)mp_HeadLink;} ZCLink* GetTailLinkPtr (){return mp_TailLink;} ZCLink* GetTailIterEasy (){return mp_TailLink;} - IterEasyID GetTailIterEasyID(){return (IterEasyID)mp_TailLink;} + IterEasyID GetTailIterEasyID(){return (IterEasyID)mp_TailLink;} TType& front(){return mp_HeadLink->mo_Type;} TType& back (){return mp_TailLink->mo_Type;} @@ -1526,8 +1524,8 @@ namespace ZNsMain }/* if(mp_HeadLink==0)*/ - AP_Link->mp_NextLink=mp_HeadLink; - mp_HeadLink=AP_Link; + AP_Link->mp_NextLink= mp_HeadLink ; + mp_HeadLink = AP_Link ; ++ml_Size; }/* @@ -1569,7 +1567,7 @@ namespace ZNsMain else { mp_TailLink->mp_NextLink=AP_Link; - mp_TailLink=AP_Link; + mp_TailLink =AP_Link; }/* else*/ @@ -1599,8 +1597,8 @@ namespace ZNsMain { rhs.mp_TailLink->mp_NextLink=mp_HeadLink; - mp_HeadLink=rhs.mp_HeadLink; - ml_Size += rhs.ml_Size; + mp_HeadLink= rhs.mp_HeadLink ; + ml_Size += rhs.ml_Size ; }/* else*/ @@ -1631,7 +1629,7 @@ namespace ZNsMain else { mp_TailLink->mp_NextLink=rhs.mp_HeadLink; - mp_TailLink=rhs.mp_TailLink; + mp_TailLink =rhs.mp_TailLink; ml_Size += rhs.ml_Size; }/* @@ -1648,8 +1646,8 @@ namespace ZNsMain { if(ml_Size==0) return; - ZCLink* VP_DelLink=mp_HeadLink; - mp_HeadLink=mp_HeadLink->mp_NextLink; + ZCLink* VP_DelLink= mp_HeadLink ; + mp_HeadLink = mp_HeadLink->mp_NextLink; GetCLinkHeap().ReceiveLink(VP_DelLink); @@ -1704,20 +1702,24 @@ namespace ZNsMain if(AL_DelSize==ml_Size) { - GetCLinkHeap().ReceiveLink(mp_HeadLink,mp_TailLink,ml_Size); - mp_HeadLink=0; - mp_TailLink=0; - ml_Size =0; + GetCLinkHeap().ReceiveLink + (mp_HeadLink, mp_TailLink, ml_Size); + mp_HeadLink=0 ; + mp_TailLink=0 ; + ml_Size =0 ; return; }/* if(AL_DelSize==ml_Size)*/ - ZCLink* VP_NewTail=mp_HeadLink->GetNextPtr(ml_Size-AL_DelSize-1); - GetCLinkHeap().ReceiveLink(VP_NewTail->mp_NextLink,mp_TailLink,AL_DelSize); - mp_TailLink=VP_NewTail; - mp_TailLink->mp_NextLink=0; - ml_Size -= AL_DelSize ; + ZCLink* VP_NewTail= mp_HeadLink-> + GetNextPtr(ml_Size-AL_DelSize-1); + GetCLinkHeap().ReceiveLink + (VP_NewTail->mp_NextLink, mp_TailLink, AL_DelSize); + + mp_TailLink = VP_NewTail ; + mp_TailLink-> mp_NextLink=0 ; + ml_Size -= AL_DelSize ; }/* void DeleteTail(TTypSize AL_DelSize)*/ @@ -1807,7 +1809,13 @@ namespace ZNsMain ZtCSimList VO_StoreList; - CutLink(AP_CutHeadPrev,AP_CutHead,AL_CutHeadPos,AP_CutTail,AL_CutTailPos ,VO_StoreList).DeleteAll(); + CutLink /*==========================================*/ + ( + AP_CutHeadPrev, AP_CutHead , AL_CutHeadPos, + AP_CutTail , AL_CutTailPos , VO_StoreList + ). + DeleteAll() ; + /*==================================================*/ }/* void Delete /////////////////////////////////////// ( @@ -1862,8 +1870,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 ; } while(true); }/* @@ -1891,7 +1899,7 @@ namespace ZNsMain if(VL_FindIndex==ml_Size){return 0; } VP_TempLink=VP_TempLink->mp_NextLink; - ++VL_FindIndex; + ++VL_FindIndex ; } while(true); }/* @@ -2227,6 +2235,70 @@ namespace ZNsMain }/* const TType& GetDataInIter(const IterEasyID APPI_IterEasyID) const*/ + + + ZCLink* ItHEasy(){return mp_HeadLink;} + IterEasyID ItHID (){return (IterEasyID)mp_HeadLink;} + + ZCLink* ItTEasy(){return mp_TailLink;} + IterEasyID ItTID (){return (IterEasyID)mp_TailLink;} + + const ZCLink* ItHEasy() const{return mp_HeadLink;} + const IterEasyID ItHID () const{return (IterEasyIDc)mp_HeadLink;} + + const ZCLink* ItTEasy() const{return mp_TailLink;} + const IterEasyID ItTID () const{return (IterEasyIDc)mp_TailLink;} + + + void ItNext(ZCLink*& APR_CLink) + { + MoveNextIter(APR_CLink); + }/* + void ItNext(ZCLink*& APR_CLink)*/ + + void ItNext(IterEasyID& APPI_IterEasyID) + { + MoveNextIter(APPI_IterEasyID); + }/* + void ItNext(IterEasyID& APPI_IterEasyID)*/ + + void ItNext(const ZCLink*& APR_CLink) const + { + MoveNextIter(APR_CLink); + }/* + void ItNext(const ZCLink*& APR_CLink) const*/ + + void ItNext(const IterEasyID& APPI_IterEasyID) const + { + MoveNextIter(APPI_IterEasyID); + }/* + void ItNext(const IterEasyID& APPI_IterEasyID) const*/ + + + TType& ItD(ZCLink* AP_CLink) + { + return **AP_CLink; + }/* + TType& ItD(ZCLink* AP_CLink)*/ + + TType& ItD(IterEasyID APPI_IterEasyID) + { + return ItD((ZCLink*)APPI_IterEasyID); + }/* + TType& ItD(IterEasyID APPI_IterEasyID)*/ + + const TType& ItD(const ZCLink* AP_CLink) const + { + return **AP_CLink; + }/* + const TType& ItD(const ZCLink* AP_CLink) const*/ + + const TType& ItD(const IterEasyID APPI_IterEasyID) const + { + return ItD((const ZCLink*)APPI_IterEasyID); + }/* + const TType& ItD(const IterEasyID APPI_IterEasyID) const*/ + /* public:*/ };/*