From eb050b2c6c1c7c2e0bca6f4618bbf96216143c69 Mon Sep 17 00:00:00 2001 From: sauron Date: Sat, 11 Oct 2025 21:31:02 +0900 Subject: [PATCH] commit 2025-10-11 21:30 add ZtCBaseList::SendRangeIn() etc : ZCppMain/ZMainHead.H --- ZCppMain/ZMainHead.H | 97 +++++++++++++++++++++++++++++++++------- ZCppMainTest/ZtCBaseList_000.cpp | 22 +++++++++ 2 files changed, 104 insertions(+), 15 deletions(-) diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index bee94e8..41c2625 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -7060,11 +7060,13 @@ namespace ZNsMain if(VP_StdLink==mp_TailLink) { mp_TailLink=rhs.mp_TailLink; } + ml_LinkSize += rhs.ml_LinkSize; + rhs.mp_HeadLink =0 ; rhs.mp_TailLink =0 ; rhs.ml_LinkSize =0 ; - ml_LinkSize += rhs.ml_LinkSize; return *this; + return *this; /*:::::::::::::*/ }/* ZtCBaseList& JoinAfter(TypeThis& rhs, ZCLinkOpt AO_StdOpt)*/ @@ -7112,11 +7114,13 @@ namespace ZNsMain if(VP_StdLink==mp_HeadLink) { mp_HeadLink = rhs.mp_HeadLink; } + ml_LinkSize += rhs.ml_LinkSize; + rhs.mp_HeadLink =0 ; rhs.mp_TailLink =0 ; rhs.ml_LinkSize =0 ; - ml_LinkSize += rhs.ml_LinkSize; return *this; + return *this; /*:::::::::::::*/ }/* ZtCBaseList& JoinBefore(TypeThis& rhs, ZCLinkOpt AO_StdOpt)*/ @@ -7385,14 +7389,8 @@ namespace ZNsMain rhs , AO_LinkOpt.Raw(), AB_After ); /***********************************************/ - }/* - ZtCBaseList& SendRangeOut /////////////////////////////////////////////// - ( - ZCLink& AR_CutHead, ZCLink& AR_CutTail, - TypeSize AI_CutSize, TypeThis& rhs , - ZCLinkOpt AO_LinkOpt, bool AB_After - ) - #######################################################################*/ + } + /*#####################################################################*/ ZtCBaseList& SendRangeOutAfter ////////////////////////////////////////// @@ -7424,13 +7422,82 @@ namespace ZNsMain AR_CutHead, AR_CutTail, AI_CutSize, rhs, AO_LinkOpt.Raw(), false ); ////////////////////// - }/* - ZtCBaseList& SendRangeOutBefore ///////////////////////////////////////// + } + /*#####################################################################*/ + + + ZtCBaseList& SendRangeIn //////////////////////////////////////////////// ( - ZCLink& AR_CutHead, ZCLink& AR_CutTail, - TypeSize AI_CutSize, TypeThis& rhs , ZCLinkOpt AO_LinkOpt + ZCLink& AR_CutHead, ZCLink& AR_CutTail, + TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt, bool AB_After ) - #######################################################################*/ + /*#####################################################################*/ + { + // AR_CutHead 부터 AR_CutTail 까지를 잘라서 AR_StdLink 뒤에 연결한다. + + if(AI_CutSize < 1 ){return *this;} + if(AI_CutSize >= size()){return *this;} + + ZtCBaseList VO_Saver; CutLinkRangeOut /***********/ + ( + AR_CutHead , AR_CutTail , AI_CutSize, + RR(VO_Saver), AO_LinkOpt.Raw(), AB_After + ); + /*************************************************/ + + if(AB_After) + return JoinAfter (VO_Saver, AO_LinkOpt); + else return JoinBefore(VO_Saver, AO_LinkOpt); + } + /*#####################################################################*/ + + ZtCBaseList& SendRangeInAfter /////////////////////////////////////////// + ( + ZCLink& AR_CutHead, ZCLink& AR_CutTail, + TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt + ) + /*#####################################################################*/ + { + return SendRangeIn + ( AR_CutHead, AR_CutTail, AI_CutSize, AO_LinkOpt, true ); + } + /*#####################################################################*/ + ZtCBaseList& SendRangeInBefore ////////////////////////////////////////// + ( + ZCLink& AR_CutHead, ZCLink& AR_CutTail, + TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt + ) + /*#####################################################################*/ + { + return SendRangeIn + ( AR_CutHead, AR_CutTail, AI_CutSize, AO_LinkOpt, false); + } + /*#####################################################################*/ + + ZtCBaseList& SendRangeInHead //////////////////////////////////////////// + ( + ZCLink& AR_CutHead, ZCLink& AR_CutTail, + TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt + ) + /*#####################################################################*/ + { + return SendRangeIn + ( AR_CutHead, AR_CutTail, AI_CutSize, ZCLinkOpt(0), true ); + } + /*#####################################################################*/ + ZtCBaseList& SendRangeInTail //////////////////////////////////////////// + ( + ZCLink& AR_CutHead, ZCLink& AR_CutTail, + TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt + ) + /*#####################################################################*/ + { + return SendRangeIn + ( AR_CutHead, AR_CutTail, AI_CutSize, ZCLinkOpt(0), false); + } + /*#####################################################################*/ + + TypeThis& CopyThis(TypeThis& ARR_Rhs) const diff --git a/ZCppMainTest/ZtCBaseList_000.cpp b/ZCppMainTest/ZtCBaseList_000.cpp index afdb453..19fe813 100644 --- a/ZCppMainTest/ZtCBaseList_000.cpp +++ b/ZCppMainTest/ZtCBaseList_000.cpp @@ -647,6 +647,28 @@ namespace ZNsMain cout<<"*****************************************************"< 6th)"< 1th)"<