commit 2025-10-07 10:01 add SendRangeOut() : ZCppMain/ZtCLinkList.H & ZtCObjList.H & ZMainHead.H etc
This commit is contained in:
@ -884,9 +884,11 @@ namespace ZNsMain
|
||||
class ZtCLinkList /*#####################################################*/
|
||||
{
|
||||
public :
|
||||
typedef ZtCLinkList TypeThis;
|
||||
public :
|
||||
typedef ZNsType::ZtCTypeNowCRTP ///////////////////////////////////////
|
||||
<
|
||||
ZtCLinkList, typename TTypeCRTP::TypeData, TTypeCRTP::ZEUseCRTP
|
||||
TypeThis, typename TTypeCRTP::TypeData, TTypeCRTP::ZEUseCRTP
|
||||
>
|
||||
ZCTypeNowCRTP ; ///////////////////////////////////////////////////////
|
||||
|
||||
@ -1226,7 +1228,7 @@ namespace ZNsMain
|
||||
ZCLink& JoinBefore(ZCLink& AR_LinkNew, ZCLink* AP_StdLink)*/
|
||||
|
||||
|
||||
ZtCLinkList& JoinAfter(ZtCLinkList& rhs, ZCLink* AP_StdLink)
|
||||
TypeThis& JoinAfter(TypeThis& rhs, ZCLink* AP_StdLink)
|
||||
{
|
||||
// AP_StdLink 의 뒤에 rhs 를 삽입.
|
||||
|
||||
@ -1274,10 +1276,10 @@ namespace ZNsMain
|
||||
|
||||
ml_LinkSize += rhs.ml_LinkSize; return *this;
|
||||
}/*
|
||||
ZtCLinkList& JoinAfter(ZtCLinkList& rhs, ZCLink* AP_StdLink)*/
|
||||
TypeThis& JoinAfter(TypeThis& rhs, ZCLink* AP_StdLink)*/
|
||||
|
||||
|
||||
ZtCLinkList& JoinBefore(ZtCLinkList& rhs, ZCLink* AP_StdLink)
|
||||
TypeThis& JoinBefore(TypeThis& rhs, ZCLink* AP_StdLink)
|
||||
{
|
||||
// AP_StdLink 의 앞에 rhs 를 삽입.
|
||||
|
||||
@ -1325,7 +1327,7 @@ namespace ZNsMain
|
||||
|
||||
ml_LinkSize += rhs.ml_LinkSize; return *this;
|
||||
}/*
|
||||
ZtCLinkList& JoinBefore(ZtCLinkList& rhs, ZCLink* AP_StdLink)*/
|
||||
TypeThis& JoinBefore(TypeThis& rhs, ZCLink* AP_StdLink)*/
|
||||
|
||||
|
||||
ZCLink& CutLink(ZCLink& AR_CutLink)
|
||||
@ -1361,13 +1363,11 @@ namespace ZNsMain
|
||||
ZCLink& CutLink(ZCLink& AR_CutLink)*/
|
||||
|
||||
|
||||
ZtCLinkList& CutLinkRangeOut /*#######################################*/
|
||||
TypeThis& CutLinkRangeOut /*##########################################*/
|
||||
(
|
||||
ZCLink& AR_CutHead ,
|
||||
ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize ,
|
||||
ZtCLinkList& rhs ,
|
||||
ZCLink* AP_RhsStd
|
||||
ZCLink& AR_CutHead , ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize , TypeThis& rhs ,
|
||||
ZCLink* AP_RhsStd , bool AB_After=true
|
||||
)
|
||||
/*#####################################################################*/
|
||||
{
|
||||
@ -1377,8 +1377,14 @@ namespace ZNsMain
|
||||
AR_CutTail 은 삭제하려는 링크의 범위의 뒤의 링크.
|
||||
|
||||
AR_CutHead 의 앞과 AR_CutTail 의 뒤에서 연결 상태를 끊고,
|
||||
rhs 의 AP_RhsStd 의 뒤에 삽입한다. AP_RhsStd==0 이면
|
||||
맨 앞에 삽입한다. -- 2025-10-06 09:16
|
||||
rhs 의 AP_RhsStd 의 뒤에 삽입한다.
|
||||
|
||||
AP_RhsStd==0 이면 맨 앞에 삽입한다. -- 2025-10-06 09:16
|
||||
|
||||
■ bool AB_After=true 추가 -- 2025-10-07 09:37
|
||||
|
||||
AB_After==true 이면, AP_RhsStd 의 뒤에 연결.
|
||||
AB_After==false 이면, AP_RhsStd 의 앞에 연결.
|
||||
|
||||
///////////////////////////////////////////////////////////*/
|
||||
|
||||
@ -1389,18 +1395,29 @@ namespace ZNsMain
|
||||
{
|
||||
mp_HeadLink=0;
|
||||
}
|
||||
else if(&AR_CutHead==mp_HeadLink) // 잘라내려는 링크가 처음 링크를 포함할 때.
|
||||
else if(&AR_CutHead==mp_HeadLink)
|
||||
{
|
||||
ZCLink::MakeRing
|
||||
(mp_HeadLink=AR_CutTail.mp_NextLink, mp_TailLink);
|
||||
ZCLink::MakeRing ////////////
|
||||
(
|
||||
mp_HeadLink=AR_CutTail.mp_NextLink, mp_TailLink
|
||||
);
|
||||
/////////////////////////////
|
||||
}
|
||||
else if(&AR_CutTail==mp_TailLink) // 잘라내려는 링크가 끝 링크를 포함할 때.
|
||||
else if(&AR_CutTail==mp_TailLink)
|
||||
{
|
||||
ZCLink::MakeRing(mp_HeadLink, mp_TailLink=AR_CutHead.mp_PrevLink);
|
||||
ZCLink::MakeRing ////////////
|
||||
(
|
||||
mp_HeadLink, mp_TailLink=AR_CutHead.mp_PrevLink
|
||||
);
|
||||
/////////////////////////////
|
||||
}
|
||||
else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때.
|
||||
else
|
||||
{
|
||||
ZCLink::JoinLink(AR_CutHead.mp_PrevLink, AR_CutTail.mp_NextLink);
|
||||
ZCLink::JoinLink ////////////
|
||||
(
|
||||
AR_CutHead.mp_PrevLink, AR_CutTail.mp_NextLink
|
||||
);
|
||||
/////////////////////////////
|
||||
}/*
|
||||
else*/
|
||||
|
||||
@ -1409,41 +1426,60 @@ namespace ZNsMain
|
||||
|
||||
if(rhs.size()<1)
|
||||
{
|
||||
// AP_CutHead 과 AP_CutTail 을 연결하여 이중 원형 연결리스트가 되도록 한다.
|
||||
|
||||
ZCLink::MakeRing(&AR_CutHead, &AR_CutTail);
|
||||
|
||||
rhs.mp_HeadLink = &AR_CutHead ;
|
||||
rhs.mp_TailLink = &AR_CutTail ;
|
||||
}
|
||||
else if(AP_RhsStd==0) // 맨 앞에 삽입.
|
||||
else if(AB_After) // AP_RhsStd 뒤에 삽입.
|
||||
{
|
||||
ZCLink::JoinLink(&AR_CutTail, rhs.mp_HeadLink);
|
||||
ZCLink::MakeRing(&AR_CutHead, rhs.mp_TailLink);
|
||||
if(AP_RhsStd==0) // 맨 앞에 삽입.
|
||||
{
|
||||
ZCLink::JoinLink(&AR_CutTail, rhs.mp_HeadLink);
|
||||
ZCLink::MakeRing(&AR_CutHead, rhs.mp_TailLink);
|
||||
|
||||
rhs.mp_HeadLink = &AR_CutHead;
|
||||
rhs.mp_HeadLink = &AR_CutHead;
|
||||
}
|
||||
else
|
||||
{
|
||||
ZCLink* VP_RhsStdNext = AP_RhsStd->mp_NextLink ;
|
||||
|
||||
ZCLink::JoinLink(AP_RhsStd , &AR_CutHead );
|
||||
ZCLink::JoinLink(&AR_CutTail, VP_RhsStdNext);
|
||||
|
||||
if(AP_RhsStd==rhs.mp_TailLink)
|
||||
{ rhs.mp_TailLink = &AR_CutTail; }
|
||||
}
|
||||
}
|
||||
else // AP_RhsStd 의 뒤에 삽입.
|
||||
else // !AB_After : AP_RhsStd 앞에 삽입.
|
||||
{
|
||||
ZCLink* VP_RhsStdNext = AP_RhsStd->mp_NextLink ;
|
||||
if(AP_RhsStd==0) // 맨 뒤에 삽입.
|
||||
{
|
||||
ZCLink::JoinLink(rhs.mp_TailLink, &AR_CutHead);
|
||||
ZCLink::MakeRing(rhs.mp_HeadLink, &AR_CutTail);
|
||||
|
||||
ZCLink::JoinLink(AP_RhsStd , &AR_CutHead );
|
||||
ZCLink::JoinLink(&AR_CutTail, VP_RhsStdNext);
|
||||
rhs.mp_TailLink = &AR_CutTail;
|
||||
}
|
||||
else
|
||||
{
|
||||
ZCLink* VP_RhsStdPrev = AP_RhsStd->mp_PrevLink ;
|
||||
|
||||
if(AP_RhsStd==rhs.mp_TailLink)
|
||||
{ rhs.mp_TailLink = &AR_CutTail; }
|
||||
ZCLink::JoinLink(VP_RhsStdPrev, &AR_CutHead);
|
||||
ZCLink::JoinLink(&AR_CutTail , AP_RhsStd );
|
||||
|
||||
if(AP_RhsStd==rhs.mp_HeadLink)
|
||||
{ rhs.mp_HeadLink = &AR_CutHead; }
|
||||
}
|
||||
}/*
|
||||
else*/
|
||||
else // !AB_After : AP_RhsStd 앞에 삽입.*/
|
||||
|
||||
rhs.ml_LinkSize += AL_CutSize; return rhs;
|
||||
}/*
|
||||
ZtCLinkList& CutLinkRangeOut ###########################################
|
||||
TypeThis& CutLinkRangeOut ###########################################
|
||||
(
|
||||
ZCLink& AR_CutHead ,
|
||||
ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize ,
|
||||
ZtCLinkList& rhs ,
|
||||
ZCLink* AP_RhsStd
|
||||
ZCLink& AR_CutHead , ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize , TypeThis& rhs ,
|
||||
ZCLink* AP_RhsStd , bool AB_After=true
|
||||
)
|
||||
#######################################################################*/
|
||||
|
||||
@ -1476,7 +1512,7 @@ namespace ZNsMain
|
||||
~ZtCLinkList()*/
|
||||
|
||||
|
||||
ZtCLinkList& operator=(const ZtCLinkList& rhs)
|
||||
TypeThis& operator=(const TypeThis& rhs)
|
||||
{
|
||||
if(this==&rhs) return *this;
|
||||
|
||||
@ -1550,7 +1586,7 @@ namespace ZNsMain
|
||||
|
||||
return *this;
|
||||
}/*
|
||||
ZtCLinkList& operator=(const ZtCLinkList& rhs)*/
|
||||
TypeThis& operator=(const TypeThis& rhs)*/
|
||||
|
||||
|
||||
TypeSize GetSize() const{return ml_LinkSize ;}
|
||||
@ -1615,54 +1651,75 @@ namespace ZNsMain
|
||||
void Delete(ZCLink& AR_DelLink)*/
|
||||
|
||||
|
||||
ZtCLinkList& JoinAfter (ZtCLinkList& rhs, ZCLink& AR_StdLink)
|
||||
TypeThis& JoinAfter (TypeThis& rhs, ZCLink& AR_StdLink)
|
||||
{ return JoinAfter (rhs, &AR_StdLink); }
|
||||
ZtCLinkList& JoinBefore(ZtCLinkList& rhs, ZCLink& AR_StdLink)
|
||||
TypeThis& JoinBefore(TypeThis& rhs, ZCLink& AR_StdLink)
|
||||
{ return JoinBefore(rhs, &AR_StdLink); }
|
||||
|
||||
ZtCLinkList& JoinHead(ZtCLinkList& rhs){ return JoinAfter (rhs, 0); }
|
||||
ZtCLinkList& JoinTail(ZtCLinkList& rhs){ return JoinBefore(rhs, 0); }
|
||||
TypeThis& JoinHead(TypeThis& rhs){ return JoinAfter (rhs, 0); }
|
||||
TypeThis& JoinTail(TypeThis& rhs){ return JoinBefore(rhs, 0); }
|
||||
|
||||
|
||||
void SendOutAfter (ZCLink& AR_CutLink, ZtCLinkList& rhs, ZCLink& AR_StdLink)
|
||||
void SendOutAfter (ZCLink& AR_CutLink, TypeThis& rhs, ZCLink& AR_StdLink)
|
||||
{
|
||||
// AR_CutLink 를 잘라서 rhs 의 AR_StdLink 뒤에 연결한다.
|
||||
|
||||
CutLink(AR_CutLink); rhs.JoinAfter (AR_CutLink, &AR_StdLink);
|
||||
}/*
|
||||
void SendOutAfter (ZCLink& AR_CutLink, ZtCLinkList& rhs, ZCLink& AR_StdLink)*/
|
||||
void SendOutAfter (ZCLink& AR_CutLink, TypeThis& rhs, ZCLink& AR_StdLink)*/
|
||||
|
||||
void SendOutBefore(ZCLink& AR_CutLink, ZtCLinkList& rhs, ZCLink& AR_StdLink)
|
||||
void SendOutBefore(ZCLink& AR_CutLink, TypeThis& rhs, ZCLink& AR_StdLink)
|
||||
{
|
||||
// AR_CutLink 를 잘라서 rhs 의 AP_StdLink 앞에 연결한다.
|
||||
|
||||
CutLink(AR_CutLink); rhs.JoinBefore(AR_CutLink, &AR_StdLink);
|
||||
}/*
|
||||
void SendOutBefore(ZCLink& AR_CutLink, ZtCLinkList& rhs, ZCLink& AR_StdLink)*/
|
||||
void SendOutBefore(ZCLink& AR_CutLink, TypeThis& rhs, ZCLink& AR_StdLink)*/
|
||||
|
||||
|
||||
void SendOutHead(ZCLink& AR_CutLink, ZtCLinkList& rhs)
|
||||
void SendOutHead(ZCLink& AR_CutLink, TypeThis& rhs)
|
||||
{
|
||||
// AR_CutLink 를 잘라서 rhs 의 앞에 연결한다.
|
||||
|
||||
CutLink(AR_CutLink); rhs.JoinAfter (AR_CutLink, 0);
|
||||
}
|
||||
void SendOutTail(ZCLink& AR_CutLink, ZtCLinkList& rhs)
|
||||
void SendOutTail(ZCLink& AR_CutLink, TypeThis& rhs)
|
||||
{
|
||||
// AR_CutLink 를 잘라서 rhs 의 뒤에 연결한다.
|
||||
|
||||
CutLink(AR_CutLink); rhs.JoinBefore(AR_CutLink, 0);
|
||||
}/*
|
||||
void SendOutTail(ZCLink& AR_CutLink, ZtCLinkList& rhs)*/
|
||||
void SendOutTail(ZCLink& AR_CutLink, TypeThis& rhs)*/
|
||||
|
||||
|
||||
ZtCLinkList& SendRangeOutAfter //////////////////////////////////////////
|
||||
TypeThis& SendRangeOut //////////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead,
|
||||
ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize,
|
||||
ZtCLinkList& rhs ,
|
||||
ZCLinkOpt AO_LinkOpt
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs ,
|
||||
ZCLinkOpt AO_LinkOpt, bool AB_After
|
||||
)
|
||||
/*#####################################################################*/
|
||||
{
|
||||
return CutLinkRangeOut
|
||||
(
|
||||
AR_CutHead, AR_CutTail , AI_CutSize,
|
||||
rhs , AO_LinkOpt.Raw(), AB_After
|
||||
);
|
||||
//////////////////////
|
||||
}/*
|
||||
TypeThis& SendRangeOutAfter /////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs ,
|
||||
ZCLinkOpt AO_LinkOpt, bool AB_After
|
||||
)
|
||||
/*#####################################################################*/
|
||||
|
||||
|
||||
TypeThis& SendRangeOutAfter /////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs , ZCLinkOpt AO_LinkOpt
|
||||
)
|
||||
/*#####################################################################*/
|
||||
{
|
||||
@ -1670,17 +1727,39 @@ namespace ZNsMain
|
||||
|
||||
return CutLinkRangeOut
|
||||
(
|
||||
AR_CutHead, AR_CutTail, AI_CutSize, rhs, AO_LinkOpt.Raw()
|
||||
AR_CutHead, AR_CutTail , AI_CutSize,
|
||||
rhs , AO_LinkOpt.Raw(), true
|
||||
);
|
||||
//////////////////////
|
||||
}/*
|
||||
ZtCLinkList& SendRangeOutAfter //////////////////////////////////////////
|
||||
TypeThis& SendRangeOutAfter /////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead,
|
||||
ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize,
|
||||
ZtCLinkList& rhs ,
|
||||
ZCLinkOpt AO_LinkOpt
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs , ZCLinkOpt AO_LinkOpt
|
||||
)
|
||||
/*#####################################################################*/
|
||||
|
||||
|
||||
TypeThis& SendRangeOutBefore ////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs , ZCLinkOpt AO_LinkOpt
|
||||
)
|
||||
/*#####################################################################*/
|
||||
{
|
||||
// AR_CutHead 부터 AR_CutTail 까지를 잘라서 rhs 의 AR_StdLink 앞에 연결한다.
|
||||
|
||||
return CutLinkRangeOut
|
||||
(
|
||||
AR_CutHead, AR_CutTail , AI_CutSize,
|
||||
rhs , AO_LinkOpt.Raw(), false
|
||||
);
|
||||
//////////////////////
|
||||
}/*
|
||||
TypeThis& SendRangeOutBefore ////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs , ZCLinkOpt AO_LinkOpt
|
||||
)
|
||||
/*#####################################################################*/
|
||||
|
||||
@ -1845,11 +1924,11 @@ namespace ZNsMain
|
||||
class ZtCLinkMoveList /*#################################################*/
|
||||
{
|
||||
public :
|
||||
typedef ZtCLinkMoveList ZCMoveList;
|
||||
typedef ZtCLinkMoveList TypeThis;
|
||||
public :
|
||||
typedef ZNsType::ZtCTypeNowCRTP ///////////////////////////////////////
|
||||
<
|
||||
ZCMoveList, typename TTypeCRTP::TypeData, TTypeCRTP::ZEUseCRTP
|
||||
TypeThis, typename TTypeCRTP::TypeData, TTypeCRTP::ZEUseCRTP
|
||||
>
|
||||
ZCTypeNowCRTP ; ///////////////////////////////////////////////////////
|
||||
|
||||
@ -2134,7 +2213,7 @@ namespace ZNsMain
|
||||
ZCLink& JoinBefore(ZCLink& AR_LinkNew, ZCLink* AP_StdLink)*/
|
||||
|
||||
|
||||
ZCMoveList& JoinAfter (ZCMoveList& rhs, ZCLink* AP_StdLink)
|
||||
TypeThis& JoinAfter (TypeThis& rhs, ZCLink* AP_StdLink)
|
||||
{
|
||||
// AP_StdLink 의 뒤에 rhs 를 삽입.
|
||||
// AP_StdLink==0 이면 맨 앞에 삽입.
|
||||
@ -2159,10 +2238,10 @@ namespace ZNsMain
|
||||
|
||||
return *this;
|
||||
}/*
|
||||
ZCMoveList& JoinAfter (ZCMoveList& rhs, ZCLink* AP_StdLink)*/
|
||||
TypeThis& JoinAfter (TypeThis& rhs, ZCLink* AP_StdLink)*/
|
||||
|
||||
|
||||
ZCMoveList& JoinBefore(ZCMoveList& rhs, ZCLink* AP_StdLink)
|
||||
TypeThis& JoinBefore(TypeThis& rhs, ZCLink* AP_StdLink)
|
||||
{
|
||||
// AP_StdLink 의 앞에 rhs 를 삽입.
|
||||
// AP_StdLink==0 이면 맨 뒤에 삽입.
|
||||
@ -2187,7 +2266,7 @@ namespace ZNsMain
|
||||
|
||||
return *this;
|
||||
}/*
|
||||
ZCMoveList& JoinBefore(ZCMoveList& rhs, ZCLink* AP_StdLink)*/
|
||||
TypeThis& JoinBefore(TypeThis& rhs, ZCLink* AP_StdLink)*/
|
||||
|
||||
|
||||
ZCLink& CutLink(ZCLink& AR_CutLink)
|
||||
@ -2200,13 +2279,14 @@ namespace ZNsMain
|
||||
ZCLink& CutLink(ZCLink& AR_CutLink)*/
|
||||
|
||||
|
||||
ZCMoveList& CutLinkRangeOut /*########################################*/
|
||||
TypeThis& CutLinkRangeOut /*##########################################*/
|
||||
(
|
||||
ZCLink& AR_CutHead ,
|
||||
ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize ,
|
||||
ZCMoveList& rhs ,
|
||||
ZCLink* AP_RhsStd
|
||||
ZCLink& AR_CutHead ,
|
||||
ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize ,
|
||||
TypeThis& rhs ,
|
||||
ZCLink* AP_RhsStd ,
|
||||
bool AB_After=true
|
||||
)
|
||||
/*#####################################################################*/
|
||||
{
|
||||
@ -2220,6 +2300,11 @@ namespace ZNsMain
|
||||
|
||||
AP_RhsStd==0 이면 맨 앞에 삽입한다. -- 2025-10-06 09:16
|
||||
|
||||
■ bool AB_After=true 추가. -- 2025-10-07 09:26
|
||||
|
||||
AB_After==true 이면 AP_RhsStd 의 뒤에 삽입.
|
||||
AB_After==false 이면 AP_RhsStd 의 앞에 삽입.
|
||||
|
||||
///////////////////////////////////////////////////////////*/
|
||||
|
||||
if(this==&rhs ) return rhs;
|
||||
@ -2233,25 +2318,41 @@ namespace ZNsMain
|
||||
ml_LinkSize -= AL_CutSize;
|
||||
|
||||
|
||||
// rhs 의 AP_RhsStd 의 뒤에 삽입.
|
||||
// AP_RhsStd==0 이면 rhs 의 맨 앞에 삽입.
|
||||
if(AB_After)
|
||||
{
|
||||
// rhs 의 AP_RhsStd 의 뒤에 삽입.
|
||||
// AP_RhsStd==0 이면 rhs 의 맨 앞에 삽입.
|
||||
|
||||
if(AP_RhsStd==0) AP_RhsStd=&rhs.mo_HeadFake ;
|
||||
if(AP_RhsStd==0) AP_RhsStd=&rhs.mo_HeadFake ;
|
||||
|
||||
ZCLink* VP_RhsStdNext = AP_RhsStd->mp_NextLink ;
|
||||
ZCLink* VP_RhsStdNext=AP_RhsStd->mp_NextLink;
|
||||
|
||||
ZCLink::JoinLink(AP_RhsStd , &AR_CutHead );
|
||||
ZCLink::JoinLink(&AR_CutTail, VP_RhsStdNext);
|
||||
ZCLink::JoinLink(AP_RhsStd , &AR_CutHead );
|
||||
ZCLink::JoinLink(&AR_CutTail, VP_RhsStdNext);
|
||||
}
|
||||
else
|
||||
{
|
||||
// rhs 의 AP_RhsStd 의 앞에 삽입.
|
||||
// AP_RhsStd==0 이면 rhs 의 맨 뒤에 삽입.
|
||||
|
||||
if(AP_RhsStd==0) AP_RhsStd=&rhs.mo_TailFake ;
|
||||
|
||||
ZCLink* VP_RhsStdPrev=AP_RhsStd->mp_PrevLink;
|
||||
|
||||
ZCLink::JoinLink(VP_RhsStdPrev, &AR_CutHead);
|
||||
ZCLink::JoinLink(&AR_CutTail , AP_RhsStd );
|
||||
}
|
||||
|
||||
rhs.ml_LinkSize += AL_CutSize; return rhs;
|
||||
}/*
|
||||
ZCMoveList& CutLinkRangeOut ############################################
|
||||
TypeThis& CutLinkRangeOut ##############################################
|
||||
(
|
||||
ZCLink& AR_CutHead ,
|
||||
ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize ,
|
||||
ZCMoveList& rhs ,
|
||||
ZCLink* AP_RhsStd
|
||||
ZCLink& AR_CutHead ,
|
||||
ZCLink& AR_CutTail ,
|
||||
TypeSize AL_CutSize ,
|
||||
TypeThis& rhs ,
|
||||
ZCLink* AP_RhsStd ,
|
||||
bool AB_After=true
|
||||
)
|
||||
#######################################################################*/
|
||||
|
||||
@ -2284,7 +2385,7 @@ namespace ZNsMain
|
||||
~ZtCLinkMoveList()*/
|
||||
|
||||
|
||||
ZCMoveList& operator=(const ZCMoveList& rhs)
|
||||
TypeThis& operator=(const TypeThis& rhs)
|
||||
{
|
||||
if(this==&rhs) return *this;
|
||||
|
||||
@ -2347,7 +2448,7 @@ namespace ZNsMain
|
||||
|
||||
return *this;
|
||||
}/*
|
||||
ZCMoveList& operator=(const ZCMoveList& rhs)*/
|
||||
TypeThis& operator=(const TypeThis& rhs)*/
|
||||
|
||||
|
||||
TypeSize GetSize() const{return ml_LinkSize ;}
|
||||
@ -2434,54 +2535,75 @@ namespace ZNsMain
|
||||
void Delete(ZCLink& AR_DelLink)*/
|
||||
|
||||
|
||||
ZCMoveList& JoinAfter (ZCMoveList& rhs, ZCLink& AR_StdLink)
|
||||
TypeThis& JoinAfter (TypeThis& rhs, ZCLink& AR_StdLink)
|
||||
{ return JoinAfter (rhs, &AR_StdLink); }
|
||||
ZCMoveList& JoinBefore(ZCMoveList& rhs, ZCLink& AR_StdLink)
|
||||
TypeThis& JoinBefore(TypeThis& rhs, ZCLink& AR_StdLink)
|
||||
{ return JoinBefore(rhs, &AR_StdLink); }
|
||||
|
||||
ZCMoveList& JoinHead(ZCMoveList& rhs){ return JoinAfter (rhs, 0); }
|
||||
ZCMoveList& JoinTail(ZCMoveList& rhs){ return JoinBefore(rhs, 0); }
|
||||
TypeThis& JoinHead(TypeThis& rhs){ return JoinAfter (rhs, 0); }
|
||||
TypeThis& JoinTail(TypeThis& rhs){ return JoinBefore(rhs, 0); }
|
||||
|
||||
|
||||
void SendOutAfter (ZCLink& AR_CutLink, ZCMoveList& rhs, ZCLink& AR_StdLink)
|
||||
void SendOutAfter (ZCLink& AR_CutLink, TypeThis& rhs, ZCLink& AR_StdLink)
|
||||
{
|
||||
// AR_CutLink 를 잘라서 rhs 의 AR_StdLink 뒤에 연결한다.
|
||||
|
||||
CutLink(AR_CutLink); rhs.JoinAfter (AR_CutLink, &AR_StdLink);
|
||||
}/*
|
||||
void SendOutAfter (ZCLink& AR_CutLink, ZCMoveList& rhs, ZCLink& AR_StdLink)*/
|
||||
void SendOutAfter (ZCLink& AR_CutLink, TypeThis& rhs, ZCLink& AR_StdLink)*/
|
||||
|
||||
void SendOutBefore(ZCLink& AR_CutLink, ZCMoveList& rhs, ZCLink& AR_StdLink)
|
||||
void SendOutBefore(ZCLink& AR_CutLink, TypeThis& rhs, ZCLink& AR_StdLink)
|
||||
{
|
||||
// AR_CutLink 를 잘라서 rhs 의 AP_StdLink 앞에 연결한다.
|
||||
|
||||
CutLink(AR_CutLink); rhs.JoinBefore(AR_CutLink, &AR_StdLink);
|
||||
}/*
|
||||
void SendOutBefore(ZCLink& AR_CutLink, ZCMoveList& rhs, ZCLink& AR_StdLink)*/
|
||||
void SendOutBefore(ZCLink& AR_CutLink, TypeThis& rhs, ZCLink& AR_StdLink)*/
|
||||
|
||||
|
||||
void SendOutHead(ZCLink& AR_CutLink, ZCMoveList& rhs)
|
||||
void SendOutHead(ZCLink& AR_CutLink, TypeThis& rhs)
|
||||
{
|
||||
// AR_CutLink 를 잘라서 rhs 의 앞에 연결한다.
|
||||
|
||||
CutLink(AR_CutLink); rhs.JoinAfter (AR_CutLink, 0);
|
||||
}
|
||||
void SendOutTail(ZCLink& AR_CutLink, ZCMoveList& rhs)
|
||||
void SendOutTail(ZCLink& AR_CutLink, TypeThis& rhs)
|
||||
{
|
||||
// AR_CutLink 를 잘라서 rhs 의 뒤에 연결한다.
|
||||
|
||||
CutLink(AR_CutLink); rhs.JoinBefore(AR_CutLink, 0);
|
||||
}/*
|
||||
void SendOutTail(ZCLink& AR_CutLink, ZCMoveList& rhs)*/
|
||||
void SendOutTail(ZCLink& AR_CutLink, TypeThis& rhs)*/
|
||||
|
||||
|
||||
ZCMoveList& SendRangeOutAfter ///////////////////////////////////////////
|
||||
TypeThis& SendRangeOut //////////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead,
|
||||
ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize,
|
||||
ZCMoveList& rhs ,
|
||||
ZCLinkOpt AO_LinkOpt
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs ,
|
||||
ZCLinkOpt AO_LinkOpt, bool AB_After
|
||||
)
|
||||
/*#####################################################################*/
|
||||
{
|
||||
return CutLinkRangeOut
|
||||
(
|
||||
AR_CutHead, AR_CutTail , AI_CutSize,
|
||||
rhs , AO_LinkOpt.Raw(), AB_After
|
||||
);
|
||||
//////////////////////
|
||||
}/*
|
||||
TypeThis& SendRangeOut //////////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs ,
|
||||
ZCLinkOpt AO_LinkOpt, bool AB_After
|
||||
)
|
||||
/*#####################################################################*/
|
||||
|
||||
|
||||
TypeThis& SendRangeOutAfter /////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs , ZCLinkOpt AO_LinkOpt
|
||||
)
|
||||
/*#####################################################################*/
|
||||
{
|
||||
@ -2489,17 +2611,31 @@ namespace ZNsMain
|
||||
|
||||
return CutLinkRangeOut
|
||||
(
|
||||
AR_CutHead, AR_CutTail, AI_CutSize, rhs, AO_LinkOpt.Raw()
|
||||
AR_CutHead, AR_CutTail , AI_CutSize,
|
||||
rhs , AO_LinkOpt.Raw(), true
|
||||
);
|
||||
//////////////////////
|
||||
}
|
||||
TypeThis& SendRangeOutBefore ////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs , ZCLinkOpt AO_LinkOpt
|
||||
)
|
||||
/*#####################################################################*/
|
||||
{
|
||||
// AR_CutHead 부터 AR_CutTail 까지를 잘라서 rhs 의 AR_StdLink 앞에 연결한다.
|
||||
|
||||
return CutLinkRangeOut
|
||||
(
|
||||
AR_CutHead, AR_CutTail , AI_CutSize,
|
||||
rhs , AO_LinkOpt.Raw(), false
|
||||
);
|
||||
//////////////////////
|
||||
}/*
|
||||
ZCMoveList& SendRangeOutAfter ///////////////////////////////////////////
|
||||
TypeThis& SendRangeOutBefore ////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_CutHead,
|
||||
ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize,
|
||||
ZCMoveList& rhs ,
|
||||
ZCLinkOpt AO_LinkOpt
|
||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||
TypeSize AI_CutSize, TypeThis& rhs , ZCLinkOpt AO_LinkOpt
|
||||
)
|
||||
/*#####################################################################*/
|
||||
|
||||
|
Reference in New Issue
Block a user