commit 2025-10-03 11:51 add ChangeCapacity() in ZtCBaseList : ZCppMain/ZMainHead.H
This commit is contained in:
@ -4035,68 +4035,75 @@ namespace ZNsMain
|
||||
typedef typename TLinkList::TypeSize TypeSize;
|
||||
public:
|
||||
|
||||
void RecvFreeIn(ZCLink* AP_CutLink){}
|
||||
void RecvFreeIn /////////////////////
|
||||
_NP_ void RecvFreeIn(ZCLink* AP_CutLink){}
|
||||
_NP_ void RecvFreeIn /////////////////////
|
||||
(
|
||||
TypeSize AL_CutCnt ,
|
||||
ZCLink* AP_CutHead,
|
||||
ZCLink* AP_CutTail
|
||||
)
|
||||
{ } /////////////////////////////////
|
||||
{ } //////////////////////////////////////
|
||||
|
||||
|
||||
ZCLink* SendFreeOut(){}
|
||||
void SendFreeOut /////////////////
|
||||
_NP_ ZCLink* SendFreeOut(){}
|
||||
_NP_ void SendFreeOut /////////////////
|
||||
(
|
||||
TypeSize AL_NeedCnt ,
|
||||
ZCLink*& APR_NewHead,
|
||||
ZCLink*& APR_NewTail
|
||||
)
|
||||
{ } /////////////////////////////////
|
||||
{ } //////////////////////////////////////
|
||||
|
||||
|
||||
void SendFreeOutCopy /*////////////////////////////*/
|
||||
_NP_ void SendFreeOutCopy /*////////////////////////////*/
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
{ } /*/////////////////////////////////////////////*/
|
||||
{ } /*//////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
void DeleteHeap(){}
|
||||
_NP_ void DeleteHeap(){}
|
||||
|
||||
|
||||
void MakeEuqal(ZtCBody& rhs)
|
||||
_NP_ void MakeEuqal(ZtCBody& rhs)
|
||||
{
|
||||
}/*
|
||||
void MakeEuqal(ZtCBody& rhs)*/
|
||||
_NP_ void MakeEuqal(ZtCBody& rhs)*/
|
||||
|
||||
|
||||
TypeSize GetUseHeapSize() const
|
||||
_NP_ TypeSize GetUseHeapSize() const
|
||||
{
|
||||
return 0;
|
||||
}/*
|
||||
TypeSize GetUseHeapSize() const*/
|
||||
_NP_ TypeSize GetUseHeapSize() const*/
|
||||
|
||||
TypeSize GetAllHeapSize() const
|
||||
_NP_ TypeSize GetAllHeapSize() const
|
||||
{
|
||||
return 0;
|
||||
}/*
|
||||
TypeSize GetAllHeapSize() const*/
|
||||
_NP_ TypeSize GetAllHeapSize() const*/
|
||||
|
||||
|
||||
TypeSize size() const
|
||||
_NP_ TypeSize size() const
|
||||
{
|
||||
return GetUseHeapSize();
|
||||
}/*
|
||||
TypeSize GetHeapSize() const*/
|
||||
_NP_ TypeSize size() const*/
|
||||
|
||||
TypeSize capacity() const
|
||||
_NP_ TypeSize capacity() const
|
||||
{
|
||||
return GetAllHeapSize();
|
||||
}/*
|
||||
TypeSize GetHeapSize() const*/
|
||||
_NP_ TypeSize capacity() const*/
|
||||
|
||||
|
||||
_NP_ void ChangeCapacity(TypeSize AI_AddCut)
|
||||
{
|
||||
}/*
|
||||
_NP_ void ChangeCapacity(TypeSize AI_AddCut)*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
template<typename TLinkList> class ZtCBody*/
|
||||
|
||||
@ -4155,14 +4162,14 @@ namespace ZNsMain
|
||||
:::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||
public:
|
||||
|
||||
void RecvFreeIn(ZCLink* AP_CutLink){delete AP_CutLink;}
|
||||
void RecvFreeIn ///////////////////////////////////////
|
||||
_NP_ void RecvFreeIn(ZCLink* AP_CutLink){delete AP_CutLink;}
|
||||
_NP_ void RecvFreeIn ///////////////////////////////////////
|
||||
(
|
||||
TypeSize AL_CutCnt ,
|
||||
ZCLink* AP_CutHead,
|
||||
ZCLink* AP_CutTail
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
{
|
||||
ZCLink* VP_DelLink = AP_CutHead;
|
||||
|
||||
@ -4174,17 +4181,17 @@ namespace ZNsMain
|
||||
}/*
|
||||
__for0(TypeSize, i, AL_CutCnt)*/
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
ZCLink* SendFreeOut(){return new ZCLink;}
|
||||
void SendFreeOut ///////////////////////////////////
|
||||
_NP_ ZCLink* SendFreeOut(){return new ZCLink;}
|
||||
_NP_ void SendFreeOut ///////////////////////////////////
|
||||
(
|
||||
TypeSize AL_NeedCnt ,
|
||||
ZCLink*& APR_HeadLink ,
|
||||
ZCLink*& APR_TailLink
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
{
|
||||
APR_HeadLink = new ZCLink;
|
||||
|
||||
@ -4205,15 +4212,15 @@ namespace ZNsMain
|
||||
|
||||
APR_TailLink = VP_TailLink;
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
void SendFreeOutCopy /*////////////////////////////*/
|
||||
_NP_ void SendFreeOutCopy /*////////////////////////////*/
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////
|
||||
{
|
||||
// 총 AL_FarNum+1 개의 링크가 만들어짊.
|
||||
|
||||
@ -4239,47 +4246,53 @@ namespace ZNsMain
|
||||
|
||||
APR_TailCopy=VP_TailLink;
|
||||
}/*
|
||||
void SendFreeOutCopy //////////////////////////////
|
||||
_NP_ void SendFreeOutCopy //////////////////////////////
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
///////////////////////////////////////////////////*/
|
||||
////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
void DeleteHeap(){}
|
||||
_NP_ void DeleteHeap(){}
|
||||
|
||||
|
||||
void MakeEuqal(ZtCBody& rhs)
|
||||
_NP_ void MakeEuqal(ZtCBody& rhs)
|
||||
{
|
||||
}/*
|
||||
void MakeEuqal(ZtCBody& rhs)*/
|
||||
_NP_ void MakeEuqal(ZtCBody& rhs)*/
|
||||
|
||||
|
||||
TypeSize GetUseHeapSize() const
|
||||
_NP_ TypeSize GetUseHeapSize() const
|
||||
{
|
||||
return 0;
|
||||
}/*
|
||||
TypeSize GetUseHeapSize() const*/
|
||||
_NP_ TypeSize GetUseHeapSize() const*/
|
||||
|
||||
TypeSize GetAllHeapSize() const
|
||||
_NP_ TypeSize GetAllHeapSize() const
|
||||
{
|
||||
return 0;
|
||||
}/*
|
||||
TypeSize GetAllHeapSize() const*/
|
||||
_NP_ TypeSize GetAllHeapSize() const*/
|
||||
|
||||
|
||||
TypeSize size() const
|
||||
_NP_ TypeSize size() const
|
||||
{
|
||||
return GetUseHeapSize();
|
||||
}/*
|
||||
TypeSize GetHeapSize() const*/
|
||||
_NP_ TypeSize GetHeapSize() const*/
|
||||
|
||||
TypeSize capacity() const
|
||||
_NP_ TypeSize capacity() const
|
||||
{
|
||||
return GetAllHeapSize();
|
||||
}/*
|
||||
TypeSize GetHeapSize() const*/
|
||||
_NP_ TypeSize capacity() const*/
|
||||
|
||||
|
||||
_NP_ void ChangeCapacity(TypeSize AI_AddCut)
|
||||
{
|
||||
}/*
|
||||
_NP_ void ChangeCapacity(TypeSize AI_AddCut)*/
|
||||
|
||||
};/*
|
||||
template<typename TSnglList> class ZtCBody*/
|
||||
@ -4300,14 +4313,14 @@ namespace ZNsMain
|
||||
typedef typename TLinkList::TypeSize TypeSize;
|
||||
public:
|
||||
|
||||
void RecvFreeIn(ZCLink* AP_CutLink){delete AP_CutLink;}
|
||||
void RecvFreeIn ///////////////////////////////////////
|
||||
_NP_ void RecvFreeIn(ZCLink* AP_CutLink){delete AP_CutLink;}
|
||||
_NP_ void RecvFreeIn ///////////////////////////////////////
|
||||
(
|
||||
TypeSize AL_CutCnt ,
|
||||
ZCLink* AP_CutHead,
|
||||
ZCLink* AP_CutTail
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
{
|
||||
ZCLink* VP_DelLink = AP_CutHead;
|
||||
|
||||
@ -4319,17 +4332,17 @@ namespace ZNsMain
|
||||
}/*
|
||||
__for0(TypeSize, i, AL_CutCnt)*/
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
ZCLink* SendFreeOut(){return new ZCLink;}
|
||||
void SendFreeOut ///////////////////////////////////
|
||||
_NP_ ZCLink* SendFreeOut(){return new ZCLink;}
|
||||
_NP_ void SendFreeOut ///////////////////////////////////
|
||||
(
|
||||
TypeSize AL_NeedCnt ,
|
||||
ZCLink*& APR_HeadLink ,
|
||||
ZCLink*& APR_TailLink
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
{
|
||||
APR_HeadLink = new ZCLink;
|
||||
|
||||
@ -4351,15 +4364,15 @@ namespace ZNsMain
|
||||
|
||||
APR_TailLink = VP_TailLink;
|
||||
}
|
||||
///////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
void SendFreeOutCopy /*////////////////////////////*/
|
||||
_NP_ void SendFreeOutCopy /*////////////////////////////*/
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////
|
||||
{
|
||||
// 총 AL_FarNum+1 개의 링크가 만들어짊
|
||||
|
||||
@ -4385,47 +4398,53 @@ namespace ZNsMain
|
||||
|
||||
APR_TailCopy=VP_TailLink;
|
||||
}/*
|
||||
void SendFreeOutCopy //////////////////////////////
|
||||
_NP_ void SendFreeOutCopy //////////////////////////////
|
||||
(
|
||||
ZCLink* AP_LinkOrgin, TypeSize AL_FarNum ,
|
||||
ZCLink*& APR_HeadCopy, ZCLink*& APR_TailCopy
|
||||
)
|
||||
///////////////////////////////////////////////////*/
|
||||
////////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
void DeleteHeap(){}
|
||||
_NP_ void DeleteHeap(){}
|
||||
|
||||
|
||||
void MakeEuqal(ZtCBody& rhs)
|
||||
_NP_ void MakeEuqal(ZtCBody& rhs)
|
||||
{
|
||||
}/*
|
||||
void MakeEuqal(ZtCBody& rhs)*/
|
||||
_NP_ void MakeEuqal(ZtCBody& rhs)*/
|
||||
|
||||
|
||||
TypeSize GetUseHeapSize() const
|
||||
_NP_ TypeSize GetUseHeapSize() const
|
||||
{
|
||||
return 0;
|
||||
}/*
|
||||
TypeSize GetUseHeapSize() const*/
|
||||
_NP_ TypeSize GetUseHeapSize() const*/
|
||||
|
||||
TypeSize GetAllHeapSize() const
|
||||
_NP_ TypeSize GetAllHeapSize() const
|
||||
{
|
||||
return 0;
|
||||
}/*
|
||||
TypeSize GetAllHeapSize() const*/
|
||||
_NP_ TypeSize GetAllHeapSize() const*/
|
||||
|
||||
|
||||
TypeSize size() const
|
||||
_NP_ TypeSize size() const
|
||||
{
|
||||
return GetUseHeapSize();
|
||||
}/*
|
||||
TypeSize GetHeapSize() const*/
|
||||
TypeSize size() const*/
|
||||
|
||||
TypeSize capacity() const
|
||||
_NP_ TypeSize capacity() const
|
||||
{
|
||||
return GetAllHeapSize();
|
||||
}/*
|
||||
TypeSize GetHeapSize() const*/
|
||||
_NP_ TypeSize capacity() const*/
|
||||
|
||||
|
||||
_NP_ void ChangeCapacity(TypeSize AI_AddCut)
|
||||
{
|
||||
}/*
|
||||
_NP_ void ChangeCapacity(TypeSize AI_AddCut)*/
|
||||
|
||||
};/*
|
||||
template<typename TLinkList> class ZtCBody*/
|
||||
@ -5602,6 +5621,19 @@ namespace ZNsMain
|
||||
)
|
||||
/////////////////////////////////////////////////////*/
|
||||
|
||||
|
||||
_VT_ void ChangeCapacity(TypeSize AI_AddCut)
|
||||
{
|
||||
if(TTypeCRTP::ZEUseCRTP<1)
|
||||
{
|
||||
return; /*nothing to do*/
|
||||
}/*
|
||||
if(TTypeCRTP::ZEUseCRTP<1)*/
|
||||
|
||||
GetChildObj().ChangeCapacity(AI_AddCut);
|
||||
}/*
|
||||
_VT_ void ChangeCapacity(TypeSize AI_AddCut)*/
|
||||
|
||||
/*private :*/
|
||||
private :
|
||||
|
||||
@ -5807,6 +5839,29 @@ namespace ZNsMain
|
||||
TypeData& AddTail(TypeArg AO_ArgData) ##########################*/
|
||||
|
||||
|
||||
ZtCBaseList& AddHead(ZtCBaseList& rhs)
|
||||
{
|
||||
if(this == &rhs ) return *this;
|
||||
if(rhs.size()<1 ) return *this;
|
||||
|
||||
ZtCBaseList VO_TempList(rhs);
|
||||
|
||||
return JoinHead(VO_TempList);
|
||||
}/*
|
||||
ZtCBaseList& AddHead(ZtCBaseList& rhs)*/
|
||||
|
||||
ZtCBaseList& AddTail(ZtCBaseList& rhs)
|
||||
{
|
||||
if(this == &rhs ) return *this;
|
||||
if(rhs.size()<1 ) return *this;
|
||||
|
||||
ZtCBaseList VO_TempList(rhs);
|
||||
|
||||
return JoinTail(VO_TempList);
|
||||
}/*
|
||||
ZtCBaseList& AddTail(ZtCBaseList& rhs)*/
|
||||
|
||||
|
||||
void DeleteHead()
|
||||
{
|
||||
if(ml_LinkCnt<1) return;
|
||||
@ -5847,6 +5902,122 @@ namespace ZNsMain
|
||||
void DeleteTail()*/
|
||||
|
||||
|
||||
ZtCBaseList& JoinAfter(ZtCBaseList& rhs, ZCLink* AP_StdLink)
|
||||
{
|
||||
// AP_StdLink 의 뒤에 rhs 를 삽입.
|
||||
|
||||
if(rhs.ml_LinkCnt<1) return *this;
|
||||
|
||||
this->ChangeCapacity( rhs.ml_LinkCnt) ;
|
||||
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ;
|
||||
|
||||
if(AP_StdLink==0) // 맨 앞에 삽입
|
||||
{
|
||||
if(ml_LinkCnt<1)
|
||||
{
|
||||
mp_HeadLink =rhs.mp_HeadLink;
|
||||
mp_TailLink =rhs.mp_TailLink;
|
||||
ml_LinkCnt =rhs.ml_LinkCnt ;
|
||||
}
|
||||
else // ml_LinkCnt>=1
|
||||
{
|
||||
ZCLink::JoinLink( rhs.mp_TailLink, mp_HeadLink );
|
||||
ZCLink::MakeRing( rhs.mp_HeadLink, mp_TailLink );
|
||||
|
||||
mp_HeadLink =rhs.mp_HeadLink;
|
||||
ml_LinkCnt =rhs.ml_LinkCnt ;
|
||||
}/*
|
||||
else // ml_LinkCnt>=1*/
|
||||
|
||||
ml_LinkCnt += rhs.ml_LinkCnt;
|
||||
|
||||
rhs.mp_HeadLink = 0 ;
|
||||
rhs.mp_TailLink = 0 ;
|
||||
rhs.ml_LinkCnt = 0 ;
|
||||
|
||||
return *this;
|
||||
}/*
|
||||
if(AP_StdLink==0)*/
|
||||
|
||||
|
||||
ZCLink* VP_StdNext=AP_StdLink->mp_NextLink;
|
||||
|
||||
ZCLink::JoinLink(AP_StdLink , rhs.mp_HeadLink );
|
||||
ZCLink::JoinLink(rhs.mp_TailLink, VP_StdNext );
|
||||
|
||||
if(AP_StdLink==mp_TailLink)
|
||||
{ mp_TailLink=rhs.mp_TailLink; }
|
||||
|
||||
rhs.mp_HeadLink=0;
|
||||
rhs.mp_TailLink=0;
|
||||
rhs.ml_LinkCnt =0;
|
||||
|
||||
ml_LinkCnt += rhs.ml_LinkCnt; return *this;
|
||||
}/*
|
||||
ZtCBaseList& JoinAfter(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/
|
||||
|
||||
|
||||
ZtCBaseList& JoinBefore(ZtCBaseList& rhs, ZCLink* AP_StdLink)
|
||||
{
|
||||
// AP_StdLink 의 앞에 rhs 를 삽입.
|
||||
|
||||
if(rhs.size()<1) return *this;
|
||||
|
||||
if(AP_StdLink==0) // 맨 뒤에 삽입
|
||||
{
|
||||
if(ml_LinkCnt<1)
|
||||
{
|
||||
mp_HeadLink =rhs.mp_HeadLink;
|
||||
mp_TailLink =rhs.mp_TailLink;
|
||||
ml_LinkCnt =rhs.ml_LinkCnt ;
|
||||
}
|
||||
else // ml_LinkCnt>=1
|
||||
{
|
||||
ZCLink::JoinLink(mp_TailLink, rhs.mp_HeadLink );
|
||||
ZCLink::MakeRing(mp_HeadLink, rhs.mp_TailLink );
|
||||
|
||||
mp_TailLink = rhs.mp_TailLink ;
|
||||
ml_LinkCnt += rhs.ml_LinkCnt ;
|
||||
}/*
|
||||
else // ml_LinkCnt>=1*/
|
||||
|
||||
this->ChangeCapacity( rhs.ml_LinkCnt) ;
|
||||
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ;
|
||||
|
||||
rhs.mp_HeadLink=0;
|
||||
rhs.mp_TailLink=0;
|
||||
rhs.ml_LinkCnt =0;
|
||||
|
||||
ml_LinkCnt += rhs.ml_LinkCnt; return *this;
|
||||
}/*
|
||||
if(AP_StdLink==0)*/
|
||||
|
||||
|
||||
ZCLink* VP_StdPrev = AP_StdLink->mp_PrevLink;
|
||||
|
||||
ZCLink::JoinLink( VP_StdPrev , rhs.mp_HeadLink );
|
||||
ZCLink::JoinLink(rhs.mp_TailLink, AP_StdLink );
|
||||
|
||||
if(AP_StdLink==mp_HeadLink)
|
||||
{ mp_HeadLink = rhs.mp_HeadLink; }
|
||||
|
||||
this->ChangeCapacity( rhs.ml_LinkCnt) ;
|
||||
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ;
|
||||
|
||||
rhs.mp_HeadLink=0;
|
||||
rhs.mp_TailLink=0;
|
||||
rhs.ml_LinkCnt =0;
|
||||
|
||||
ml_LinkCnt += rhs.ml_LinkCnt; return *this;
|
||||
}/*
|
||||
ZtCBaseList& JoinBefore(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/
|
||||
|
||||
|
||||
ZtCBaseList& JoinHead(ZtCBaseList& rhs)
|
||||
{ if(this==&rhs) return *this; return JoinAfter (rhs, 0); }
|
||||
ZtCBaseList& JoinTail(ZtCBaseList& rhs)
|
||||
{ if(this==&rhs) return *this; return JoinBefore(rhs, 0); }
|
||||
|
||||
|
||||
TypeData& GetHeadData(){return mp_HeadLink->mo_Data;}
|
||||
TypeData& GetTailData(){return mp_TailLink->mo_Data;}
|
||||
@ -5980,6 +6151,72 @@ namespace ZNsMain
|
||||
###############################################################################*/
|
||||
|
||||
|
||||
template<typename TFunctor> void IterElemRev(TFunctor AO_Functor)
|
||||
{
|
||||
ZCLink* VP_LoopLink=mp_TailLink;
|
||||
|
||||
__for0(TypeSize, i, ml_LinkCnt)
|
||||
{
|
||||
ZtCTypeData<TFunctor>::
|
||||
GetObjRef(AO_Functor)(VP_LoopLink->mo_Data);
|
||||
|
||||
VP_LoopLink = VP_LoopLink->mp_PrevLink ;
|
||||
}/*
|
||||
__for0(TypeSize, i, ml_Size)*/
|
||||
}/*
|
||||
template<typename TFunctor> void IterElemRev(TFunctor AO_Functor) */
|
||||
|
||||
template<typename TFunctor, typename TTypeHelp>
|
||||
void IterElemRev(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)
|
||||
{
|
||||
typedef ZNsMain::
|
||||
ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||
|
||||
ZCLink* VP_LoopLink = mp_TailLink;
|
||||
|
||||
__for0(TypeSize, i, ml_LinkCnt)
|
||||
{
|
||||
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
|
||||
(
|
||||
VP_LoopLink->mo_Data, ZCCheckRef::PassData(AO_TypeHelp)
|
||||
);
|
||||
VP_LoopLink = VP_LoopLink->mp_PrevLink ;
|
||||
}/*
|
||||
__for0(TypeSize, i, ml_Size)*/
|
||||
}/*
|
||||
template<typename TFunctor, typename TTypeHelp>
|
||||
void IterElemRev(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
|
||||
|
||||
|
||||
template
|
||||
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
|
||||
void IterElemRev
|
||||
( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 )
|
||||
/*#############################################################################*/
|
||||
{
|
||||
typedef ZNsMain::ZtCCheckRef<TTypeHelp1> ZCCheckRef1;
|
||||
typedef ZNsMain::ZtCCheckRef<TTypeHelp2> ZCCheckRef2;
|
||||
|
||||
ZCLink* VP_LoopLink = mp_TailLink;
|
||||
|
||||
__for0(TypeSize, i, ml_LinkCnt)
|
||||
{
|
||||
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
|
||||
(
|
||||
VP_LoopLink->mo_Data
|
||||
, ZCCheckRef1::PassData(AO_TypeHelp1)
|
||||
, ZCCheckRef2::PassData(AO_TypeHelp2)
|
||||
);
|
||||
VP_LoopLink = VP_LoopLink->mp_PrevLink ;
|
||||
}/*
|
||||
__for0(TypeSize, i, ml_Size)*/
|
||||
}/*
|
||||
template
|
||||
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
|
||||
void IterElemRev
|
||||
( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 )
|
||||
###############################################################################*/
|
||||
|
||||
|
||||
ZCLink* GetHeadLinkPtr(){return mp_HeadLink;}
|
||||
ZCLink* GetTailLinkPtr(){return mp_TailLink;}
|
||||
|
@ -769,6 +769,13 @@ namespace ZNsMain
|
||||
}/*
|
||||
TypeSize capacity() const*/
|
||||
|
||||
|
||||
void ChangeCapacity(TypeSize AI_AddCut)
|
||||
{
|
||||
ml_AllSize =+ AI_AddCut;
|
||||
}/*
|
||||
void ChangeCapacity(TypeSize AI_AddCut)*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
template<typename TObjList> class ZtCBody*/
|
||||
@ -1077,6 +1084,9 @@ namespace ZNsMain
|
||||
if(this == &AO_CObjList ) return;
|
||||
if(AO_CObjList.ml_Size<1) return;
|
||||
|
||||
this-> ChangeCapacity( AO_CObjList.ml_LinkCnt) ;
|
||||
AO_CObjList.ChangeCapacity(-AO_CObjList.ml_LinkCnt) ;
|
||||
|
||||
if(AP_LinkStd==0)
|
||||
{
|
||||
if(ml_Size==0)
|
||||
@ -1144,9 +1154,7 @@ namespace ZNsMain
|
||||
{
|
||||
if(AL_CutPos==1) // 첫째 링크를 삭제.
|
||||
{
|
||||
if(ml_Size==1)
|
||||
mp_HeadLink=0;
|
||||
else
|
||||
if(ml_Size==1){ mp_HeadLink=0; }else
|
||||
{
|
||||
ZCLink::MakeRing
|
||||
(
|
||||
@ -1155,7 +1163,7 @@ namespace ZNsMain
|
||||
);
|
||||
////////////////
|
||||
}/*
|
||||
else*/
|
||||
else :::::::::::::::::::::::::::::*/
|
||||
}
|
||||
else if(AL_CutPos==ml_Size) // 끝 링크를 삭제할 때
|
||||
ZCLink::MakeRing(mp_HeadLink , AP_CutLink->mp_PrevLink);
|
||||
@ -1213,7 +1221,8 @@ namespace ZNsMain
|
||||
}/*
|
||||
else*/
|
||||
|
||||
ml_Size -= AL_CutTailPos-AL_CutHeadPos+1 ;
|
||||
TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ;
|
||||
/*++++*/ ml_Size -= VL_CutSize ;
|
||||
|
||||
// AP_CutHead 과 AP_CutTail 을 연결하여
|
||||
// 이중 원형 연결리스트가 되도록 한다.
|
||||
@ -1239,8 +1248,11 @@ namespace ZNsMain
|
||||
|
||||
#endif //_DEBUG
|
||||
|
||||
ARR_StoreList.mp_HeadLink=AP_CutHead ;
|
||||
ARR_StoreList.ml_Size =AL_CutTailPos-AL_CutHeadPos+1;
|
||||
this-> ChangeCapacity(-VL_CutSize) ;
|
||||
ARR_StoreList.ChangeCapacity( VL_CutSize) ;
|
||||
|
||||
ARR_StoreList.mp_HeadLink = AP_CutHead ;
|
||||
ARR_StoreList.ml_Size = VL_CutSize ;
|
||||
|
||||
return ARR_StoreList;
|
||||
}/*
|
||||
@ -1412,13 +1424,13 @@ namespace ZNsMain
|
||||
{
|
||||
ZtCObjList VO_StoreList;
|
||||
|
||||
CutLink ///////////////////////////////////////
|
||||
CutLink ////////////////////////////////////////
|
||||
(
|
||||
GetLinkPtr(rhs.ml_Size+1), rhs.ml_Size+1,
|
||||
GetLinkPtr( ml_Size ), ml_Size ,
|
||||
RR(VO_StoreList)
|
||||
). DeleteAll();
|
||||
////////////////////////////////////////////////
|
||||
/////////////////////////////////////////////////
|
||||
}/*
|
||||
else*/
|
||||
|
||||
@ -1452,7 +1464,11 @@ namespace ZNsMain
|
||||
TypeSize capacity() const{return mo_FreeObjt.capacity();}
|
||||
|
||||
TypeSize GetFreeSize() const
|
||||
{ return mo_FreeObjt.size(); }
|
||||
{ return mo_FreeObjt.size(); }
|
||||
|
||||
void ChangeCapacity(TypeSize AI_AddCut) const
|
||||
{ mo_FreeObjt.ChangeCapacity(AI_AddCut); }
|
||||
|
||||
|
||||
ZCLink* GetHeadLinkPtr(){return mp_HeadLink;}
|
||||
ZCLink* GetTailLinkPtr()
|
||||
|
@ -771,6 +771,13 @@ namespace ZNsMain
|
||||
}/*
|
||||
TypeSize capacity() const*/
|
||||
|
||||
|
||||
void ChangeCapacity(TypeSize AI_AddCut)
|
||||
{
|
||||
ml_AllSize =+ AI_AddCut;
|
||||
}/*
|
||||
void ChangeCapacity(TypeSize AI_AddCut)*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
template<typename TSimList> class ZtCBody*/
|
||||
@ -1722,13 +1729,13 @@ namespace ZNsMain
|
||||
|
||||
if(mp_HeadLink==0)
|
||||
{
|
||||
mp_HeadLink=rhs.mp_HeadLink;
|
||||
mp_TailLink=rhs.mp_TailLink;
|
||||
ml_Size =rhs.ml_Size ;
|
||||
mp_HeadLink= rhs.mp_HeadLink;
|
||||
mp_TailLink= rhs.mp_TailLink;
|
||||
ml_Size = rhs.ml_Size ;
|
||||
}
|
||||
else
|
||||
{
|
||||
rhs.mp_TailLink->mp_NextLink=mp_HeadLink;
|
||||
rhs.mp_TailLink->mp_NextLink = mp_HeadLink;
|
||||
|
||||
mp_HeadLink= rhs.mp_HeadLink ;
|
||||
ml_Size += rhs.ml_Size ;
|
||||
@ -1737,6 +1744,10 @@ namespace ZNsMain
|
||||
}/*
|
||||
else*/
|
||||
|
||||
|
||||
this->ChangeCapacity( rhs.ml_LinkCnt) ;
|
||||
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ;
|
||||
|
||||
rhs.mp_HeadLink=0;
|
||||
rhs.mp_TailLink=0;
|
||||
rhs.ml_Size =0;
|
||||
@ -1766,6 +1777,9 @@ namespace ZNsMain
|
||||
}/*
|
||||
else*/
|
||||
|
||||
this->ChangeCapacity( rhs.ml_LinkCnt) ;
|
||||
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ;
|
||||
|
||||
rhs.mp_HeadLink=0;
|
||||
rhs.mp_TailLink=0;
|
||||
rhs.ml_Size =0;
|
||||
@ -2134,6 +2148,12 @@ namespace ZNsMain
|
||||
}/*
|
||||
inline TypeSize GetFreeSize() const*/
|
||||
|
||||
void ChangeCapacity(TypeSize AI_AddCut) const
|
||||
{
|
||||
mo_FreeObjt.ChangeCapacity(AI_AddCut);
|
||||
}/*
|
||||
void ChangeCapacity(TypeSize AI_AddCut) const*/
|
||||
|
||||
|
||||
inline bool IsEmpty() const
|
||||
{
|
||||
|
@ -134,7 +134,7 @@ namespace ZNsMain
|
||||
_VT_ void SendFreeOut
|
||||
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : SendFreeOut(ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
|
||||
cout<<"** ZCBaseListEx10 : SendFreeOut("<<AL_NeedCnt<<", ZCLink*&, ZCLink*&)"<<endl;
|
||||
|
||||
this->ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink);
|
||||
}
|
||||
@ -146,7 +146,7 @@ namespace ZNsMain
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : SendFreeOut(ZCLink*, ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
|
||||
cout<<"** ZCBaseListEx10 : SendFreeOut(ZCLink*, "<<AL_FarNum<<", ZCLink*&, ZCLink*&)"<<endl;
|
||||
|
||||
this->ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy);
|
||||
}
|
||||
@ -167,11 +167,17 @@ namespace ZNsMain
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : RecvFreeIn(ZTypLong, AP_CutHead, AP_CutTail)"<<endl;
|
||||
cout<<"** ZCBaseListEx10 : RecvFreeIn("<<AL_CutCnt<<", AP_CutHead, AP_CutTail)"<<endl;
|
||||
|
||||
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
|
||||
}
|
||||
|
||||
_VT_ void ChangeCapacity(ZTypLong AI_AddCut)
|
||||
{
|
||||
cout<<"** ZCBaseListEx10 : ChangeCapacity("<<AI_AddCut<<")"<<endl;
|
||||
}/*
|
||||
_VT_ void ChangeCapacity(ZTypLong AI_AddCut)*/
|
||||
|
||||
private:
|
||||
};/*
|
||||
class ZCBaseListEx10 : public ZtCBaseList*/
|
||||
@ -225,7 +231,7 @@ namespace ZNsMain
|
||||
_VT_ void SendFreeOut
|
||||
(ZTypLong AL_NeedCnt, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink)
|
||||
{
|
||||
cout<<"** ZCBaseListEx11 : SendFreeOut(ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
|
||||
cout<<"** ZCBaseListEx11 : SendFreeOut("<<AL_NeedCnt<<", ZCLink*&, ZCLink*&)"<<endl;
|
||||
|
||||
this->ZCBaseList::NewLink(AL_NeedCnt, APR_HeadLink, APR_TailLink);
|
||||
}
|
||||
@ -237,7 +243,7 @@ namespace ZNsMain
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
{
|
||||
cout<<"** ZCBaseListEx11 : SendFreeOut(ZCLink*, ZTypLong, ZCLink*&, ZCLink*&)"<<endl;
|
||||
cout<<"** ZCBaseListEx11 : SendFreeOut(ZCLink*, "<<AL_FarNum<<", ZCLink*&, ZCLink*&)"<<endl;
|
||||
|
||||
this->ZCBaseList::NewLinkCopy(AP_LinkOrgin, AL_FarNum, APR_HeadCopy, APR_TailCopy);
|
||||
}
|
||||
@ -258,11 +264,17 @@ namespace ZNsMain
|
||||
)
|
||||
///////////////////////////////////////////////////////
|
||||
{
|
||||
cout<<"** ZCBaseListEx11: RecvFreeIn(ZTypLong, AP_CutHead, AP_CutTail)"<<endl;
|
||||
cout<<"** ZCBaseListEx11: RecvFreeIn("<<AL_CutCnt<<", AP_CutHead, AP_CutTail)"<<endl;
|
||||
|
||||
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail);
|
||||
}
|
||||
|
||||
_VT_ void ChangeCapacity(ZTypLong AI_AddCut)
|
||||
{
|
||||
cout<<"** ZCBaseListEx11 : ChangeCapacity("<<AI_AddCut<<")"<<endl;
|
||||
}/*
|
||||
_VT_ void ChangeCapacity(ZTypLong AI_AddCut)*/
|
||||
|
||||
private:
|
||||
};/*
|
||||
class ZCBaseListEx11 : public ZtCBaseList*/
|
||||
@ -348,7 +360,7 @@ namespace ZNsMain
|
||||
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;
|
||||
cout<<endl<<"# VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10"<<endl<<endl;
|
||||
|
||||
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
|
||||
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode);
|
||||
@ -356,14 +368,20 @@ namespace ZNsMain
|
||||
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;
|
||||
cout<<endl<<"# VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 after VO_ZCBaseListEx10.AddTail() 2 times"<<endl<<endl;
|
||||
|
||||
VO_ZCBaseListEx10_2 = VO_ZCBaseListEx10 ;
|
||||
VO_ZCBaseListEx10_2.IterElement(&ShowDataInNode);
|
||||
|
||||
cout<<endl<<"# VO_ZCBaseListEx10_2.AddHead(VO_ZCBaseListEx10)"<<endl<<endl;
|
||||
|
||||
VO_ZCBaseListEx10_2.AddHead(VO_ZCBaseListEx10) ;
|
||||
VO_ZCBaseListEx10_2.IterElemRev(&ShowDataInNode);
|
||||
|
||||
|
||||
VO_ZCBaseListEx10_2.DeleteTail();
|
||||
|
||||
cout<<endl<<"# VO_ZCBaseListEx10_2DeleteTail()"<<endl<<endl;
|
||||
cout<<endl<<"# VO_ZCBaseListEx10_2 : DeleteTail()"<<endl<<endl;
|
||||
|
||||
return 0;
|
||||
}/*
|
||||
|
Reference in New Issue
Block a user