commit 2025-10-03 04:31 add RecvFreeIn() etc in ZtCBaseList : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-03 04:31:25 +09:00
parent b8ae34461b
commit c0cc5540b5
2 changed files with 365 additions and 127 deletions

View File

@ -5390,29 +5390,27 @@ namespace ZNsMain
}/* }/*
TypeChild& GetChildObj()*/ TypeChild& GetChildObj()*/
private : protected:
_VT_ ZCLink* NewLink() ZCLink* NewLink()
{ {
if(TTypeCRTP::ZEUseCRTP<1) return new ZCLink; return new ZCLink;
return GetChildObj().NewLink();
}/* }/*
_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 new ZCLink(AO_ArgData); }
return GetChildObj().NewLink(AO_ArgData);
}/* }/*
_VT_ ZCLink* NewLink(TypeArg AO_ArgData)*/ ZCLink* NewLink(TypeArg AO_ArgData)*/
_VT_ void NewLink void NewLink ////////////////////////////////////////
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink) (
{ TypeSize AL_NeedCnt ,
if(TTypeCRTP::ZEUseCRTP<1) ZCLink*& APR_HeadLink ,
ZCLink*& APR_TailLink
)
/////////////////////////////////////////////////////
{ {
APR_HeadLink = new ZCLink; APR_HeadLink = new ZCLink;
@ -5431,24 +5429,61 @@ namespace ZNsMain
}/* }/*
while(--AL_NeedCnt>0)*/ while(--AL_NeedCnt>0)*/
APR_TailLink = VP_TailLink; return; APR_TailLink = VP_TailLink;
}/* }/*
if(TTypeCRTP::ZEUseCRTP<1)*/ void NewLink ////////////////////////////////////////
(
TypeSize AL_NeedCnt ,
ZCLink*& APR_HeadLink ,
ZCLink*& APR_TailLink
)
///////////////////////////////////////////////////*/
return GetChildObj().NewLink
(AL_NeedCnt, RR(APR_HeadLink), RR(APR_TailLink)); void NewLinkCopy //////////////////////////////////
}/* (
_VT_ void NewLink ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink) ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
*/ )
_VT_ void DelLink(ZCLink* AP_DelLink) /////////////////////////////////////////////////////
{ {
if(TTypeCRTP::ZEUseCRTP<1) // 총 AL_FarNum+1 개의 링크가 만들어짊
{ delete AP_DelLink; return; }
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;
}/* }/*
_VT_ void DelLink(ZCLink* AP_DelLink)*/ while(--AL_FarNum >= 0)*/
APR_TailCopy=VP_TailLink;
}/*
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 ////////////////////////////////////////// void DelLink //////////////////////////////////////////
( (
@ -5458,8 +5493,6 @@ namespace ZNsMain
) )
/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////
{ {
if(TTypeCRTP::ZEUseCRTP<1)
{
ZCLink* VP_DelLink = AP_CutHead; ZCLink* VP_DelLink = AP_CutHead;
__for0(TypeSize, i, AL_CutCnt) __for0(TypeSize, i, AL_CutCnt)
@ -5469,14 +5502,105 @@ namespace ZNsMain
delete VP_DelLink; VP_DelLink=AP_CutHead; delete VP_DelLink; VP_DelLink=AP_CutHead;
}/* }/*
__for0(TypeSize, i, AL_CutCnt)*/ __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)
{
NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink); return;
}/*
if(TTypeCRTP::ZEUseCRTP<1)*/
return GetChildObj().SendFreeOut
(AL_NeedCnt, RR(APR_HeadLink), RR(APR_TailLink));
}/*
_VT_ void SendFreeOut
(TypeSize AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
*/
_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; return;
}/* }/*
if(TTypeCRTP::ZEUseCRTP<1)*/ 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 :*/
private : private :
@ -5558,38 +5682,82 @@ namespace ZNsMain
ZtCBaseList& operator=(const ZtCBaseList& rhs) ZtCBaseList& operator=(const ZtCBaseList& rhs)
{ {
// 초기에 DeleteAll() 로 다 삭제하고, 필요한 만큼 if(this==&rhs) return *this;
// AddTail() 을 호출하고 있는데, 최적화의 여지가 있다.
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()) __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())*/ __for0(TypeSize, i, rhs.size())*/
return *this;
}/* }/*
ZtCBaseList& operator=(const ZtCBaseList& rhs)*/ ZtCBaseList& operator=(const ZtCBaseList& rhs)*/
void DeleteAll() void DeleteAll()
{ {
ZCLink* VP_NowLink = mp_HeadLink; if(ml_LinkCnt<1) return;
while(--ml_LinkCnt>=0) RecvFreeIn
{ (ml_LinkCnt, mp_HeadLink, mp_TailLink);
ZCLink* VP_NextLink =
VP_NowLink->mp_NextLink ;
DelLink(VP_NowLink);
VP_NowLink = VP_NextLink;
}/*
while(--ml_LinkCnt>=0)*/
mp_HeadLink =0 ; mp_HeadLink =0 ;
mp_TailLink =0 ; mp_TailLink =0 ;
@ -5599,9 +5767,9 @@ namespace ZNsMain
TypeData& AddHead() TypeData& AddHead()
{ return AddHeadLink(NewLink())->mo_Data; } { return AddHeadLink(SendFreeOut())->mo_Data; }
TypeData& AddTail() TypeData& AddTail()
{ return AddTailLink(NewLink())->mo_Data; } { return AddTailLink(SendFreeOut())->mo_Data; }
TypeData& AddHead(TypeArg AO_ArgData) /*########################*/ TypeData& AddHead(TypeArg AO_ArgData) /*########################*/
@ -5609,7 +5777,7 @@ namespace ZNsMain
#if(_CODE_NEW_) #if(_CODE_NEW_)
if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
{ {
ZCLink* VP_NewNode = NewLink(AO_ArgData); ZCLink* VP_NewNode = SendFreeOut(AO_ArgData);
TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData); TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData);
@ -5626,7 +5794,7 @@ namespace ZNsMain
#if(_CODE_NEW_) #if(_CODE_NEW_)
if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
{ {
ZCLink* VP_NewNode = NewLink(AO_ArgData); ZCLink* VP_NewNode = SendFreeOut(AO_ArgData);
TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData); TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData);
@ -5646,7 +5814,7 @@ namespace ZNsMain
ZCLink* VP_TempLink = mp_HeadLink ; ZCLink* VP_TempLink = mp_HeadLink ;
mp_HeadLink = mp_HeadLink->mp_NextLink ; mp_HeadLink = mp_HeadLink->mp_NextLink ;
DelLink(VP_TempLink); RecvFreeIn(VP_TempLink);
if(--ml_LinkCnt<1) if(--ml_LinkCnt<1)
{ {
@ -5666,7 +5834,7 @@ namespace ZNsMain
ZCLink* VP_TempLink = mp_TailLink ; ZCLink* VP_TempLink = mp_TailLink ;
mp_TailLink = mp_TailLink->mp_PrevLink ; mp_TailLink = mp_TailLink->mp_PrevLink ;
DelLink(VP_TempLink); RecvFreeIn(VP_TempLink);
if(--ml_LinkCnt<1) if(--ml_LinkCnt<1)
{ {

View File

@ -88,10 +88,7 @@ namespace ZNsMain
class ZCBaseListEx10 : public ZtCBaseList class ZCBaseListEx10 : public ZtCBaseList
< <
CStringBase CStringBase, CStringBase&, ZCAllocator, ZTypLong
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true> , ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true> , ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
> >
@ -100,10 +97,7 @@ namespace ZNsMain
typedef ZtCBaseList /////////////////////////////////////////////////////// typedef ZtCBaseList ///////////////////////////////////////////////////////
< <
CStringBase CStringBase, CStringBase&, ZCAllocator, ZTypLong
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true> , ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true> , ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
> >
@ -111,10 +105,7 @@ namespace ZNsMain
friend class ZtCBaseList ////////////////////////////////////////////////// friend class ZtCBaseList //////////////////////////////////////////////////
< <
CStringBase CStringBase, CStringBase&, ZCAllocator, ZTypLong
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true> , ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true> , ZNsType::ZtCTypeCRTP<ZCBaseListEx10, true>
>; >;
@ -124,29 +115,62 @@ namespace ZNsMain
private: 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: private:
};/* };/*
@ -155,10 +179,7 @@ namespace ZNsMain
class ZCBaseListEx11 : public ZtCBaseList class ZCBaseListEx11 : public ZtCBaseList
< <
CStringBase CStringBase, CStringBase&, ZCAllocator, ZTypLong
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true> , ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false> , ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
> >
@ -167,10 +188,7 @@ namespace ZNsMain
typedef ZtCBaseList /////////////////////////////////////////////////////// typedef ZtCBaseList ///////////////////////////////////////////////////////
< <
CStringBase CStringBase, CStringBase&, ZCAllocator, ZTypLong
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true> , ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false> , ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
> >
@ -178,10 +196,7 @@ namespace ZNsMain
friend class ZtCBaseList ////////////////////////////////////////////////// friend class ZtCBaseList //////////////////////////////////////////////////
< <
CStringBase CStringBase, CStringBase&, ZCAllocator, ZTypLong
, CStringBase&
, ZCAllocator
, ZTypLong
, ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true> , ZNsMain::ZtCMoveObj <CStringBase, CStringBase&, true>
, ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false> , ZNsType::ZtCTypeCRTP<ZCBaseListEx11, false>
>; >;
@ -191,29 +206,62 @@ namespace ZNsMain
private: 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: private:
};/* };/*
@ -286,15 +334,37 @@ namespace ZNsMain
VO_CIntList.IterElement(StFunctor6::ShowElement, ZftMCP(VO_CHelpObj), VO_CHelpObj ); VO_CIntList.IterElement(StFunctor6::ShowElement, ZftMCP(VO_CHelpObj), VO_CHelpObj );
cout<<endl<<"#### ZCBaseListEx10 and ZCBaseListEx11 ####"<<endl<<endl;
ZCBaseListEx10 VO_ZCBaseListEx10 ; ZCBaseListEx10 VO_ZCBaseListEx10 ;
ZCBaseListEx10 VO_ZCBaseListEx10_2;
ZCBaseListEx11 VO_ZCBaseListEx11 ; ZCBaseListEx11 VO_ZCBaseListEx11 ;
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 11-1")); VO_CStringBase="";
VO_ZCBaseListEx10.AddTail(VO_CStringBase("data ex 11-2"));
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-1"));
VO_ZCBaseListEx11.AddTail(VO_CStringBase("data ex 11-2")); 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; return 0;
}/* }/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/ static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/