From 5f707743a4d8671965bc7add831dd3278c2a4c46 Mon Sep 17 00:00:00 2001 From: sauron Date: Tue, 7 Oct 2025 19:40:21 +0900 Subject: [PATCH] commit 2025-10-07 19:40 add CopyThis() in ZCppMain/ZtCLinkList.H --- ZCppMain/ZMainHead.H | 27 +++++++++++++++++ ZCppMain/ZtCLinkList.H | 58 ++++++++++++++++++++++++++++++++++++ ZCppMain/ZtCObjList.H | 19 +++++++----- ZCppMainTest/ZtCLinkList_001.cpp | 20 +++++++++++++ ZCppMainTest/ZtCLinkMoveList_000.cpp | 10 +++++++ 5 files changed, 126 insertions(+), 8 deletions(-) diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index 294f4df..8f08304 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -6444,6 +6444,33 @@ namespace ZNsMain /*#####################################################################*/ + TypeThis& CopyThis(TypeThis& ARR_Rhs) + { + // *this 를 복사해서, ARR_Rhs 의 끝에 연결한다. + + if(size()<1) return ARR_Rhs; + + ZCLink* VP_HeadCopy=0; + ZCLink* VP_TailCopy=0; + + SendFreeOutCopy //////////////////////// + ( + mp_HeadLink , size()-1, + RR(VP_HeadCopy), RR(VP_TailCopy) + ); + //////////////////////////////////////// + + TypeThis VO_TempList; + + VO_TempList.mp_HeadLink=VP_HeadCopy; + VO_TempList.mp_TailLink=VP_TailCopy; + VO_TempList.ml_LinkSize=size() ; + + ARR_Rhs.JoinTail(VO_TempList); return *this; + }/* + TypeThis& CopyThis(TypeThis& ARR_Rhs)*/ + + TypeData& GetHeadData(){return mp_HeadLink->mo_DataObjt;} TypeData& GetTailData(){return mp_TailLink->mo_DataObjt;} diff --git a/ZCppMain/ZtCLinkList.H b/ZCppMain/ZtCLinkList.H index 96099f2..e2f86c4 100644 --- a/ZCppMain/ZtCLinkList.H +++ b/ZCppMain/ZtCLinkList.H @@ -1856,6 +1856,33 @@ namespace ZNsMain /*#####################################################################*/ + TypeThis& CopyThis(TypeThis& ARR_Rhs) + { + // *this 를 복사해서, ARR_Rhs 의 끝에 연결한다. + + if(size()<1) return ARR_Rhs; + + ZCLink* VP_HeadCopy=0; + ZCLink* VP_TailCopy=0; + + SendFreeOutCopy //////////////////////// + ( + mp_HeadLink , size()-1, + RR(VP_HeadCopy), RR(VP_TailCopy) + ); + //////////////////////////////////////// + + TypeThis VO_TempList; + + VO_TempList.mp_HeadLink=VP_HeadCopy; + VO_TempList.mp_TailLink=VP_TailCopy; + VO_TempList.ml_LinkSize=size() ; + + ARR_Rhs.JoinTail(VO_TempList); return *this; + }/* + TypeThis& CopyThis(TypeThis& ARR_Rhs)*/ + + template void IterElement(TFunctor AO_Functor) { ZCLink* VP_LoopLink=mp_HeadLink; @@ -2740,6 +2767,37 @@ namespace ZNsMain /*#####################################################################*/ + TypeThis& CopyThis(TypeThis& ARR_Rhs) + { + // *this 를 복사해서, ARR_Rhs 의 끝에 연결한다. + + if(size()<1) return ARR_Rhs; + + ZCLink* VP_HeadCopy=0; + ZCLink* VP_TailCopy=0; + + SendFreeOutCopy //////////////////////////////// + ( + mo_HeadFake.mp_NextLink, size()-1, + RR(VP_HeadCopy) , RR(VP_TailCopy) + ); + //////////////////////////////////////////////// + + TypeThis VO_TempList; + + ZCLink::JoinLink + ( &VO_TempList.mo_HeadFake, VP_HeadCopy ); + ZCLink::JoinLink + ( VP_TailCopy, &VO_TempList.mo_TailFake ); + + VO_TempList.ml_LinkSize = size() ; + + ARR_Rhs.JoinTail(VO_TempList); return *this; + }/* + TypeThis& CopyThis(TypeThis& ARR_Rhs)*/ + + + template void IterElement(TFunctor AO_Functor) { ZCLink* VP_LoopLink=mo_HeadFake.mp_NextLink; diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index b08a953..8bb5d41 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -1422,7 +1422,7 @@ namespace ZNsMain ( const ZCLink* AP_CopyLink , TypeSize AL_FarNum , - ZtCObjList& ARR_StoreList + TypeThis& ARR_Rhs ) const /*#############################################################################*/ { @@ -1458,25 +1458,28 @@ namespace ZNsMain ZCLink::MakeRing(VP_HeadLink, VP_TailLink); - ARR_StoreList.mp_HeadLink = VP_HeadLink; - ARR_StoreList.ml_LinkSize = (AL_FarNum<0 ? -AL_FarNum : AL_FarNum)+1 ; + TypeThis VO_TempList; - return ARR_StoreList; + VO_TempList.mp_HeadLink = VP_HeadLink ; + VO_TempList.ml_LinkSize = + (AL_FarNum<0 ? -AL_FarNum : AL_FarNum)+1 ; + + return ARR_Rhs.JoinTail(VO_TempList); }/* ZtCObjList& CopyLink ########################################################### ( const ZCLink* AP_CopyLink , TypeSize AL_FarNum , - ZtCObjList& ARR_StoreList + TypeThis& ARR_Rhs ) const ###############################################################################*/ - ZtCObjList& CopyThis(ZtCObjList& ARR_StoreList) const + ZtCObjList& CopyThis(ZtCObjList& ARR_Rhs) const { - return CopyLink(mp_HeadLink, ml_LinkSize-1, RR(ARR_StoreList)); + return CopyLink(mp_HeadLink, ml_LinkSize-1, RR(ARR_Rhs)); }/* - ZtCObjList& CopyThis(ZtCObjList& ARR_StoreList) const*/ + ZtCObjList& CopyThis(ZtCObjList& ARR_Rhs) const*/ ZtCObjList& MakeDefault diff --git a/ZCppMainTest/ZtCLinkList_001.cpp b/ZCppMainTest/ZtCLinkList_001.cpp index 9a3114a..ec9ad43 100644 --- a/ZCppMainTest/ZtCLinkList_001.cpp +++ b/ZCppMainTest/ZtCLinkList_001.cpp @@ -39,6 +39,16 @@ namespace ZNsMain mo_DataCStr(rhs.mo_DataCStr) {cout<<"* ZCLinkData(const ZCLinkData& rhs) : "<<++ZCLinkData::SI_CallCnt<(), + mo_DataCStr + ( + (*static_cast(&rhs)).mo_DataCStr + ) + {cout<<"* ZCLinkData(const TypeBase& rhs) : "<<++ZCLinkData::SI_CallCnt<