commit 2025-10-12 08:03 add MoveLinkAfter() etc in ZCppMain/ZtCLinkList.H
This commit is contained in:
@ -7564,6 +7564,7 @@ namespace ZNsMain
|
|||||||
bool IsEmpty() const{return ml_LinkSize<1;}
|
bool IsEmpty() const{return ml_LinkSize<1;}
|
||||||
bool empty () const{return ml_LinkSize<1;}
|
bool empty () const{return ml_LinkSize<1;}
|
||||||
|
|
||||||
|
void clear(){DeleteAll();}
|
||||||
|
|
||||||
void push_front(TypeArg AO_ArgData){AddHead(AO_ArgData);}
|
void push_front(TypeArg AO_ArgData){AddHead(AO_ArgData);}
|
||||||
void push_back (TypeArg AO_ArgData){AddTail(AO_ArgData);}
|
void push_back (TypeArg AO_ArgData){AddTail(AO_ArgData);}
|
||||||
|
@ -1453,6 +1453,13 @@ namespace ZNsMain
|
|||||||
TypeThis& JoinBefore(TypeThis& rhs, ZCLink* AP_StdLink)*/
|
TypeThis& JoinBefore(TypeThis& rhs, ZCLink* AP_StdLink)*/
|
||||||
|
|
||||||
|
|
||||||
|
ZCLink* AddLinkAfter(ZCLink* AP_StdLink, ZCLink* AP_NewLink)
|
||||||
|
{ return &JoinAfter(*AP_NewLink, AP_StdLink); }
|
||||||
|
|
||||||
|
ZCLink* AddLinkBefore(ZCLink* AP_StdLink, ZCLink* AP_NewLink)
|
||||||
|
{ return &JoinBefore(*AP_NewLink, AP_StdLink); }
|
||||||
|
|
||||||
|
|
||||||
ZCLink& CutLink(ZCLink& AR_CutLink)
|
ZCLink& CutLink(ZCLink& AR_CutLink)
|
||||||
{
|
{
|
||||||
if(&AR_CutLink==mp_HeadLink)
|
if(&AR_CutLink==mp_HeadLink)
|
||||||
@ -1485,6 +1492,8 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
ZCLink& CutLink(ZCLink& AR_CutLink)*/
|
ZCLink& CutLink(ZCLink& AR_CutLink)*/
|
||||||
|
|
||||||
|
ZCLink* CutLink(ZCLink* AP_CutLink){return &CutLink(*AP_CutLink);}
|
||||||
|
|
||||||
|
|
||||||
TypeThis& CutLinkRangeOut /*##########################################*/
|
TypeThis& CutLinkRangeOut /*##########################################*/
|
||||||
(
|
(
|
||||||
@ -2089,6 +2098,118 @@ namespace ZNsMain
|
|||||||
TypeThis& SwapLink(ZCLink& AR_LinkOne, ZCLink& AR_LinkTwo)*/
|
TypeThis& SwapLink(ZCLink& AR_LinkOne, ZCLink& AR_LinkTwo)*/
|
||||||
|
|
||||||
|
|
||||||
|
TypeThis& MoveLinkAfter (ZCLink& AR_MoveLink, ZCLinkOpt AO_StdOpt)
|
||||||
|
{
|
||||||
|
if(&AR_MoveLink==AO_StdOpt.Raw()){return *this;}
|
||||||
|
|
||||||
|
if(size()<=1){return *this;} AddLinkAfter
|
||||||
|
( AO_StdOpt.Raw(), CutLink(&AR_MoveLink) ) ;
|
||||||
|
|
||||||
|
return *this; /**************************/
|
||||||
|
}/*
|
||||||
|
TypeThis& MoveLinkAfter (ZCLink& AR_MoveLink, ZCLinkOpt AO_StdOpt)*/
|
||||||
|
TypeThis& MoveLinkBefore(ZCLink& AR_MoveLink, ZCLinkOpt AO_StdOpt)
|
||||||
|
{
|
||||||
|
if(&AR_MoveLink==AO_StdOpt.Raw()){return *this;}
|
||||||
|
|
||||||
|
if(size()<=1){return *this;} AddLinkBefore
|
||||||
|
( AO_StdOpt.Raw(), CutLink(&AR_MoveLink) ) ;
|
||||||
|
|
||||||
|
return *this; /**************************/
|
||||||
|
}/*
|
||||||
|
TypeThis& MoveLinkBefore(ZCLink& AR_MoveLink, ZCLinkOpt AO_StdOpt)*/
|
||||||
|
|
||||||
|
TypeThis& MoveLinkHead(ZCLink& AR_MoveLink) /*::::::::::::::::::::*/
|
||||||
|
{
|
||||||
|
if(&AR_MoveLink==mp_HeadLink){return *this;}
|
||||||
|
|
||||||
|
if(size()<=1){return *this;} AddLinkAfter
|
||||||
|
( 0, CutLink(&AR_MoveLink) ) ;
|
||||||
|
return *this; /**************************/
|
||||||
|
}/*
|
||||||
|
TypeThis& MoveLinkHead(ZCLink& AR_MoveLink) ::::::::::::::::::::::*/
|
||||||
|
TypeThis& MoveLinkTail(ZCLink& AR_MoveLink) /*::::::::::::::::::::*/
|
||||||
|
{
|
||||||
|
if(&AR_MoveLink==mp_TailLink){return *this;}
|
||||||
|
|
||||||
|
if(size()<=1){return *this;} AddLinkBefore
|
||||||
|
( 0, CutLink(&AR_MoveLink) ) ;
|
||||||
|
return *this; /**************************/
|
||||||
|
}/*
|
||||||
|
TypeThis& MoveLinkTail(ZCLink& AR_MoveLink) ::::::::::::::::::::::*/
|
||||||
|
|
||||||
|
|
||||||
|
ZtCBaseList& SendRangeIn ////////////////////////////////////////////////
|
||||||
|
(
|
||||||
|
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
|
TypeThis& CopyThis(TypeThis& ARR_Rhs) const
|
||||||
{
|
{
|
||||||
|
@ -244,6 +244,12 @@ namespace ZNsMain
|
|||||||
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
|
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
|
||||||
cout<<"***********************************************"<<endl;
|
cout<<"***********************************************"<<endl;
|
||||||
|
|
||||||
|
VO_ZCLinkStrLis1.MoveLinkTail
|
||||||
|
(VO_ZCLinkStrLis1.HeadRef());
|
||||||
|
cout<<"# after VO_ZCLinkStrLis1.MoveLinkTail(1th)"<<endl;
|
||||||
|
VO_ZCLinkStrLis1.IterElement(&ShowNode0, ZftMCP(VI_CallCnt=0));
|
||||||
|
cout<<"***********************************************"<<endl;
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}/*
|
}/*
|
||||||
|
Reference in New Issue
Block a user