commit 2025-10-03 04:31 add RecvFreeIn() etc in ZtCBaseList : ZCppMain/ZMainHead.H
This commit is contained in:
@ -5390,65 +5390,100 @@ namespace ZNsMain
|
||||
}/*
|
||||
TypeChild& GetChildObj()*/
|
||||
|
||||
private :
|
||||
protected:
|
||||
|
||||
_VT_ ZCLink* NewLink()
|
||||
ZCLink* NewLink()
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1) return new ZCLink;
|
||||
|
||||
return GetChildObj().NewLink();
|
||||
return new ZCLink;
|
||||
}/*
|
||||
_VT_ ZCLink* NewLink()*/
|
||||
ZCLink* NewLink()*/
|
||||
|
||||
_VT_ ZCLink* NewLink(TypeArg AO_ArgData)
|
||||
ZCLink* NewLink(TypeArg AO_ArgData)
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1)
|
||||
{ return new ZCLink(AO_ArgData); }
|
||||
|
||||
return GetChildObj().NewLink(AO_ArgData);
|
||||
return new ZCLink(AO_ArgData);
|
||||
}/*
|
||||
_VT_ ZCLink* NewLink(TypeArg AO_ArgData)*/
|
||||
ZCLink* NewLink(TypeArg AO_ArgData)*/
|
||||
|
||||
_VT_ void NewLink
|
||||
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
|
||||
void NewLink ////////////////////////////////////////
|
||||
(
|
||||
TypeSize AL_NeedCnt ,
|
||||
ZCLink*& APR_HeadLink ,
|
||||
ZCLink*& APR_TailLink
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1)
|
||||
APR_HeadLink = new ZCLink;
|
||||
|
||||
ZCLink* VP_MakeLink = 0 ;
|
||||
ZCLink* VP_TailLink = APR_HeadLink;
|
||||
|
||||
while(--AL_NeedCnt>0) // AL_NeedCnt - 1 번 순환
|
||||
{
|
||||
APR_HeadLink = new ZCLink;
|
||||
// AL_NeedCnt - 1 번 순환
|
||||
|
||||
ZCLink* VP_MakeLink = 0 ;
|
||||
ZCLink* VP_TailLink = APR_HeadLink;
|
||||
VP_MakeLink = new ZCLink;
|
||||
|
||||
while(--AL_NeedCnt>0) // AL_NeedCnt - 1 번 순환
|
||||
{
|
||||
// AL_NeedCnt - 1 번 순환
|
||||
|
||||
VP_MakeLink = new ZCLink;
|
||||
|
||||
ZCLink::JoinLink
|
||||
(VP_TailLink, VP_MakeLink);
|
||||
VP_TailLink = VP_MakeLink ;
|
||||
}/*
|
||||
while(--AL_NeedCnt>0)*/
|
||||
|
||||
APR_TailLink = VP_TailLink; return;
|
||||
ZCLink::JoinLink
|
||||
(VP_TailLink, VP_MakeLink);
|
||||
VP_TailLink = VP_MakeLink ;
|
||||
}/*
|
||||
if(TTypeCRTP::ZEUseCRTP<1)*/
|
||||
while(--AL_NeedCnt>0)*/
|
||||
|
||||
return GetChildObj().NewLink
|
||||
(AL_NeedCnt, RR(APR_HeadLink), RR(APR_TailLink));
|
||||
APR_TailLink = VP_TailLink;
|
||||
}/*
|
||||
_VT_ void NewLink
|
||||
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
|
||||
*/
|
||||
_VT_ void DelLink(ZCLink* AP_DelLink)
|
||||
void NewLink ////////////////////////////////////////
|
||||
(
|
||||
TypeSize AL_NeedCnt ,
|
||||
ZCLink*& APR_HeadLink ,
|
||||
ZCLink*& APR_TailLink
|
||||
)
|
||||
///////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
void NewLinkCopy //////////////////////////////////
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1)
|
||||
{ delete AP_DelLink; return; }
|
||||
// 총 AL_FarNum+1 개의 링크가 만들어짊
|
||||
|
||||
GetChildObj().DelLink(AP_DelLink);
|
||||
ZCLink* VP_MakeLink = 0 ;
|
||||
ZCLink* VP_TailLink = 0 ;
|
||||
|
||||
VP_TailLink = VP_MakeLink =
|
||||
new ZCLink(**AP_LinkOrgin) ;
|
||||
|
||||
APR_HeadCopy = VP_MakeLink;
|
||||
|
||||
while(--AL_FarNum >= 0)
|
||||
{
|
||||
AP_LinkOrgin= AP_LinkOrgin->GetNextPtr();
|
||||
VP_MakeLink = new ZCLink(**AP_LinkOrgin);
|
||||
|
||||
ZCLink::JoinLink
|
||||
(VP_TailLink, VP_MakeLink);
|
||||
|
||||
VP_TailLink = VP_MakeLink;
|
||||
}/*
|
||||
while(--AL_FarNum >= 0)*/
|
||||
|
||||
APR_TailCopy=VP_TailLink;
|
||||
}/*
|
||||
_VT_ void DelLink(ZCLink* AP_DelLink)*/
|
||||
void NewLinkCopy //////////////////////////////////
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
///////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
void DelLink(ZCLink* AP_DelLink)
|
||||
{
|
||||
delete AP_DelLink;
|
||||
}/*
|
||||
void DelLink(ZCLink* AP_DelLink)*/
|
||||
|
||||
void DelLink //////////////////////////////////////////
|
||||
(
|
||||
@ -5458,25 +5493,114 @@ namespace ZNsMain
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
{
|
||||
ZCLink* VP_DelLink = AP_CutHead;
|
||||
|
||||
__for0(TypeSize, i, AL_CutCnt)
|
||||
{
|
||||
AP_CutHead = AP_CutHead->GetNextPtr() ;
|
||||
|
||||
delete VP_DelLink; VP_DelLink=AP_CutHead;
|
||||
}/*
|
||||
__for0(TypeSize, i, AL_CutCnt)*/
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
|
||||
/*protected:*/
|
||||
private :
|
||||
|
||||
_VT_ ZCLink* SendFreeOut()
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1) return NewLink();
|
||||
|
||||
return GetChildObj().SendFreeOut();
|
||||
}/*
|
||||
_VT_ ZCLink* SendFreeOut()*/
|
||||
|
||||
_VT_ ZCLink* SendFreeOut(TypeArg AO_ArgData)
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1)
|
||||
{ return NewLink(AO_ArgData); }
|
||||
|
||||
return GetChildObj().SendFreeOut(AO_ArgData);
|
||||
}/*
|
||||
_VT_ ZCLink* SendFreeOut(TypeArg AO_ArgData)*/
|
||||
|
||||
_VT_ void SendFreeOut
|
||||
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1)
|
||||
{
|
||||
ZCLink* VP_DelLink = AP_CutHead;
|
||||
NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink); return;
|
||||
}/*
|
||||
if(TTypeCRTP::ZEUseCRTP<1)*/
|
||||
|
||||
__for0(TypeSize, i, AL_CutCnt)
|
||||
{
|
||||
AP_CutHead = AP_CutHead->GetNextPtr() ;
|
||||
return GetChildObj().SendFreeOut
|
||||
(AL_NeedCnt, RR(APR_HeadLink), RR(APR_TailLink));
|
||||
}/*
|
||||
_VT_ void SendFreeOut
|
||||
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
|
||||
*/
|
||||
|
||||
delete VP_DelLink; VP_DelLink=AP_CutHead;
|
||||
}/*
|
||||
__for0(TypeSize, i, AL_CutCnt)*/
|
||||
_VT_ void SendFreeOutCopy /*///////////////////////*/
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
{
|
||||
// 총 AL_FarNum+1 개의 링크가 만들어짊
|
||||
|
||||
if(TTypeCRTP::ZEUseCRTP<1)
|
||||
{
|
||||
NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy); return;
|
||||
}/*
|
||||
if(TTypeCRTP::ZEUseCRTP<1)*/
|
||||
|
||||
return GetChildObj().SendFreeOutCopy
|
||||
(AP_LinkOrgin, AL_FarNum, RR(APR_HeadCopy), RR(APR_TailCopy));
|
||||
}/*
|
||||
_VT_ void SendFreeOutCopy /////////////////////////
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
///////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1)
|
||||
{ DelLink(AP_DelLink); return; }
|
||||
|
||||
GetChildObj().RecvFreeIn(AP_DelLink);
|
||||
}/*
|
||||
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/
|
||||
|
||||
_VT_ void RecvFreeIn //////////////////////////////////
|
||||
(
|
||||
TypeSize AL_CutCnt ,
|
||||
ZCLink* AP_CutHead,
|
||||
ZCLink* AP_CutTail
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1)
|
||||
{
|
||||
DelLink
|
||||
(AL_CutCnt, AP_CutHead, AP_CutTail);
|
||||
return;
|
||||
}/*
|
||||
if(TTypeCRTP::ZEUseCRTP<1)*/
|
||||
|
||||
GetChildObj().DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
GetChildObj().RecvFreeIn(AL_CutCnt, AP_CutHead, AP_CutTail);
|
||||
}/*
|
||||
_VT_ void RecvFreeIn //////////////////////////////////
|
||||
(
|
||||
TypeSize AL_CutCnt ,
|
||||
ZCLink* AP_CutHead,
|
||||
ZCLink* AP_CutTail
|
||||
)
|
||||
/////////////////////////////////////////////////////*/
|
||||
|
||||
/*private :*/
|
||||
private :
|
||||
@ -5558,38 +5682,82 @@ namespace ZNsMain
|
||||
|
||||
ZtCBaseList& operator=(const ZtCBaseList& rhs)
|
||||
{
|
||||
// 초기에 DeleteAll() 로 다 삭제하고, 필요한 만큼
|
||||
// AddTail() 을 호출하고 있는데, 최적화의 여지가 있다.
|
||||
if(this==&rhs) return *this;
|
||||
|
||||
if(this==&rhs) return *this; this->DeleteAll();
|
||||
if(rhs.size()<1)
|
||||
{ this->DeleteAll(); return *this; }
|
||||
|
||||
ZCLink* VP_NowLink = rhs.mp_HeadLink ;
|
||||
TypeSize VL_MinusSize = this->size() - rhs.size() ;
|
||||
|
||||
if (VL_MinusSize>0)
|
||||
{
|
||||
RecvFreeIn ////////////////////////////////////////
|
||||
(
|
||||
VL_MinusSize,
|
||||
mp_HeadLink ,
|
||||
mp_HeadLink->GetNextPrevPtr(VL_MinusSize-1)
|
||||
);
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
ml_LinkCnt -= VL_MinusSize;
|
||||
}
|
||||
else if(VL_MinusSize<0)
|
||||
{
|
||||
ZCLink* VP_HeadLink=0;
|
||||
ZCLink* VP_TailLink=0;
|
||||
|
||||
SendFreeOut ////////////////////////////////////////
|
||||
(
|
||||
-VL_MinusSize ,
|
||||
RR(VP_HeadLink) ,
|
||||
RR(VP_TailLink)
|
||||
);
|
||||
///////////////////////////////////////////////////
|
||||
|
||||
if(ml_LinkCnt>0)
|
||||
{
|
||||
ZCLink::JoinLink(mp_TailLink, VP_HeadLink);
|
||||
ZCLink::MakeRing(mp_HeadLink, VP_TailLink);
|
||||
|
||||
mp_TailLink = VP_TailLink ;
|
||||
}
|
||||
else
|
||||
{
|
||||
mp_HeadLink = VP_HeadLink ;
|
||||
mp_TailLink = VP_TailLink ;
|
||||
|
||||
ZCLink::MakeRing(mp_HeadLink, VP_TailLink);
|
||||
}/*
|
||||
else*/
|
||||
|
||||
ml_LinkCnt += (-VL_MinusSize);
|
||||
}/*
|
||||
else if(VL_MinusSize<0)*/
|
||||
|
||||
|
||||
ZCLink* VP_RhsLink = rhs.mp_HeadLink ;
|
||||
ZCLink* VP_LhsLink = mp_HeadLink ;
|
||||
|
||||
__for0(TypeSize, i, rhs.size())
|
||||
{
|
||||
this->AddTail(VP_NowLink->mo_Data) ;
|
||||
**VP_LhsLink = **VP_RhsLink ;
|
||||
|
||||
VP_NowLink = VP_NowLink->mp_NextLink;
|
||||
VP_RhsLink = VP_RhsLink->mp_NextLink;
|
||||
VP_LhsLink = VP_LhsLink->mp_NextLink;
|
||||
}/*
|
||||
__for0(TypeSize, i, rhs.size())*/
|
||||
|
||||
return *this;
|
||||
}/*
|
||||
ZtCBaseList& operator=(const ZtCBaseList& rhs)*/
|
||||
|
||||
|
||||
void DeleteAll()
|
||||
{
|
||||
ZCLink* VP_NowLink = mp_HeadLink;
|
||||
if(ml_LinkCnt<1) return;
|
||||
|
||||
while(--ml_LinkCnt>=0)
|
||||
{
|
||||
ZCLink* VP_NextLink =
|
||||
VP_NowLink->mp_NextLink ;
|
||||
|
||||
DelLink(VP_NowLink);
|
||||
|
||||
VP_NowLink = VP_NextLink;
|
||||
}/*
|
||||
while(--ml_LinkCnt>=0)*/
|
||||
RecvFreeIn
|
||||
(ml_LinkCnt, mp_HeadLink, mp_TailLink);
|
||||
|
||||
mp_HeadLink =0 ;
|
||||
mp_TailLink =0 ;
|
||||
@ -5599,9 +5767,9 @@ namespace ZNsMain
|
||||
|
||||
|
||||
TypeData& AddHead()
|
||||
{ return AddHeadLink(NewLink())->mo_Data; }
|
||||
{ return AddHeadLink(SendFreeOut())->mo_Data; }
|
||||
TypeData& AddTail()
|
||||
{ return AddTailLink(NewLink())->mo_Data; }
|
||||
{ return AddTailLink(SendFreeOut())->mo_Data; }
|
||||
|
||||
|
||||
TypeData& AddHead(TypeArg AO_ArgData) /*########################*/
|
||||
@ -5609,7 +5777,7 @@ namespace ZNsMain
|
||||
#if(_CODE_NEW_)
|
||||
if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
|
||||
{
|
||||
ZCLink* VP_NewNode = NewLink(AO_ArgData);
|
||||
ZCLink* VP_NewNode = SendFreeOut(AO_ArgData);
|
||||
|
||||
TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData);
|
||||
|
||||
@ -5626,7 +5794,7 @@ namespace ZNsMain
|
||||
#if(_CODE_NEW_)
|
||||
if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
|
||||
{
|
||||
ZCLink* VP_NewNode = NewLink(AO_ArgData);
|
||||
ZCLink* VP_NewNode = SendFreeOut(AO_ArgData);
|
||||
|
||||
TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData);
|
||||
|
||||
@ -5646,7 +5814,7 @@ namespace ZNsMain
|
||||
ZCLink* VP_TempLink = mp_HeadLink ;
|
||||
mp_HeadLink = mp_HeadLink->mp_NextLink ;
|
||||
|
||||
DelLink(VP_TempLink);
|
||||
RecvFreeIn(VP_TempLink);
|
||||
|
||||
if(--ml_LinkCnt<1)
|
||||
{
|
||||
@ -5666,7 +5834,7 @@ namespace ZNsMain
|
||||
ZCLink* VP_TempLink = mp_TailLink ;
|
||||
mp_TailLink = mp_TailLink->mp_PrevLink ;
|
||||
|
||||
DelLink(VP_TempLink);
|
||||
RecvFreeIn(VP_TempLink);
|
||||
|
||||
if(--ml_LinkCnt<1)
|
||||
{
|
||||
|
@ -88,10 +88,7 @@ namespace ZNsMain
|
||||
|
||||
class ZCBaseListEx10 : public ZtCBaseList
|
||||
<
|
||||
CStringBase
|
||||
, CStringBase&
|
||||
, ZCAllocator
|
||||
, ZTypLong
|
||||
CStringBase, CStringBase&, ZCAllocator, ZTypLong
|
||||
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
|
||||
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
|
||||
>
|
||||
@ -100,10 +97,7 @@ namespace ZNsMain
|
||||
|
||||
typedef ZtCBaseList ///////////////////////////////////////////////////////
|
||||
<
|
||||
CStringBase
|
||||
, CStringBase&
|
||||
, ZCAllocator
|
||||
, ZTypLong
|
||||
CStringBase, CStringBase&, ZCAllocator, ZTypLong
|
||||
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
|
||||
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
|
||||
>
|
||||
@ -111,10 +105,7 @@ namespace ZNsMain
|
||||
|
||||
friend class ZtCBaseList //////////////////////////////////////////////////
|
||||
<
|
||||
CStringBase
|
||||
, CStringBase&
|
||||
, ZCAllocator
|
||||
, ZTypLong
|
||||
CStringBase, CStringBase&, ZCAllocator, ZTypLong
|
||||
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
|
||||
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
|
||||
>;
|
||||
@ -124,29 +115,62 @@ namespace ZNsMain
|
||||
|
||||
private:
|
||||
|
||||
_VT_ ZCLink* NewLink()
|
||||
_VT_ ZCLink* SendFreeOut()
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : NewLink()"<<endl;
|
||||
cout<<"** ZCBaseListEx10 : SendFreeOut()"<<endl;
|
||||
|
||||
return new ZCLink;
|
||||
return this->ZCBaseList::NewLink();
|
||||
}/*
|
||||
_VT_ ZCLink* NewLink()*/
|
||||
_VT_ ZCLink* SendFreeOut()*/
|
||||
|
||||
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)
|
||||
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : NewLink(TypeArg)"<<endl;
|
||||
cout<<"** ZCBaseListEx10 : SendFreeOut(TypeArg)"<<endl;
|
||||
|
||||
return new ZCLink(AO_ArgData);
|
||||
return this->ZCBaseList::NewLink(AO_ArgData);
|
||||
}/*
|
||||
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)*/
|
||||
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)*/
|
||||
|
||||
_VT_ void DelLink(ZCLink* AP_DelLink)
|
||||
_VT_ void SendFreeOut
|
||||
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : DelLink(ZCLink*)"<<endl;
|
||||
cout<<"** ZCBaseListEx10 : SendFreeOut(ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
|
||||
|
||||
delete AP_DelLink;
|
||||
this->ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink);
|
||||
}
|
||||
|
||||
_VT_ void SendFreeOutCopy /*///////////////////////*/
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, ZTypLong AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : SendFreeOut(ZCLink*, ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
|
||||
|
||||
this->ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy);
|
||||
}
|
||||
|
||||
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : RecvFreeIn(AP_DelLink)"<<endl;
|
||||
|
||||
this->ZCBaseList::DelLink(AP_DelLink);
|
||||
}/*
|
||||
_VT_ void DelLink(ZCLink* AP_DelLink)*/
|
||||
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/
|
||||
|
||||
_VT_ void RecvFreeIn //////////////////////////////////
|
||||
(
|
||||
ZTypLong AL_CutCnt ,
|
||||
ZCLink* AP_CutHead,
|
||||
ZCLink* AP_CutTail
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : RecvFreeIn(ZTypLong, AP_CutHead, AP_CutTail)"<<endl;
|
||||
|
||||
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
|
||||
}
|
||||
|
||||
private:
|
||||
};/*
|
||||
@ -155,10 +179,7 @@ namespace ZNsMain
|
||||
|
||||
class ZCBaseListEx11 : public ZtCBaseList
|
||||
<
|
||||
CStringBase
|
||||
, CStringBase&
|
||||
, ZCAllocator
|
||||
, ZTypLong
|
||||
CStringBase, CStringBase&, ZCAllocator, ZTypLong
|
||||
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
|
||||
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
|
||||
>
|
||||
@ -167,10 +188,7 @@ namespace ZNsMain
|
||||
|
||||
typedef ZtCBaseList ///////////////////////////////////////////////////////
|
||||
<
|
||||
CStringBase
|
||||
, CStringBase&
|
||||
, ZCAllocator
|
||||
, ZTypLong
|
||||
CStringBase, CStringBase&, ZCAllocator, ZTypLong
|
||||
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
|
||||
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
|
||||
>
|
||||
@ -178,10 +196,7 @@ namespace ZNsMain
|
||||
|
||||
friend class ZtCBaseList //////////////////////////////////////////////////
|
||||
<
|
||||
CStringBase
|
||||
, CStringBase&
|
||||
, ZCAllocator
|
||||
, ZTypLong
|
||||
CStringBase, CStringBase&, ZCAllocator, ZTypLong
|
||||
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
|
||||
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
|
||||
>;
|
||||
@ -191,29 +206,62 @@ namespace ZNsMain
|
||||
|
||||
private:
|
||||
|
||||
_VT_ ZCLink* NewLink()
|
||||
_VT_ ZCLink* SendFreeOut()
|
||||
{
|
||||
cout<<"** ZCBaseListEx11 : NewLink()"<<endl;
|
||||
cout<<"** ZCBaseListEx11 : SendFreeOut()"<<endl;
|
||||
|
||||
return new ZCLink;
|
||||
return this->ZCBaseList::NewLink();
|
||||
}/*
|
||||
_VT_ ZCLink* NewLink()*/
|
||||
_VT_ ZCLink* SendFreeOut()*/
|
||||
|
||||
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)
|
||||
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)
|
||||
{
|
||||
cout<<"** ZCBaseListEx11 : NewLink(TypeArg)"<<endl;
|
||||
cout<<"** ZCBaseListEx11 : SendFreeOut(CStringBase&)"<<endl;
|
||||
|
||||
return new ZCLink(AO_ArgData);
|
||||
return this->ZCBaseList::NewLink(AO_ArgData);
|
||||
}/*
|
||||
_VT_ ZCLink* NewLink(CStringBase& AO_ArgData)*/
|
||||
_VT_ ZCLink* SendFreeOut(CStringBase& AO_ArgData)*/
|
||||
|
||||
_VT_ void DelLink(ZCLink* AP_DelLink)
|
||||
_VT_ void SendFreeOut
|
||||
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
|
||||
{
|
||||
cout<<"** ZCBaseListEx11 : DelLink(ZCLink*)"<<endl;
|
||||
cout<<"** ZCBaseListEx11 : SendFreeOut(ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
|
||||
|
||||
delete AP_DelLink;
|
||||
this->ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink);
|
||||
}
|
||||
|
||||
_VT_ void SendFreeOutCopy /*///////////////////////*/
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, ZTypLong AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
{
|
||||
cout<<"** ZCBaseListEx11 : SendFreeOut(ZCLink*, ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
|
||||
|
||||
this->ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy);
|
||||
}
|
||||
|
||||
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)
|
||||
{
|
||||
cout<<"** ZCBaseListEx11 : RecvFreeIn(AP_DelLink)"<<endl;
|
||||
|
||||
this->ZCBaseList::DelLink(AP_DelLink);
|
||||
}/*
|
||||
_VT_ void DelLink(ZCLink* AP_DelLink)*/
|
||||
_VT_ void RecvFreeIn(ZCLink* AP_DelLink)*/
|
||||
|
||||
_VT_ void RecvFreeIn //////////////////////////////////
|
||||
(
|
||||
ZTypLong AL_CutCnt ,
|
||||
ZCLink* AP_CutHead,
|
||||
ZCLink* AP_CutTail
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
{
|
||||
cout<<"** ZCBaseListEx11: RecvFreeIn(ZTypLong, AP_CutHead, AP_CutTail)"<<endl;
|
||||
|
||||
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
|
||||
}
|
||||
|
||||
private:
|
||||
};/*
|
||||
@ -286,15 +334,37 @@ namespace ZNsMain
|
||||
VO_CIntList.IterElement(StFunctor6::ShowElement, ZftMCP(VO_CHelpObj), VO_CHelpObj );
|
||||
|
||||
|
||||
ZCBaseListEx10 VO_ZCBaseListEx10;
|
||||
ZCBaseListEx11 VO_ZCBaseListEx11;
|
||||
cout<<endl<<"#### ZCBaseListEx10 and ZCBaseListEx11 ####"<<endl<<endl;
|
||||
|
||||
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 11-1"));
|
||||
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 11-2"));
|
||||
ZCBaseListEx10 VO_ZCBaseListEx10 ;
|
||||
ZCBaseListEx10 VO_ZCBaseListEx10_2;
|
||||
ZCBaseListEx11 VO_ZCBaseListEx11 ;
|
||||
|
||||
VO_CStringBase="";
|
||||
|
||||
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 10-1"));
|
||||
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 10-2"));
|
||||
|
||||
VO_ZCBaseListEx11.AddTail(VO_CStringBase("data ex 11-1"));
|
||||
VO_ZCBaseListEx11.AddTail(VO_CStringBase("data ex 11-2"));
|
||||
|
||||
cout<<endl<<"# VO_ZCBaseListEx10_2 = VO_ZCBaseListEx11"<<endl<<endl;
|
||||
|
||||
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
|
||||
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode);
|
||||
|
||||
VO_ZCBaseListEx10.AddTail().Fetch(VO_CStringBase("data ex 10-3"));
|
||||
VO_ZCBaseListEx10.AddTail().Fetch(VO_CStringBase("data ex 10-4"));
|
||||
|
||||
cout<<endl<<"# VO_ZCBaseListEx10_2 = VO_ZCBaseListEx11 after VO_ZCBaseListEx10.AddTail() 2 times"<<endl<<endl;
|
||||
|
||||
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
|
||||
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode);
|
||||
|
||||
VO_ZCBaseListEx10_2.DeleteTail();
|
||||
|
||||
cout<<endl<<"# VO_ZCBaseListEx10_2DeleteTail()"<<endl<<endl;
|
||||
|
||||
return 0;
|
||||
}/*
|
||||
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
|
||||
|
Reference in New Issue
Block a user