commit 2025-10-12 08:03 is coding ZtCBaseList::CutLinkRangeIn() in ZCppMain/ZMainHead.H
This commit is contained in:
@ -6607,10 +6607,15 @@ namespace ZNsMain
|
||||
|
||||
AP_RhsStd==0 이면 맨 앞에 삽입한다. -- 2025-10-06 09:16
|
||||
|
||||
■ bool AB_After=true 추가. AB_After==false 이면, rhs 의
|
||||
AP_RhsStd 의 앞에 삽입한다.
|
||||
■ bool AB_After=true 추가.
|
||||
|
||||
AP_RhsStd==0 이면 맨 뒤에 삽입한다. -- 2025-10-07 08:36
|
||||
AB_After==true 이면, rhs 의 AP_RhsStd 의 뒤에 삽입한다.
|
||||
AB_After==false 이면, rhs 의 AP_RhsStd 의 앞에 삽입한다.
|
||||
|
||||
AB_After==true && AP_RhsStd==0 이면 맨 앞에 삽입한다.
|
||||
AB_After==false && AP_RhsStd==0 이면 맨 뒤에 삽입한다.
|
||||
|
||||
-- 2025-10-07 08:36
|
||||
|
||||
///////////////////////////////////////////////////////////*/
|
||||
|
||||
@ -6705,7 +6710,365 @@ namespace ZNsMain
|
||||
)
|
||||
#######################################################################*/
|
||||
|
||||
/*private :*/
|
||||
|
||||
TypeThis& CutLinkRangeIn ///////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead ,
|
||||
ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize ,
|
||||
ZCLink* AP_NowStd ,
|
||||
bool AB_After=true
|
||||
)
|
||||
/*#####################################################################*/
|
||||
{
|
||||
/*///////////////////////////////////////////////////////////
|
||||
|
||||
■ AR_CutHead 는 삭제하려는 링크의 범위의 앞의 링크.
|
||||
AR_CutTail 은 삭제하려는 링크의 범위의 뒤의 링크.
|
||||
|
||||
AR_CutHead 의 앞과 AR_CutTail 의 뒤에서 연결 상태를 끊고,
|
||||
|
||||
AB_After==true 이면, rhs 의 AP_NowStd 의 뒤에
|
||||
AB_After==false 이면, rhs 의 AP_NowStd 의 앞에
|
||||
|
||||
연결한다.
|
||||
|
||||
AB_After==true && AP_NowStd==0 이면 맨 앞에
|
||||
AB_After==false && AP_NowStd==0 이면 맨 뒤에
|
||||
|
||||
연결한다. -- 2025-10-12 08:19
|
||||
|
||||
///////////////////////////////////////////////////////////*/
|
||||
|
||||
if(ml_LinkSize<1){return *this;}
|
||||
|
||||
if(AL_CutSize>=ml_LinkSize){return *this;}
|
||||
|
||||
if(&AR_CutHead==mp_HeadLink && &AR_CutTail==mp_TailLink)
|
||||
{ return *this; }
|
||||
if(&AR_CutHead==AP_NowStd || &AR_CutTail==AP_NowStd )
|
||||
{ return *this; }
|
||||
/******************************************************/
|
||||
|
||||
if (AB_After && AP_NowStd==0) // 맨 앞에 삽입.
|
||||
{
|
||||
if(&AR_CutHead==mp_HeadLink)
|
||||
{ /* nothing to do.*/ }
|
||||
else if(mp_HeadLink->mp_NextLink==&AR_CutHead)
|
||||
{
|
||||
// mp_HeadLink - &AR_CutHead ~ &AR_CutTail
|
||||
|
||||
if(&AR_CutTail==mp_TailLink)
|
||||
{
|
||||
// 현재 : mp_HeadLink - &AR_CutHead ~ &AR_CutTail(=mp_TailLink)
|
||||
// 이후 : &AR_CutHead ~ &AR_CutTail - mp_HeadLink
|
||||
|
||||
ZCLink::JoinLink(&AR_CutTail, mp_HeadLink);
|
||||
ZCLink::MakeRing(&AR_CutHead, mp_HeadLink);
|
||||
|
||||
mp_TailLink = mp_HeadLink ;
|
||||
mp_HeadLink = &AR_CutHead ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 현재 : mp_HeadLink - &AR_CutHead ~ &AR_CutTail - VP_CutNext
|
||||
// 이후 : &AR_CutHead ~ &AR_CutTail - mp_HeadLink - VP_CutNext
|
||||
|
||||
ZCLink* VP_CutNext = AR_CutTail.mp_NextLink ;
|
||||
|
||||
ZCLink::JoinLink(&AR_CutTail, mp_HeadLink);
|
||||
ZCLink::JoinLink(mp_HeadLink, VP_CutNext );
|
||||
ZCLink::MakeRing(&AR_CutHead, mp_TailLink);
|
||||
|
||||
mp_HeadLink = &AR_CutHead ;
|
||||
}
|
||||
}/*
|
||||
else if(mp_HeadLink->mp_NextLink==&AR_CutHead)*/
|
||||
|
||||
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
mp_HeadLink ~ &AR_CutHead ~ &AR_CutTail
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||
else
|
||||
{
|
||||
if(&AR_CutTail==mp_TailLink)
|
||||
{
|
||||
/*////////////////////////////////////////////
|
||||
|
||||
■ 현재 :
|
||||
mp_HeadLink ~ VP_CutPrev -
|
||||
&AR_CutHead - &AR_CutTail(mp_TailLink)
|
||||
이후 :
|
||||
&AR_CutHead - &AR_CutTail -
|
||||
mp_HeadLink ~ VP_CutPrev
|
||||
|
||||
////////////////////////////////////////////*/
|
||||
|
||||
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink ;
|
||||
|
||||
ZCLink::JoinLink(&AR_CutTail, mp_HeadLink);
|
||||
ZCLink::MakeRing(&AR_CutHead, VP_CutPrev );
|
||||
|
||||
mp_HeadLink = &AR_CutHead ;
|
||||
mp_TailLink = VP_CutPrev ;
|
||||
}/*
|
||||
if(&AR_CutTail==mp_TailLink)*/
|
||||
|
||||
else /*************************************************/
|
||||
{
|
||||
/*////////////////////////////////////////////
|
||||
|
||||
■ 현재 :
|
||||
mp_HeadLink ~ VP_CutPrev -
|
||||
&AR_CutHead - &AR_CutTail - VP_CutNext
|
||||
이후 :
|
||||
&AR_CutHead - &AR_CutTail -
|
||||
mp_HeadLink ~ VP_CutPrev - VP_CutNext
|
||||
|
||||
////////////////////////////////////////////*/
|
||||
|
||||
ZCLink* VP_CutNext = AR_CutTail.mp_NextLink ;
|
||||
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink ;
|
||||
|
||||
ZCLink::JoinLink(&AR_CutTail, mp_HeadLink);
|
||||
ZCLink::JoinLink(&VP_CutPrev, VP_CutNext );
|
||||
ZCLink::MakeRing(&AR_CutHead, mp_TailLink);
|
||||
|
||||
mp_HeadLink = &AR_CutHead ;
|
||||
}/*
|
||||
else **************************************************/
|
||||
}
|
||||
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
mp_HeadLink ~ &AR_CutHead ~ &AR_CutTail
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||
|
||||
}/*
|
||||
if (AB_After && AP_NowStd==0) // 맨 앞에 삽입.*/
|
||||
|
||||
else if(!AB_After && AP_NowStd==0) // 맨 뒤에 삽입.
|
||||
{
|
||||
if(&AR_CutTail==mp_TailLink)
|
||||
{ /* nothing to do.*/ }
|
||||
else if(mp_TailLink->mp_PrevLink==&AR_CutTail)
|
||||
{
|
||||
// &AR_CutHead ~ &AR_CutTail - mp_TailLink
|
||||
|
||||
if(&AR_CutHead==mp_HeadLink)
|
||||
{
|
||||
// 현재 : &AR_CutHead(=mp_HeadLink) ~ &AR_CutTail - mp_TailLink
|
||||
// 이후 : mp_TailLink - &AR_CutHead ~ &AR_CutTail
|
||||
|
||||
ZCLink::JoinLink(mp_TailLink, &AR_CutHead);
|
||||
ZCLink::MakeRing(mp_TailLink, &AR_CutTail);
|
||||
|
||||
mp_HeadLink = mp_TailLink ;
|
||||
mp_TailLink = &AR_CutTail ;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 현재 : VP_CutPrev - &AR_CutHead ~ &AR_CutTail - mp_TailLink
|
||||
// 이후 : VP_CutPrev - mp_TailLink - &AR_CutHead ~ &AR_CutTail
|
||||
|
||||
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink ;
|
||||
|
||||
ZCLink::JoinLink(VP_CutPrev, mp_TailLink);
|
||||
ZCLink::JoinLink(mp_TailLink, &AR_CutHead);
|
||||
ZCLink::MakeRing(mp_HeadLink, &AR_CutTail);
|
||||
|
||||
mp_TailLink = &AR_CutTail ;
|
||||
}
|
||||
}/*
|
||||
else if(mp_TailLink->mp_PrevLink==&AR_CutTail)*/
|
||||
|
||||
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
&AR_CutHead ~ &AR_CutTail ~ mp_TailLink
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||
else
|
||||
{
|
||||
if(&AR_CutHead==mp_HeadLink)
|
||||
{
|
||||
/*////////////////////////////////////////////
|
||||
|
||||
■ 현재 :
|
||||
(mp_HeadLink=)
|
||||
&AR_CutHead ~ &AR_CutTail - VP_CutNext ~ mp_TailLink
|
||||
이후 :
|
||||
VP_CutNext ~ mp_TailLink - &AR_CutHead ~ &AR_CutTail
|
||||
|
||||
////////////////////////////////////////////*/
|
||||
|
||||
ZCLink* VP_CutNext = AR_CutTail.mp_NextLink ;
|
||||
|
||||
ZCLink::JoinLink(mp_TailLink, &AR_CutHead);
|
||||
ZCLink::MakeRing(VP_CutNext , &AR_CutTail);
|
||||
|
||||
mp_HeadLink = VP_CutNext ;
|
||||
mp_TailLink = &AR_CutTail ;
|
||||
}/*
|
||||
if(&AR_CutHead==mp_HeadlLink)*/
|
||||
|
||||
else /*************************************************/
|
||||
{
|
||||
/*////////////////////////////////////////////
|
||||
|
||||
■ 현재 :
|
||||
VP_CutPrev - &AR_CutHead ~
|
||||
&AR_CutTail - VP_CutNext ~ mp_TailLink
|
||||
이후 :
|
||||
&VP_CutPrev - VP_CutNext ~
|
||||
mp_TailLink - &AR_CutHead ~ &AR_CutTail
|
||||
|
||||
////////////////////////////////////////////*/
|
||||
|
||||
ZCLink* VP_CutNext = AR_CutTail.mp_NextLink ;
|
||||
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink ;
|
||||
|
||||
ZCLink::JoinLink(&VP_CutPrev, VP_CutNext );
|
||||
ZCLink::JoinLink(mp_TailLink, &AR_CutHead);
|
||||
ZCLink::MakeRing(&AR_CutHead, &AR_CutTail);
|
||||
|
||||
mp_TailLink = &AR_CutTail ;
|
||||
}/*
|
||||
else **************************************************/
|
||||
}
|
||||
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
&AR_CutHead ~ &AR_CutTail ~ mp_TailLink
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||
|
||||
}/*
|
||||
else if(!AB_After && AP_NowStd==0) // 맨 뒤에 삽입.*/
|
||||
|
||||
|
||||
/*=================================================================
|
||||
AP_NowStd!=0 : AP_NowStd 의 앞이나 뒤에 삽입.
|
||||
=================================================================*/
|
||||
else if(AR_CutTail.mp_NextLink==AP_NowStd)
|
||||
{
|
||||
// &AR_CutHead ~ &AR_CutTail - AP_NowStd
|
||||
|
||||
if(!AB_After)
|
||||
{ /* nothing to do*/ }
|
||||
else if(&AR_CutHead==mp_HeadLink)
|
||||
{
|
||||
/*************************************************************
|
||||
|
||||
■ mp_HeadLink==&AR_CutHead && mp_TailLink!=mp_TailLink
|
||||
|
||||
현재 : &AR_CutHead ~ &AR_CutTail - AP_NowStd - VP_StdNext ~ mp_TailLink
|
||||
이후 : AP_NowStd - &AR_CutHead ~ &AR_CutTail- VP_StdNext ~ mp_TailLink
|
||||
|
||||
*************************************************************/
|
||||
|
||||
ZCLink* VP_StdNext = AP_NowStd->mp_NextLink;
|
||||
|
||||
ZCLink::JoinLink(AP_NowStd , &AR_CutHead );
|
||||
ZCLink::JoinLink(&AR_CutTail, VP_StdNext );
|
||||
ZCLink::MakeRing(AP_NowStd , mp_TailLink);
|
||||
|
||||
mp_HeadLink = AP_NowStd ;
|
||||
}/*
|
||||
else if(&AR_CutHead==mp_HeadLink)*/
|
||||
else if(&AR_CutTail==mp_TailLink)
|
||||
{ /* nothing to do */ }
|
||||
/*******************************/
|
||||
else
|
||||
{
|
||||
/*************************************************************
|
||||
|
||||
■ mp_HeadLink!=&AR_CutHead && mp_TailLink!=&AR_CutTail
|
||||
|
||||
현재 : VP_CutPrev - &AR_CutHead ~ &AR_CutTail - AP_NowStd - VP_StdNext
|
||||
이후 : VP_CutPrev - AP_NowStd - &AR_CutHead ~ &AR_CutTail- VP_StdNext
|
||||
|
||||
*************************************************************/
|
||||
|
||||
ZCLink* VP_CutPrev = AR_CutHead.mp_PrevLink;
|
||||
ZCLink* VP_StdNext = AP_NowStd->mp_NextLink;
|
||||
|
||||
ZCLink::JoinLink(VP_CutPrev , AP_NowStd );
|
||||
ZCLink::JoinLink(AP_NowStd , &AR_CutHead);
|
||||
ZCLink::JoinLink(&AR_CutTail, VP_StdNext );
|
||||
}
|
||||
}/*
|
||||
else if(AR_CutTail.mp_NextLink==AP_NowStd)*/
|
||||
|
||||
else if(AR_CutHead.mp_PrevLink==AP_NowStd)
|
||||
{
|
||||
// AP_NowStd - &AR_CutHead ~ &AR_CutTail
|
||||
|
||||
if(AB_After)
|
||||
{ /* nothing to do*/ }
|
||||
else if(&AR_CutTail==mp_TailLink)
|
||||
{
|
||||
if(AP_NowStd==mp_HeadLink)
|
||||
{
|
||||
/*************************************************************
|
||||
|
||||
■ AP_NowStd==mp_HeadLink && &AR_CutTail==mp_TailLink
|
||||
|
||||
현재 : AP_NowStd - &AR_CutHead ~ &AR_CutTail
|
||||
이후 : &AR_CutHead ~ &AR_CutTail - AP_NowStd
|
||||
|
||||
*************************************************************/
|
||||
|
||||
ZCLink::JoinLink(&AR_CutTail, AP_NowStd);
|
||||
ZCLink::MakeRing(&AR_CutHead, AP_NowStd);
|
||||
|
||||
mp_HeadLink = &AR_CutHead;
|
||||
mp_TailLink = AP_NowStd ;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*************************************************************
|
||||
|
||||
■ &AR_CutTail==mp_TailLink
|
||||
|
||||
현재 : VP_StdPrev - AP_NowStd - &AR_CutHead ~ &AR_CutTail
|
||||
이후 : VP_StdPrev - &AR_CutHead ~ &AR_CutTail - AP_NowStd
|
||||
|
||||
*************************************************************/
|
||||
|
||||
ZCLink* VP_StdPrev = AP_NowStd->mp_PrevLink ;
|
||||
|
||||
ZCLink::JoinLink(VP_StdPrev , &AR_CutHead);
|
||||
ZCLink::JoinLink(&AR_CutTail, AP_NowStd );
|
||||
ZCLink::MakeRing(mp_HeadLink, AP_NowStd );
|
||||
|
||||
mp_TailLink = AP_NowStd ;
|
||||
}
|
||||
}/*
|
||||
else if(&AR_CutHead==mp_HeadLink)*/
|
||||
|
||||
|
||||
// add codes
|
||||
|
||||
|
||||
}/*
|
||||
else if(AR_CutTail.mp_NextLink==AP_NowStd)*/
|
||||
/*=================================================================
|
||||
AP_RhsStd!=0 : AP_RhsStd 의 앞이나 뒤에 삽입.
|
||||
=================================================================*/
|
||||
|
||||
|
||||
|
||||
// add codes
|
||||
|
||||
|
||||
|
||||
return *this;
|
||||
}/*
|
||||
TypeThis& CutLinkRangeIn ///////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead ,
|
||||
ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize ,
|
||||
ZCLink* AP_RhsStd ,
|
||||
bool AB_After=true
|
||||
)
|
||||
#######################################################################*/
|
||||
|
||||
|
||||
private :
|
||||
/***************************************************************************/
|
||||
public :
|
||||
|
||||
ZtCBaseList()
|
||||
@ -7480,7 +7843,6 @@ namespace ZNsMain
|
||||
|
||||
|
||||
|
||||
|
||||
TypeThis& CopyThis(TypeThis& ARR_Rhs) const
|
||||
{
|
||||
// *this 를 복사해서, ARR_Rhs 의 끝에 연결한다.
|
||||
|
Reference in New Issue
Block a user