commit 2025-10-03 16:01 delete ChangeCapacity() in ZtCBaseList : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-03 16:01:49 +09:00
parent 97b1280b15
commit fee4f8aee1
4 changed files with 312 additions and 449 deletions

View File

@ -4097,12 +4097,6 @@ namespace ZNsMain
}/* }/*
_NP_ TypeSize capacity() const*/ _NP_ TypeSize capacity() const*/
_NP_ void ChangeCapacity(TypeSize AI_AddCut)
{
}/*
_NP_ void ChangeCapacity(TypeSize AI_AddCut)*/
public: public:
};/* };/*
template<typename TLinkList> class ZtCBody*/ template<typename TLinkList> class ZtCBody*/
@ -5398,9 +5392,9 @@ namespace ZNsMain
public : public :
private : private :
ZCLink* mp_HeadLink; ZCLink* mp_HeadLink ;
ZCLink* mp_TailLink; ZCLink* mp_TailLink ;
TypeSize ml_LinkCnt ; TypeSize ml_LinkSize ;
private : private :
TypeChild& GetChildObj() TypeChild& GetChildObj()
@ -5621,25 +5615,12 @@ 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 :*/
private : private :
ZCLink* AddTailLink(ZCLink* AP_NewLink) ZCLink* AddTailLink(ZCLink* AP_NewLink)
{ {
if(ml_LinkCnt<1) if(ml_LinkSize<1)
{ {
mp_HeadLink = AP_NewLink; mp_HeadLink = AP_NewLink;
mp_TailLink = AP_NewLink; mp_TailLink = AP_NewLink;
@ -5647,14 +5628,14 @@ namespace ZNsMain
ZCLink::MakeRing ZCLink::MakeRing
( mp_HeadLink, mp_TailLink ) ; ( mp_HeadLink, mp_TailLink ) ;
ml_LinkCnt= 1; return AP_NewLink; ml_LinkSize= 1; return AP_NewLink;
}/* }/*
if(ml_LinkCnt<1)*/ if(ml_LinkSize<1)*/
ZCLink::JoinLink(mp_TailLink, AP_NewLink) ; ZCLink::JoinLink(mp_TailLink, AP_NewLink) ;
ZCLink::MakeRing(mp_HeadLink, AP_NewLink) ; ZCLink::MakeRing(mp_HeadLink, AP_NewLink) ;
mp_TailLink = AP_NewLink; ++ml_LinkCnt ; mp_TailLink = AP_NewLink; ++ml_LinkSize ;
return AP_NewLink; /*::::::::::::::::::::*/ return AP_NewLink; /*::::::::::::::::::::*/
}/* }/*
@ -5662,7 +5643,7 @@ namespace ZNsMain
ZCLink* AddHeadLink(ZCLink* AP_NewLink) ZCLink* AddHeadLink(ZCLink* AP_NewLink)
{ {
if(ml_LinkCnt<1) if(ml_LinkSize<1)
{ {
mp_HeadLink = AP_NewLink; mp_HeadLink = AP_NewLink;
mp_TailLink = AP_NewLink; mp_TailLink = AP_NewLink;
@ -5670,14 +5651,14 @@ namespace ZNsMain
ZCLink::MakeRing ZCLink::MakeRing
( mp_HeadLink, mp_TailLink ) ; ( mp_HeadLink, mp_TailLink ) ;
ml_LinkCnt= 1; return AP_NewLink; ml_LinkSize= 1; return AP_NewLink;
}/* }/*
if(ml_LinkCnt<1)*/ if(ml_LinkSize<1)*/
ZCLink::JoinLink(AP_NewLink, mp_HeadLink) ; ZCLink::JoinLink(AP_NewLink, mp_HeadLink) ;
ZCLink::MakeRing(AP_NewLink, mp_TailLink) ; ZCLink::MakeRing(AP_NewLink, mp_TailLink) ;
mp_HeadLink = AP_NewLink; ++ml_LinkCnt ; mp_HeadLink = AP_NewLink; ++ml_LinkSize ;
return AP_NewLink; /*::::::::::::::::::::*/ return AP_NewLink; /*::::::::::::::::::::*/
}/* }/*
@ -5691,7 +5672,7 @@ namespace ZNsMain
{ {
mp_HeadLink = 0 ; mp_HeadLink = 0 ;
mp_TailLink = 0 ; mp_TailLink = 0 ;
ml_LinkCnt = 0 ; ml_LinkSize = 0 ;
}/* }/*
ZtCBaseList()*/ ZtCBaseList()*/
@ -5699,7 +5680,7 @@ namespace ZNsMain
{ {
mp_HeadLink = 0 ; mp_HeadLink = 0 ;
mp_TailLink = 0 ; mp_TailLink = 0 ;
ml_LinkCnt = 0 ; ml_LinkSize = 0 ;
*this = (rhs); *this = (rhs);
}/* }/*
@ -5731,7 +5712,7 @@ namespace ZNsMain
); );
/////////////////////////////////////////////////// ///////////////////////////////////////////////////
ml_LinkCnt -= VL_MinusSize; ml_LinkSize -= VL_MinusSize;
} }
else if(VL_MinusSize<0) else if(VL_MinusSize<0)
{ {
@ -5746,7 +5727,7 @@ namespace ZNsMain
); );
/////////////////////////////////////////////////// ///////////////////////////////////////////////////
if(ml_LinkCnt>0) if(ml_LinkSize>0)
{ {
ZCLink::JoinLink(mp_TailLink, VP_HeadLink); ZCLink::JoinLink(mp_TailLink, VP_HeadLink);
ZCLink::MakeRing(mp_HeadLink, VP_TailLink); ZCLink::MakeRing(mp_HeadLink, VP_TailLink);
@ -5762,7 +5743,7 @@ namespace ZNsMain
}/* }/*
else*/ else*/
ml_LinkCnt += (-VL_MinusSize); ml_LinkSize += (-VL_MinusSize);
}/* }/*
else if(VL_MinusSize<0)*/ else if(VL_MinusSize<0)*/
@ -5786,14 +5767,14 @@ namespace ZNsMain
void DeleteAll() void DeleteAll()
{ {
if(ml_LinkCnt<1) return; if(ml_LinkSize<1) return;
RecvFreeIn RecvFreeIn
(ml_LinkCnt, mp_HeadLink, mp_TailLink); (ml_LinkSize, mp_HeadLink, mp_TailLink);
mp_HeadLink =0 ; mp_HeadLink =0 ;
mp_TailLink =0 ; mp_TailLink =0 ;
ml_LinkCnt =0 ; ml_LinkSize =0 ;
}/* }/*
void DeleteAll()*/ void DeleteAll()*/
@ -5864,18 +5845,18 @@ namespace ZNsMain
void DeleteHead() void DeleteHead()
{ {
if(ml_LinkCnt<1) return; if(ml_LinkSize<1) return;
ZCLink* VP_TempLink = mp_HeadLink ; ZCLink* VP_TempLink = mp_HeadLink ;
mp_HeadLink = mp_HeadLink->mp_NextLink ; mp_HeadLink = mp_HeadLink->mp_NextLink ;
RecvFreeIn(VP_TempLink); RecvFreeIn(VP_TempLink);
if(--ml_LinkCnt<1) if(--ml_LinkSize<1)
{ {
mp_HeadLink = mp_TailLink =0; return; mp_HeadLink = mp_TailLink =0; return;
}/* }/*
if(--ml_LinkCnt<1)*/ if(--ml_LinkSize<1)*/
ZCLink::MakeRing(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
@ -5884,18 +5865,18 @@ namespace ZNsMain
void DeleteTail() void DeleteTail()
{ {
if(ml_LinkCnt<1) return; if(ml_LinkSize<1) return;
ZCLink* VP_TempLink = mp_TailLink ; ZCLink* VP_TempLink = mp_TailLink ;
mp_TailLink = mp_TailLink->mp_PrevLink ; mp_TailLink = mp_TailLink->mp_PrevLink ;
RecvFreeIn(VP_TempLink); RecvFreeIn(VP_TempLink);
if(--ml_LinkCnt<1) if(--ml_LinkSize<1)
{ {
mp_HeadLink = mp_TailLink =0; return; mp_HeadLink = mp_TailLink =0; return;
}/* }/*
if(--ml_LinkCnt<1)*/ if(--ml_LinkSize<1)*/
ZCLink::MakeRing(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
@ -5906,34 +5887,31 @@ namespace ZNsMain
{ {
// AP_StdLink 의 뒤에 rhs 를 삽입. // AP_StdLink 의 뒤에 rhs 를 삽입.
if(rhs.ml_LinkCnt<1) return *this; if(rhs.ml_LinkSize<1) return *this;
this->ChangeCapacity( rhs.ml_LinkCnt) ;
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ;
if(AP_StdLink==0) // 맨 앞에 삽입 if(AP_StdLink==0) // 맨 앞에 삽입
{ {
if(ml_LinkCnt<1) if(ml_LinkSize<1)
{ {
mp_HeadLink =rhs.mp_HeadLink; mp_HeadLink = rhs.mp_HeadLink ;
mp_TailLink =rhs.mp_TailLink; mp_TailLink = rhs.mp_TailLink ;
ml_LinkCnt =rhs.ml_LinkCnt ; ml_LinkSize = rhs.ml_LinkSize ;
} }
else // ml_LinkCnt>=1 else // ml_LinkSize>=1
{ {
ZCLink::JoinLink( rhs.mp_TailLink, mp_HeadLink ); ZCLink::JoinLink( rhs.mp_TailLink, mp_HeadLink );
ZCLink::MakeRing( rhs.mp_HeadLink, mp_TailLink ); ZCLink::MakeRing( rhs.mp_HeadLink, mp_TailLink );
mp_HeadLink =rhs.mp_HeadLink; mp_HeadLink = rhs.mp_HeadLink ;
ml_LinkCnt =rhs.ml_LinkCnt ; ml_LinkSize = rhs.ml_LinkSize ;
}/* }/*
else // ml_LinkCnt>=1*/ else // ml_LinkSize>=1*/
ml_LinkCnt += rhs.ml_LinkCnt; ml_LinkSize += rhs.ml_LinkSize;
rhs.mp_HeadLink = 0 ; rhs.mp_HeadLink = 0 ;
rhs.mp_TailLink = 0 ; rhs.mp_TailLink = 0 ;
rhs.ml_LinkCnt = 0 ; rhs.ml_LinkSize = 0 ;
return *this; return *this;
}/* }/*
@ -5948,11 +5926,11 @@ namespace ZNsMain
if(AP_StdLink==mp_TailLink) if(AP_StdLink==mp_TailLink)
{ mp_TailLink=rhs.mp_TailLink; } { mp_TailLink=rhs.mp_TailLink; }
rhs.mp_HeadLink=0; rhs.mp_HeadLink =0 ;
rhs.mp_TailLink=0; rhs.mp_TailLink =0 ;
rhs.ml_LinkCnt =0; rhs.ml_LinkSize =0 ;
ml_LinkCnt += rhs.ml_LinkCnt; return *this; ml_LinkSize += rhs.ml_LinkSize; return *this;
}/* }/*
ZtCBaseList& JoinAfter(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/ ZtCBaseList& JoinAfter(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/
@ -5965,30 +5943,27 @@ namespace ZNsMain
if(AP_StdLink==0) // 맨 뒤에 삽입 if(AP_StdLink==0) // 맨 뒤에 삽입
{ {
if(ml_LinkCnt<1) if(ml_LinkSize<1)
{ {
mp_HeadLink =rhs.mp_HeadLink; mp_HeadLink = rhs.mp_HeadLink ;
mp_TailLink =rhs.mp_TailLink; mp_TailLink = rhs.mp_TailLink ;
ml_LinkCnt =rhs.ml_LinkCnt ; ml_LinkSize = rhs.ml_LinkSize ;
} }
else // ml_LinkCnt>=1 else // ml_LinkSize>=1
{ {
ZCLink::JoinLink(mp_TailLink, rhs.mp_HeadLink ); ZCLink::JoinLink(mp_TailLink, rhs.mp_HeadLink );
ZCLink::MakeRing(mp_HeadLink, rhs.mp_TailLink ); ZCLink::MakeRing(mp_HeadLink, rhs.mp_TailLink );
mp_TailLink = rhs.mp_TailLink ; mp_TailLink = rhs.mp_TailLink ;
ml_LinkCnt += rhs.ml_LinkCnt ; ml_LinkSize += rhs.ml_LinkSize ;
}/* }/*
else // ml_LinkCnt>=1*/ else // ml_LinkSize>=1*/
this->ChangeCapacity( rhs.ml_LinkCnt) ;
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ;
rhs.mp_HeadLink=0; rhs.mp_HeadLink=0;
rhs.mp_TailLink=0; rhs.mp_TailLink=0;
rhs.ml_LinkCnt =0; rhs.ml_LinkSize=0;
ml_LinkCnt += rhs.ml_LinkCnt; return *this; ml_LinkSize += rhs.ml_LinkSize; return *this;
}/* }/*
if(AP_StdLink==0)*/ if(AP_StdLink==0)*/
@ -6001,14 +5976,11 @@ namespace ZNsMain
if(AP_StdLink==mp_HeadLink) if(AP_StdLink==mp_HeadLink)
{ mp_HeadLink = rhs.mp_HeadLink; } { mp_HeadLink = rhs.mp_HeadLink; }
this->ChangeCapacity( rhs.ml_LinkCnt) ; rhs.mp_HeadLink =0 ;
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; rhs.mp_TailLink =0 ;
rhs.ml_LinkSize =0 ;
rhs.mp_HeadLink=0; ml_LinkSize += rhs.ml_LinkSize; return *this;
rhs.mp_TailLink=0;
rhs.ml_LinkCnt =0;
ml_LinkCnt += rhs.ml_LinkCnt; return *this;
}/* }/*
ZtCBaseList& JoinBefore(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/ ZtCBaseList& JoinBefore(ZtCBaseList& rhs, ZCLink* AP_StdLink)*/
@ -6028,8 +6000,8 @@ namespace ZNsMain
operator TypeData&() { return AddTail() ; } operator TypeData&() { return AddTail() ; }
TypeSize size() const{ return ml_LinkCnt; } TypeSize size() const{ return ml_LinkSize; }
TypeSize GetSize() const{ return ml_LinkCnt; } TypeSize GetSize() const{ return ml_LinkSize; }
void push_front(TypeArg AO_ArgData){AddHead(AO_ArgData);} void push_front(TypeArg AO_ArgData){AddHead(AO_ArgData);}
@ -6050,7 +6022,7 @@ namespace ZNsMain
{ {
ZCLink* VP_LoopLink=mp_HeadLink; ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_LinkCnt) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>:: ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)(VP_LoopLink->mo_Data); GetObjRef(AO_Functor)(VP_LoopLink->mo_Data);
@ -6097,7 +6069,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink; ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_LinkCnt) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (
@ -6130,7 +6102,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink; ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_LinkCnt) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (
@ -6155,7 +6127,7 @@ namespace ZNsMain
{ {
ZCLink* VP_LoopLink=mp_TailLink; ZCLink* VP_LoopLink=mp_TailLink;
__for0(TypeSize, i, ml_LinkCnt) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>:: ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)(VP_LoopLink->mo_Data); GetObjRef(AO_Functor)(VP_LoopLink->mo_Data);
@ -6174,7 +6146,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink = mp_TailLink; ZCLink* VP_LoopLink = mp_TailLink;
__for0(TypeSize, i, ml_LinkCnt) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (
@ -6199,7 +6171,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink = mp_TailLink; ZCLink* VP_LoopLink = mp_TailLink;
__for0(TypeSize, i, ml_LinkCnt) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (

View File

@ -47,9 +47,7 @@ namespace ZNsMain
friend class ZNsMain::ZtCObjList; ///////////////////////////// friend class ZNsMain::ZtCObjList; /////////////////////////////
private: private:
TypeSize ml_AllSize ;
TypeSize ml_UseSize ; TypeSize ml_UseSize ;
ZCLink* mp_NoUseHead ; ZCLink* mp_NoUseHead ;
ZCLink* mp_NoUseTail ; ZCLink* mp_NoUseTail ;
private: private:
@ -63,7 +61,7 @@ namespace ZNsMain
if(TypeInit::ZEUseInit>0) if(TypeInit::ZEUseInit>0)
TypeInit::OnInit(*VP_TempLink, *this); TypeInit::OnInit(*VP_TempLink, *this);
return (++ml_AllSize, VP_TempLink); return VP_TempLink;
}/* }/*
if(ml_UseSize==0)*/ if(ml_UseSize==0)*/
@ -297,8 +295,6 @@ namespace ZNsMain
if(TypeInit::ZEUseInit>0) if(TypeInit::ZEUseInit>0)
TypeInit::OnInit(**APR_HeadLink, *this); TypeInit::OnInit(**APR_HeadLink, *this);
ml_AllSize += AL_MakeSize;
ZCLink* VP_MakeLink = 0 ; ZCLink* VP_MakeLink = 0 ;
ZCLink* VP_TempLink = APR_HeadLink; ZCLink* VP_TempLink = APR_HeadLink;
bool VB_IsHeapOver= false ; bool VB_IsHeapOver= false ;
@ -320,10 +316,7 @@ namespace ZNsMain
if(VP_MakeLink==0) if(VP_MakeLink==0)
{ {
ml_AllSize -= AL_MakeSize+1 ; VB_IsHeapOver = true; break;
VB_IsHeapOver = true ;
break;
}/* }/*
if(VP_MakeLink==0)*/ if(VP_MakeLink==0)*/
@ -397,14 +390,10 @@ namespace ZNsMain
VP_TailLink = VP_MakeLink = VP_TailLink = VP_MakeLink =
new ZCLink(**AP_LinkOrgin) ; new ZCLink(**AP_LinkOrgin) ;
ml_AllSize += AL_FarNum+1 ;
if(VP_MakeLink==0) if(VP_MakeLink==0)
{ {
//add codes for memory over //add codes for memory over
ml_AllSize -= AL_FarNum+1;
DeleteHeap(); return ; DeleteHeap(); return ;
}/* }/*
if(VP_MakeLink==0)*/ if(VP_MakeLink==0)*/
@ -419,7 +408,6 @@ namespace ZNsMain
if(VP_MakeLink==0) if(VP_MakeLink==0)
{ {
ml_AllSize -= AL_FarNum+1 ;
APR_TailCopy = VP_TailLink ; APR_TailCopy = VP_TailLink ;
VB_IsHeapOver= true ; VB_IsHeapOver= true ;
@ -541,9 +529,7 @@ namespace ZNsMain
ZtCBody() ZtCBody()
{ {
ml_AllSize =
ml_UseSize = 0 ; ml_UseSize = 0 ;
mp_NoUseHead = mp_NoUseHead =
mp_NoUseTail = 0 ; mp_NoUseTail = 0 ;
}/* }/*
@ -557,9 +543,7 @@ namespace ZNsMain
ZtCBody(const ZtCBody& rhs) ZtCBody(const ZtCBody& rhs)
{ {
ml_AllSize =
ml_UseSize = 0 ; ml_UseSize = 0 ;
mp_NoUseHead = mp_NoUseHead =
mp_NoUseTail = 0 ; mp_NoUseTail = 0 ;
}/* }/*
@ -591,7 +575,6 @@ namespace ZNsMain
} }
while(--VI_UseSize>0); /*++++++++*/ while(--VI_UseSize>0); /*++++++++*/
ml_AllSize -= ml_UseSize;
ml_UseSize = 0 ; ml_UseSize = 0 ;
mp_NoUseHead = mp_NoUseHead =
mp_NoUseTail = 0 ; mp_NoUseTail = 0 ;
@ -624,10 +607,7 @@ namespace ZNsMain
} }
while(--VI_DelCntCopy>0); /*++++*/ while(--VI_DelCntCopy>0); /*++++*/
ml_AllSize -= AI_DelCnt; ml_UseSize -= AI_DelCnt; return AI_DelCnt;
ml_UseSize -= AI_DelCnt;
return AI_DelCnt;
}/* }/*
TypeSize DeleteHeap(TypeSize AI_DelCnt)*/ TypeSize DeleteHeap(TypeSize AI_DelCnt)*/
@ -675,11 +655,8 @@ namespace ZNsMain
this->mp_NoUseTail = rhs.mp_NoUseTail; this->mp_NoUseTail = rhs.mp_NoUseTail;
this->ml_UseSize += rhs.ml_UseSize ; this->ml_UseSize += rhs.ml_UseSize ;
this->ml_AllSize += rhs.ml_UseSize ;
rhs.ml_AllSize -= rhs.ml_UseSize ;
rhs.ml_UseSize = 0 ; rhs.ml_UseSize = 0 ;
rhs.mp_NoUseHead = 0 ; rhs.mp_NoUseHead = 0 ;
rhs.mp_NoUseTail = 0 ; rhs.mp_NoUseTail = 0 ;
}/* }/*
@ -719,10 +696,8 @@ namespace ZNsMain
(this->mp_NoUseTail, rhs.mp_NoUseHead); (this->mp_NoUseTail, rhs.mp_NoUseHead);
} }
this->ml_AllSize += AI_FetchSize ;
this->ml_UseSize += AI_FetchSize ; this->ml_UseSize += AI_FetchSize ;
this->mp_NoUseTail = VP_RhsCutTail; this->mp_NoUseTail = VP_RhsCutTail;
rhs. ml_AllSize -= AI_FetchSize ;
rhs. ml_UseSize -= AI_FetchSize ; rhs. ml_UseSize -= AI_FetchSize ;
rhs. mp_NoUseHead = VP_RhsNewHead; rhs. mp_NoUseHead = VP_RhsNewHead;
@ -750,32 +725,12 @@ namespace ZNsMain
}/* }/*
TypeSize GetUseHeapSize() const*/ TypeSize GetUseHeapSize() const*/
TypeSize GetAllHeapSize() const
{
return ml_AllSize;
}/*
TypeSize GetAllHeapSize() const*/
TypeSize size() const TypeSize size() const
{ {
return ml_UseSize; return ml_UseSize;
}/* }/*
TypeSize size() const*/ TypeSize size() const*/
TypeSize capacity() const
{
return ml_AllSize;
}/*
TypeSize capacity() const*/
void ChangeCapacity(TypeSize AI_AddCut)
{
ml_AllSize =+ AI_AddCut;
}/*
void ChangeCapacity(TypeSize AI_AddCut)*/
public: public:
};/* };/*
template<typename TObjList> class ZtCBody*/ template<typename TObjList> class ZtCBody*/
@ -1016,7 +971,7 @@ namespace ZNsMain
/*public :*/ /*public :*/
protected: protected:
ZCLink* mp_HeadLink; ZCLink* mp_HeadLink;
TypeSize ml_Size ; mutable TypeSize ml_LinkSize; mutable
ZCFreeHeap mo_FreeObjt; ZCFreeHeap mo_FreeObjt;
protected: protected:
@ -1028,7 +983,7 @@ namespace ZNsMain
if(AP_LinkStd==0) if(AP_LinkStd==0)
{ {
if(++ml_Size==1) if(++ml_LinkSize==1)
{ {
mp_HeadLink =AP_LinkInsert ; mp_HeadLink =AP_LinkInsert ;
mp_HeadLink->mp_NextLink=mp_HeadLink ; mp_HeadLink->mp_NextLink=mp_HeadLink ;
@ -1047,7 +1002,7 @@ namespace ZNsMain
} }
else else
{ {
++ml_Size; ++ml_LinkSize;
AP_LinkInsert->mp_NextLink = AP_LinkStd->mp_NextLink ; AP_LinkInsert->mp_NextLink = AP_LinkStd->mp_NextLink ;
AP_LinkStd ->mp_NextLink = AP_LinkInsert ; AP_LinkStd ->mp_NextLink = AP_LinkInsert ;
@ -1082,17 +1037,14 @@ namespace ZNsMain
#endif //_DEBUG #endif //_DEBUG
if(this == &AO_CObjList ) return; if(this == &AO_CObjList ) return;
if(AO_CObjList.ml_Size<1) return; if(AO_CObjList.ml_LinkSize<1) return;
this-> ChangeCapacity( AO_CObjList.ml_LinkCnt) ;
AO_CObjList.ChangeCapacity(-AO_CObjList.ml_LinkCnt) ;
if(AP_LinkStd==0) if(AP_LinkStd==0)
{ {
if(ml_Size==0) if(ml_LinkSize==0)
{ {
mp_HeadLink=AO_CObjList.mp_HeadLink ; mp_HeadLink = AO_CObjList.mp_HeadLink ;
ml_Size =AO_CObjList.ml_Size ; ml_LinkSize = AO_CObjList.ml_LinkSize ;
} }
else else
{ {
@ -1101,8 +1053,8 @@ namespace ZNsMain
ZCLink::MakeRing(AO_CObjList.mp_HeadLink, mp_HeadLink->mp_PrevLink); ZCLink::MakeRing(AO_CObjList.mp_HeadLink, mp_HeadLink->mp_PrevLink);
ZCLink::JoinLink(VP_TailLink , mp_HeadLink ); ZCLink::JoinLink(VP_TailLink , mp_HeadLink );
mp_HeadLink = AO_CObjList.mp_HeadLink; mp_HeadLink = AO_CObjList.mp_HeadLink ;
ml_Size += AO_CObjList.ml_Size ; ml_LinkSize += AO_CObjList.ml_LinkSize ;
}/* }/*
else*/ else*/
} }
@ -1113,12 +1065,12 @@ namespace ZNsMain
ZCLink::JoinLink(VP_TailLink, AP_LinkStd->mp_NextLink); ZCLink::JoinLink(VP_TailLink, AP_LinkStd->mp_NextLink);
ZCLink::JoinLink(AP_LinkStd , AO_CObjList.mp_HeadLink); ZCLink::JoinLink(AP_LinkStd , AO_CObjList.mp_HeadLink);
ml_Size += AO_CObjList.ml_Size ; ml_LinkSize += AO_CObjList.ml_LinkSize ;
}/* }/*
else // AP_LinkStd!=0*/ else // AP_LinkStd!=0*/
AO_CObjList.mp_HeadLink=0; AO_CObjList.mp_HeadLink = 0;
AO_CObjList.ml_Size =0; AO_CObjList.ml_LinkSize = 0;
}/* }/*
void JoinAfter void JoinAfter
(ZtCObjList& AO_CObjList, ZCLink* AP_LinkStd, TypeSize AL_PosStd)*/ (ZtCObjList& AO_CObjList, ZCLink* AP_LinkStd, TypeSize AL_PosStd)*/
@ -1145,7 +1097,7 @@ namespace ZNsMain
ZCLink::MakeRing(mp_HeadLink , AP_CutLink->mp_PrevLink); ZCLink::MakeRing(mp_HeadLink , AP_CutLink->mp_PrevLink);
else ZCLink::JoinLink(AP_CutLink->mp_PrevLink, AP_CutLink->mp_NextLink); else ZCLink::JoinLink(AP_CutLink->mp_PrevLink, AP_CutLink->mp_NextLink);
return (--ml_Size, AP_CutLink); return (--ml_LinkSize, AP_CutLink);
}/* }/*
protected: ZCLink* CutLink(ZCLink* AP_CutLink)*/ protected: ZCLink* CutLink(ZCLink* AP_CutLink)*/
@ -1154,22 +1106,22 @@ namespace ZNsMain
{ {
if(AL_CutPos==1) // 첫째 링크를 삭제. if(AL_CutPos==1) // 첫째 링크를 삭제.
{ {
if(ml_Size==1){ mp_HeadLink=0; }else if(ml_LinkSize==1){ mp_HeadLink=0; }else
{ {
ZCLink::MakeRing ZCLink::MakeRing
( (
mp_HeadLink=mp_HeadLink->mp_NextLink, mp_HeadLink = mp_HeadLink->mp_NextLink,
AP_CutLink->mp_PrevLink AP_CutLink-> mp_PrevLink
); );
//////////////// ////////////////
}/* }/*
else :::::::::::::::::::::::::::::*/ else :::::::::::::::::::::::::::::*/
} }
else if(AL_CutPos==ml_Size) // 끝 링크를 삭제할 때 else if(AL_CutPos==ml_LinkSize) // 끝 링크를 삭제할 때
ZCLink::MakeRing(mp_HeadLink , AP_CutLink->mp_PrevLink); ZCLink::MakeRing(mp_HeadLink , AP_CutLink->mp_PrevLink);
else ZCLink::JoinLink(AP_CutLink->mp_PrevLink, AP_CutLink->mp_NextLink); else ZCLink::JoinLink(AP_CutLink->mp_PrevLink, AP_CutLink->mp_NextLink);
return (--ml_Size, AP_CutLink); return (--ml_LinkSize, AP_CutLink);
}/* }/*
ZCLink* CutLink(ZCLink* AP_CutLink, TypeSize AL_CutPos)*/ ZCLink* CutLink(ZCLink* AP_CutLink, TypeSize AL_CutPos)*/
@ -1203,7 +1155,7 @@ namespace ZNsMain
#endif // _DEBUG #endif // _DEBUG
if(AL_CutHeadPos==1 && AL_CutTailPos==ml_Size) // 모든 링크를 삭제할 때. if(AL_CutHeadPos==1 && AL_CutTailPos==ml_LinkSize) // 모든 링크를 삭제할 때.
{ {
mp_HeadLink=0; mp_HeadLink=0;
} }
@ -1211,18 +1163,18 @@ namespace ZNsMain
{ {
ZCLink::MakeRing(mp_HeadLink=AP_CutTail->mp_NextLink, AP_CutHead->mp_PrevLink); ZCLink::MakeRing(mp_HeadLink=AP_CutTail->mp_NextLink, AP_CutHead->mp_PrevLink);
} }
else if(AL_CutTailPos==ml_Size) // 잘라내려는 링크가 끝 링크를 포함할 때. else if(AL_CutTailPos==ml_LinkSize) // 잘라내려는 링크가 끝 링크를 포함할 때.
{ {
ZCLink::MakeRing(mp_HeadLink, AP_CutHead->mp_PrevLink); ZCLink::MakeRing(mp_HeadLink, AP_CutHead->mp_PrevLink);
} }
else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때. else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때.
{ {
ZCLink::JoinLink(AP_CutHead ->mp_PrevLink, AP_CutTail->mp_NextLink); ZCLink::JoinLink(AP_CutHead->mp_PrevLink, AP_CutTail->mp_NextLink);
}/* }/*
else*/ else*/
TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ; TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ;
/*++++*/ ml_Size -= VL_CutSize ; /*++++*/ ml_LinkSize -= VL_CutSize ;
// AP_CutHead 과 AP_CutTail 을 연결하여 // AP_CutHead 과 AP_CutTail 을 연결하여
// 이중 원형 연결리스트가 되도록 한다. // 이중 원형 연결리스트가 되도록 한다.
@ -1248,11 +1200,8 @@ namespace ZNsMain
#endif //_DEBUG #endif //_DEBUG
this-> ChangeCapacity(-VL_CutSize) ;
ARR_StoreList.ChangeCapacity( VL_CutSize) ;
ARR_StoreList.mp_HeadLink = AP_CutHead ; ARR_StoreList.mp_HeadLink = AP_CutHead ;
ARR_StoreList.ml_Size = VL_CutSize ; ARR_StoreList.ml_LinkSize = VL_CutSize ;
return ARR_StoreList; return ARR_StoreList;
}/* }/*
@ -1310,8 +1259,8 @@ namespace ZNsMain
ZCLink::MakeRing(VP_HeadLink, VP_TailLink); ZCLink::MakeRing(VP_HeadLink, VP_TailLink);
ARR_StoreList.mp_HeadLink=VP_HeadLink; ARR_StoreList.mp_HeadLink = VP_HeadLink;
ARR_StoreList.ml_Size =(AL_FarNum<0 ? -AL_FarNum : AL_FarNum)+1 ; ARR_StoreList.ml_LinkSize = (AL_FarNum<0 ? -AL_FarNum : AL_FarNum)+1 ;
return ARR_StoreList; return ARR_StoreList;
}/* }/*
@ -1326,7 +1275,7 @@ namespace ZNsMain
ZtCObjList& CopyThis(ZtCObjList& ARR_StoreList) const ZtCObjList& CopyThis(ZtCObjList& ARR_StoreList) const
{ {
return CopyLink(mp_HeadLink, ml_Size-1, RR(ARR_StoreList)); return CopyLink(mp_HeadLink, ml_LinkSize-1, RR(ARR_StoreList));
}/* }/*
ZtCObjList& CopyThis(ZtCObjList& ARR_StoreList) const*/ ZtCObjList& CopyThis(ZtCObjList& ARR_StoreList) const*/
@ -1344,7 +1293,7 @@ namespace ZNsMain
ZCLink::MakeRing(VP_HeadLink, VP_TailLink); ZCLink::MakeRing(VP_HeadLink, VP_TailLink);
ARR_StoreList.mp_HeadLink= VP_HeadLink ; ARR_StoreList.mp_HeadLink= VP_HeadLink ;
ARR_StoreList.ml_Size = AL_DefaultSize ; ARR_StoreList.ml_LinkSize= AL_DefaultSize ;
return ARR_StoreList; return ARR_StoreList;
}/* }/*
@ -1388,12 +1337,12 @@ namespace ZNsMain
ZtCObjList() ZtCObjList()
{ {
mp_HeadLink=0; mp_HeadLink = 0;
ml_Size =0; ml_LinkSize = 0;
}/* }/*
ZtCObjList()*/ ZtCObjList()*/
ZtCObjList(const ZtCObjList& rhs):mp_HeadLink(0),ml_Size(0) ZtCObjList(const ZtCObjList& rhs):mp_HeadLink(0),ml_LinkSize(0)
{ {
*this=rhs; *this=rhs;
}/* }/*
@ -1412,25 +1361,25 @@ namespace ZNsMain
ZtCObjList& operator=(const ZtCObjList& rhs) ZtCObjList& operator=(const ZtCObjList& rhs)
{ {
if(rhs.ml_Size<1) if(rhs.ml_LinkSize<1)
{ {
return DeleteAll(); return DeleteAll();
} }
if(ml_Size<=rhs.ml_Size) if(ml_LinkSize<=rhs.ml_LinkSize)
{ {
AddDefault(rhs.ml_Size-ml_Size, ml_Size+1); AddDefault(rhs.ml_LinkSize-ml_LinkSize, ml_LinkSize+1);
} }
else // ml_Size > rhs.ml_Size else // ml_LinkSize > rhs.ml_LinkSize
{ {
ZtCObjList VO_StoreList; ZtCObjList VO_StoreList;
CutLink //////////////////////////////////////// CutLink ////////////////////////////////////////////////
( (
GetLinkPtr(rhs.ml_Size+1), rhs.ml_Size+1, GetLinkPtr(rhs.ml_LinkSize+1), rhs.ml_LinkSize+1,
GetLinkPtr( ml_Size ), ml_Size , GetLinkPtr( ml_LinkSize ), ml_LinkSize ,
RR(VO_StoreList) RR(VO_StoreList)
). DeleteAll(); ). DeleteAll();
///////////////////////////////////////////////// /////////////////////////////////////////////////////////
}/* }/*
else*/ else*/
@ -1438,14 +1387,14 @@ namespace ZNsMain
ZCLink* pRhsLink = rhs.mp_HeadLink; ZCLink* pRhsLink = rhs.mp_HeadLink;
ZCLink* pLhsLink = mp_HeadLink; ZCLink* pLhsLink = mp_HeadLink;
__for1(TypeSize, i, ml_Size) __for1(TypeSize, i, ml_LinkSize)
{ {
**pLhsLink = ** pRhsLink ; **pLhsLink = ** pRhsLink ;
pLhsLink = pLhsLink->mp_NextLink; pLhsLink = pLhsLink->mp_NextLink;
pRhsLink = pRhsLink->mp_NextLink; pRhsLink = pRhsLink->mp_NextLink;
}/* }/*
__for1(TypeSize, i, ml_Size)*/ __for1(TypeSize, i, ml_LinkSize)*/
return *this; return *this;
}/* }/*
@ -1459,16 +1408,13 @@ namespace ZNsMain
bool IsEmpty() const*/ bool IsEmpty() const*/
TypeSize GetSize () const{return ml_Size;} TypeSize GetSize () const{return ml_LinkSize;}
TypeSize size () const{return ml_Size;} TypeSize size () const{return ml_LinkSize;}
TypeSize capacity() const{return mo_FreeObjt.capacity();} TypeSize capacity() const{return size()+mo_FreeObjt.size();}
TypeSize GetFreeSize() const 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* GetHeadLinkPtr(){return mp_HeadLink;}
ZCLink* GetTailLinkPtr() ZCLink* GetTailLinkPtr()
@ -1492,7 +1438,7 @@ namespace ZNsMain
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1501,7 +1447,7 @@ namespace ZNsMain
::exit(1); return *(new Type); ::exit(1); return *(new Type);
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -1513,7 +1459,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1522,7 +1468,7 @@ namespace ZNsMain
::exit(1); return *(new Type); ::exit(1); return *(new Type);
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -1554,7 +1500,7 @@ namespace ZNsMain
( (
mp_HeadLink == 0 || mp_HeadLink == 0 ||
AL_FirstFindIndex < 1 || AL_FirstFindIndex < 1 ||
AL_FirstFindIndex > ml_Size AL_FirstFindIndex > ml_LinkSize
) ; ) ;
if(CB_IsTrue) return 0; //////////////// if(CB_IsTrue) return 0; ////////////////
@ -1566,7 +1512,7 @@ namespace ZNsMain
do ///////// do /////////
{ {
if(VP_TempLink->GetData()==AR_SearchType) return VL_FindIndex; if(VP_TempLink->GetData()==AR_SearchType) return VL_FindIndex;
if(VL_FindIndex ==ml_Size ) return 0 ; if(VL_FindIndex ==ml_LinkSize ) return 0 ;
VP_TempLink=VP_TempLink->mp_NextLink; ++VL_FindIndex; VP_TempLink=VP_TempLink->mp_NextLink; ++VL_FindIndex;
} }
@ -1604,9 +1550,9 @@ namespace ZNsMain
) const ) const
/*#############################################################################*/ /*#############################################################################*/
{ {
if(mp_HeadLink==0 || AL_FirstFindIndex<1 || AL_FirstFindIndex>ml_Size) if(mp_HeadLink==0 || AL_FirstFindIndex<1 || AL_FirstFindIndex>ml_LinkSize)
return 0; return 0;
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
TypeSize VL_FindIndex= AL_FirstFindIndex; TypeSize VL_FindIndex= AL_FirstFindIndex;
ZCLink* VP_TempLink = const_cast<ZCLink*> ZCLink* VP_TempLink = const_cast<ZCLink*>
@ -1617,7 +1563,7 @@ namespace ZNsMain
do /**/ do /**/
{ {
if(VP_TempLink ==AP_SearchLink) return VL_FindIndex; if(VP_TempLink ==AP_SearchLink) return VL_FindIndex;
if(VL_FindIndex==ml_Size ) return 0 ; if(VL_FindIndex==ml_LinkSize ) return 0 ;
VP_TempLink=VP_TempLink->mp_NextLink; ++VL_FindIndex; VP_TempLink=VP_TempLink->mp_NextLink; ++VL_FindIndex;
} }
@ -1669,7 +1615,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1678,12 +1624,12 @@ namespace ZNsMain
::exit(1); return 0; ::exit(1); return 0;
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif // _DEBUG #endif // _DEBUG
TypeSize VI_LeftDistance =AL_Index-1 ; TypeSize VI_LeftDistance =AL_Index-1 ;
TypeSize VI_RightDistance=ml_Size-AL_Index+1; TypeSize VI_RightDistance=ml_LinkSize-AL_Index+1;
TypeSize VI_ShortDistance= TypeSize VI_ShortDistance=
(VI_LeftDistance<=VI_RightDistance ? VI_LeftDistance : -VI_RightDistance); (VI_LeftDistance<=VI_RightDistance ? VI_LeftDistance : -VI_RightDistance);
@ -1695,7 +1641,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1704,12 +1650,12 @@ namespace ZNsMain
::exit(1); return 0; ::exit(1); return 0;
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif // _DEBUG #endif // _DEBUG
TypeSize VI_LeftDistance = AL_Index-1 ; TypeSize VI_LeftDistance = AL_Index-1 ;
TypeSize VI_RightDistance= ml_Size -AL_Index+1; TypeSize VI_RightDistance= ml_LinkSize -AL_Index+1;
TypeSize VI_ShortDistance= TypeSize VI_ShortDistance=
(VI_LeftDistance<=VI_RightDistance ? VI_LeftDistance : -VI_RightDistance); (VI_LeftDistance<=VI_RightDistance ? VI_LeftDistance : -VI_RightDistance);
@ -1723,9 +1669,9 @@ namespace ZNsMain
if(mp_HeadLink==0) return *this; if(mp_HeadLink==0) return *this;
mo_FreeObjt.RecvFreeIn mo_FreeObjt.RecvFreeIn
( ml_Size, mp_HeadLink, mp_HeadLink->mp_PrevLink ); ( ml_LinkSize, mp_HeadLink, mp_HeadLink->mp_PrevLink );
mp_HeadLink= 0; ml_Size= 0; return *this; mp_HeadLink= 0; ml_LinkSize= 0; return *this;
}/* }/*
ZtCObjList& DeleteAll()*/ ZtCObjList& DeleteAll()*/
@ -1814,7 +1760,7 @@ namespace ZNsMain
ZtCObjList& DeleteLink(TypeSize AL_DeletePos) ZtCObjList& DeleteLink(TypeSize AL_DeletePos)
{ {
if(AL_DeletePos<1 || this->ml_Size>AL_DeletePos) return *this; if(AL_DeletePos<1 || this->ml_LinkSize>AL_DeletePos) return *this;
Delete(this->GetLinkPtr(AL_DeletePos), AL_DeletePos); return *this; Delete(this->GetLinkPtr(AL_DeletePos), AL_DeletePos); return *this;
}/* }/*
@ -1823,7 +1769,7 @@ namespace ZNsMain
ZtCObjList& DeleteHead() ZtCObjList& DeleteHead()
{ {
if(ml_Size>0) if(ml_LinkSize>0)
#if(_CODE_NEW_) #if(_CODE_NEW_)
mo_FreeObjt.RecvFreeIn mo_FreeObjt.RecvFreeIn
( this->CutLink(mp_HeadLink) ); ( this->CutLink(mp_HeadLink) );
@ -1856,7 +1802,7 @@ namespace ZNsMain
ZtCObjList& DeleteTail() ZtCObjList& DeleteTail()
{ {
if(ml_Size>0) if(ml_LinkSize>0)
#if(_CODE_NEW_) #if(_CODE_NEW_)
mo_FreeObjt.RecvFreeIn mo_FreeObjt.RecvFreeIn
( this->CutLink(mp_HeadLink->mp_PrevLink) ); ( this->CutLink(mp_HeadLink->mp_PrevLink) );
@ -1875,7 +1821,7 @@ namespace ZNsMain
( (
AL_DefaultSize< 1 || AL_DefaultSize< 1 ||
AL_AddPos < 1 || AL_AddPos < 1 ||
AL_AddPos > ml_Size+1 AL_AddPos > ml_LinkSize+1
); );
if(CB_IsTrue) return 0; ////////////////// if(CB_IsTrue) return 0; //////////////////
@ -1949,7 +1895,7 @@ namespace ZNsMain
**VP_NewNode = AR_Type; **VP_NewNode = AR_Type;
JoinAfter JoinAfter
(VP_NewNode, GetTailLinkPtr(), ml_Size); (VP_NewNode, GetTailLinkPtr(), ml_LinkSize);
return *this ; return *this ;
}/* }/*
ZtCObjList& AddTail(TypeArg AR_Type)*/ ZtCObjList& AddTail(TypeArg AR_Type)*/
@ -1985,7 +1931,7 @@ namespace ZNsMain
#else #else
ZCLink* VP_NewLink = new ZCLink ; ZCLink* VP_NewLink = new ZCLink ;
#endif #endif
JoinAfter(VP_NewLink, GetTailLinkPtr(), ml_Size); return VP_NewLink; JoinAfter(VP_NewLink, GetTailLinkPtr(), ml_LinkSize); return VP_NewLink;
} }
@ -2006,15 +1952,18 @@ namespace ZNsMain
if(this==&rhs) return *this; if(this==&rhs) return *this;
JoinAfter(rhs.CutLink(AP_CLink), GetTailLinkPtr(), ml_Size); JoinAfter
(rhs.CutLink(AP_CLink), GetTailLinkPtr(), ml_LinkSize);
mp_HeadLink=mp_HeadLink->GetPrevPtr(); return *this; mp_HeadLink = mp_HeadLink->GetPrevPtr() ;
return *this;
}/* }/*
ZtCObjList& JoinHead(ZtCObjList& rhs, ZCLink* AP_CLink)*/ ZtCObjList& JoinHead(ZtCObjList& rhs, ZCLink* AP_CLink)*/
ZtCObjList& JoinTail(ZtCObjList& rhs) ZtCObjList& JoinTail(ZtCObjList& rhs)
{ {
if(this==&rhs) return *this; JoinAfter(rhs, GetTailLinkPtr(), ml_Size); return *this; if(this==&rhs) return *this; JoinAfter(rhs, GetTailLinkPtr(), ml_LinkSize); return *this;
}/* }/*
ZtCObjList& JoinTail(ZtCObjList& rhs)*/ ZtCObjList& JoinTail(ZtCObjList& rhs)*/
@ -2028,7 +1977,7 @@ namespace ZNsMain
( (
rhs.CutLink(AP_CLink) , rhs.CutLink(AP_CLink) ,
GetTailLinkPtr() , GetTailLinkPtr() ,
ml_Size ml_LinkSize
); );
return *this; //////////////////////////// return *this; ////////////////////////////
}/* }/*
@ -2113,10 +2062,7 @@ namespace ZNsMain
#endif // _DEBUG #endif // _DEBUG
if(AL_CutHeadPos==1 && AL_CutTailPos==ml_LinkSize) // 모든 링크를 삭제할 때.
OnDelete(AP_CutHead, AL_CutHeadPos, AP_CutTail, AL_CutTailPos);
if(AL_CutHeadPos==1 && AL_CutTailPos==ml_Size) // 모든 링크를 삭제할 때.
{ {
mp_HeadLink=0; mp_HeadLink=0;
} }
@ -2124,7 +2070,7 @@ namespace ZNsMain
{ {
ZCLink::MakeRing(mp_HeadLink=AP_CutTail->mp_NextLink, AP_CutHead->mp_PrevLink); ZCLink::MakeRing(mp_HeadLink=AP_CutTail->mp_NextLink, AP_CutHead->mp_PrevLink);
} }
else if(AL_CutTailPos==ml_Size) // 잘라내려는 링크가 끝 링크를 포함할 때. else if(AL_CutTailPos==ml_LinkSize) // 잘라내려는 링크가 끝 링크를 포함할 때.
{ {
ZCLink::MakeRing(mp_HeadLink, AP_CutHead->mp_PrevLink); ZCLink::MakeRing(mp_HeadLink, AP_CutHead->mp_PrevLink);
} }
@ -2134,28 +2080,32 @@ namespace ZNsMain
}/* }/*
else*/ else*/
ml_Size -= AL_CutTailPos-AL_CutHeadPos+1 ; TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ;
/*++++*/ ml_LinkSize -= VL_CutSize ;
/* 여기까지는
// 여기까지는 CutLink(ZCLink*,TypeSize,ZCLink*,TypeSize,ZtCObjList&) 와 같다. 이후에 CutLink() 에서는 CutLink(ZCLink*, TypeSize, ZCLink*, TypeSize, ZtCObjList&)
// ARR_StoreList 가 비어 있는 것으로 간주하지만, CutLinkOut() 는 ARR_StoreList 이 비어 있지
// 않은 경우에도 대비한다.
if(ARR_StoreList.ml_Size<1) 와 같다. 이후에 CutLink() 에서는 ARR_StoreList 가 비어 있는 것으로
간주하지만, CutLinkOut() 는 ARR_StoreList 이 비어 있지 않은 경우에
도 대비한다.
*/
if(ARR_StoreList.ml_LinkSize<1)
{ {
// AP_CutHead 과 AP_CutTail 을 연결하여 이중 원형 연결리스트가 되도록 한다. // AP_CutHead 과 AP_CutTail 을 연결하여 이중 원형 연결리스트가 되도록 한다.
ZCLink::MakeRing(AP_CutHead, AP_CutTail); ZCLink::MakeRing(AP_CutHead, AP_CutTail);
ARR_StoreList.mp_HeadLink=AP_CutHead ; ARR_StoreList.mp_HeadLink = AP_CutHead ;
ARR_StoreList.ml_Size =AL_CutTailPos-AL_CutHeadPos+1; ARR_StoreList.ml_LinkSize = AL_CutTailPos-AL_CutHeadPos+1;
} }
else else
{ {
ZCLink::JoinLink(ARR_StoreList.mp_HeadLink->mp_PrevLink, AP_CutHead); ZCLink::JoinLink(ARR_StoreList.mp_HeadLink->mp_PrevLink, AP_CutHead);
ZCLink::MakeRing(ARR_StoreList.mp_HeadLink , AP_CutTail); ZCLink::MakeRing(ARR_StoreList.mp_HeadLink , AP_CutTail);
ARR_StoreList.ml_Size += AL_CutTailPos-AL_CutHeadPos+1 ; ARR_StoreList.ml_LinkSize += AL_CutTailPos-AL_CutHeadPos+1 ;
}/* }/*
else*/ else*/
@ -2173,7 +2123,7 @@ namespace ZNsMain
operator Type&() operator Type&()
{ {
return AddDefault(1, ml_Size+1)->GetData(); return AddDefault(1, ml_LinkSize+1)->GetData();
}/* }/*
operator Type&()*/ operator Type&()*/
@ -2182,7 +2132,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AI_Index<1 || AI_Index>ml_Size) if(AI_Index<1 || AI_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -2191,7 +2141,7 @@ namespace ZNsMain
::exit(1); ::exit(1);
}/* }/*
if(AI_Index<1 || AI_Index>ml_Size)*/ if(AI_Index<1 || AI_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -2204,7 +2154,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AI_Index<1 || AI_Index>ml_Size) if(AI_Index<1 || AI_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -2213,7 +2163,7 @@ namespace ZNsMain
::exit(1); ::exit(1);
}/* }/*
if(AI_Index<1 || AI_Index>ml_Size)*/ if(AI_Index<1 || AI_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -2317,7 +2267,7 @@ namespace ZNsMain
ZtCObjList& Rotate(TypeSize AL_RotateNum) ZtCObjList& Rotate(TypeSize AL_RotateNum)
{ {
if(ml_Size>0) mp_HeadLink = if(ml_LinkSize>0) mp_HeadLink =
mp_HeadLink->GetNextPrevPtr(AL_RotateNum); mp_HeadLink->GetNextPrevPtr(AL_RotateNum);
return *this; return *this;
@ -2325,23 +2275,23 @@ namespace ZNsMain
ZtCObjList& Rotate(TypeSize AL_RotateNum)*/ ZtCObjList& Rotate(TypeSize AL_RotateNum)*/
ZtCObjList& Rotate () ZtCObjList& Rotate ()
{ if(ml_Size>0) mp_HeadLink = mp_HeadLink->mp_NextLink ; return *this; } { if(ml_LinkSize>0) mp_HeadLink = mp_HeadLink->mp_NextLink ; return *this; }
ZtCObjList& RotateBack() ZtCObjList& RotateBack()
{ if(ml_Size>0) mp_HeadLink = mp_HeadLink->mp_PrevLink ; return *this; } { if(ml_LinkSize>0) mp_HeadLink = mp_HeadLink->mp_PrevLink ; return *this; }
template<typename TFunctor> void IterElement(TFunctor AO_Functor) template<typename TFunctor> void IterElement(TFunctor AO_Functor)
{ {
ZCLink* VP_LoopLink=mp_HeadLink; ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>:: ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)( VP_LoopLink->mo_Data ); GetObjRef(AO_Functor)( VP_LoopLink->mo_Data );
VP_LoopLink = VP_LoopLink->mp_NextLink ; VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/* }/*
__for0(TypeSize, i, ml_Size)*/ __for0(TypeSize, i, ml_LinkSize)*/
}/* }/*
template<typename TFunctor> void IterElement(TFunctor AO_Functor) */ template<typename TFunctor> void IterElement(TFunctor AO_Functor) */
@ -2354,7 +2304,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink; ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (
@ -2364,7 +2314,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_NextLink ; VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/* }/*
__for0(TypeSize, i, ml_Size)*/ __for0(TypeSize, i, ml_LinkSize)*/
}/* }/*
template<typename TFunctor, typename TTypeHelp> template<typename TFunctor, typename TTypeHelp>
void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */ void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
@ -2381,7 +2331,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink; ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (
@ -2393,7 +2343,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_NextLink ; VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/* }/*
__for0(TypeSize, i, ml_Size)*/ __for0(TypeSize, i, ml_LinkSize)*/
}/* }/*
template template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 > < typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
@ -2409,14 +2359,14 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink; ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef ZtCTypeData<TFunctor>::GetObjRef
(AO_Functor)(VP_LoopLink->mo_Data, AR_TypeHelp); (AO_Functor)(VP_LoopLink->mo_Data, AR_TypeHelp);
VP_LoopLink = VP_LoopLink->mp_NextLink ; VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/* }/*
__for0(TypeSize, i, ml_Size)*/ __for0(TypeSize, i, ml_LinkSize)*/
}/* }/*
template<typename TFunctor, typename TTypeHelp> template<typename TFunctor, typename TTypeHelp>
void IterElemRef(TFunctor AO_Functor, TTypeHelp& AR_TypeHelp) */ void IterElemRef(TFunctor AO_Functor, TTypeHelp& AR_TypeHelp) */
@ -2432,14 +2382,14 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink; ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_Size) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( VP_LoopLink->mo_Data, AR_TypeHelp1, AR_TypeHelp2 ); ( VP_LoopLink->mo_Data, AR_TypeHelp1, AR_TypeHelp2 );
VP_LoopLink = VP_LoopLink->mp_NextLink ; VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/* }/*
__for0(TypeSize, i, ml_Size)*/ __for0(TypeSize, i, ml_LinkSize)*/
}/* }/*
template template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 > < typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
@ -2455,14 +2405,14 @@ namespace ZNsMain
if(size()<1) return; ZCLink* if(size()<1) return; ZCLink*
VP_LoopLink = mp_HeadLink->mp_PrevLink; VP_LoopLink = mp_HeadLink->mp_PrevLink;
__for0(TypeSize, i, ml_Size) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>:: ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)( VP_LoopLink->mo_Data ); GetObjRef(AO_Functor)( VP_LoopLink->mo_Data );
VP_LoopLink = VP_LoopLink->mp_PrevLink ; VP_LoopLink = VP_LoopLink->mp_PrevLink ;
}/* }/*
__for0(TypeSize, i, ml_Size)*/ __for0(TypeSize, i, ml_LinkSize)*/
}/* }/*
template<typename TFunctor> void IterElemRev(TFunctor AO_Functor) */ template<typename TFunctor> void IterElemRev(TFunctor AO_Functor) */
@ -2475,7 +2425,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink = mp_HeadLink->mp_PrevLink ; ZCLink* VP_LoopLink = mp_HeadLink->mp_PrevLink ;
__for0(TypeSize, i, ml_Size) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (
@ -2485,7 +2435,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_PrevLink ; VP_LoopLink = VP_LoopLink->mp_PrevLink ;
}/* }/*
__for0(TypeSize, i, ml_Size)*/ __for0(TypeSize, i, ml_LinkSize)*/
}/* }/*
template<typename TFunctor, typename TTypeHelp> template<typename TFunctor, typename TTypeHelp>
void IterElemRev(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */ void IterElemRev(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
@ -2504,7 +2454,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink = mp_HeadLink->mp_PrevLink ; ZCLink* VP_LoopLink = mp_HeadLink->mp_PrevLink ;
__for0(TypeSize, i, ml_Size) __for0(TypeSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (
@ -2516,7 +2466,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_PrevLink ; VP_LoopLink = VP_LoopLink->mp_PrevLink ;
}/* }/*
__for0(TypeSize, i, ml_Size)*/ __for0(TypeSize, i, ml_LinkSize)*/
}/* }/*
template template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 > < typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
@ -2722,25 +2672,25 @@ namespace ZNsMain
ZCIterator begin() ZCIterator begin()
{ {
return ZCIterator(mp_HeadLink, (ml_Size>0 ? 1 : 0) ); return ZCIterator(mp_HeadLink, (ml_LinkSize>0 ? 1 : 0) );
}/* }/*
ZCIterator begin()*/ ZCIterator begin()*/
ZCIterator end() ZCIterator end()
{ {
return ZCIterator(mp_HeadLink, (ml_Size>0 ? ml_Size+1 : 0) ); return ZCIterator(mp_HeadLink, (ml_LinkSize>0 ? ml_LinkSize+1 : 0) );
}/* }/*
ZCIterator end()*/ ZCIterator end()*/
const ZCIterator begin() const const ZCIterator begin() const
{ {
return ZCIterator(mp_HeadLink, (ml_Size>0 ? 1 : 0) ); return ZCIterator(mp_HeadLink, (ml_LinkSize>0 ? 1 : 0) );
}/* }/*
const ZCIterator begin() const*/ const ZCIterator begin() const*/
const ZCIterator end() const const ZCIterator end() const
{ {
return ZCIterator(mp_HeadLink, (ml_Size>0 ? ml_Size+1 : 0) ); return ZCIterator(mp_HeadLink, (ml_LinkSize>0 ? ml_LinkSize+1 : 0) );
}/* }/*
const ZCIterator end() const*/ const ZCIterator end() const*/

View File

@ -47,9 +47,7 @@ namespace ZNsMain
friend class ZNsMain::ZtCSimList; ///////////////////////////// friend class ZNsMain::ZtCSimList; /////////////////////////////
private: private:
TypeSize ml_AllSize ;
TypeSize ml_UseSize ; TypeSize ml_UseSize ;
ZCLink* mp_NoUseHead ; ZCLink* mp_NoUseHead ;
ZCLink* mp_NoUseTail ; ZCLink* mp_NoUseTail ;
private: private:
@ -63,7 +61,7 @@ namespace ZNsMain
if(TypeInit::ZEUseInit>0) if(TypeInit::ZEUseInit>0)
TypeInit::OnInit(*VP_TempLink, *this); TypeInit::OnInit(*VP_TempLink, *this);
return (++ml_AllSize, VP_TempLink); return VP_TempLink;
}/* }/*
if(ml_UseSize==0)*/ if(ml_UseSize==0)*/
@ -298,8 +296,6 @@ namespace ZNsMain
if(TypeInit::ZEUseInit>0) if(TypeInit::ZEUseInit>0)
TypeInit::OnInit(**APR_HeadLink, *this); TypeInit::OnInit(**APR_HeadLink, *this);
ml_AllSize += AL_MakeSize;
ZCLink* VP_MakeLink = 0 ; ZCLink* VP_MakeLink = 0 ;
ZCLink* VP_TempLink = APR_HeadLink; ZCLink* VP_TempLink = APR_HeadLink;
bool VB_IsHeapOver= false ; bool VB_IsHeapOver= false ;
@ -321,10 +317,7 @@ namespace ZNsMain
if(VP_MakeLink==0) if(VP_MakeLink==0)
{ {
ml_AllSize -= AL_MakeSize+1 ; VB_IsHeapOver = true; break;
VB_IsHeapOver = true ;
break;
}/* }/*
if(VP_MakeLink==0)*/ if(VP_MakeLink==0)*/
@ -399,14 +392,10 @@ namespace ZNsMain
VP_TailLink = VP_MakeLink = VP_TailLink = VP_MakeLink =
new ZCLink(**AP_LinkOrgin) ; new ZCLink(**AP_LinkOrgin) ;
ml_AllSize += AL_FarNum+1 ;
if(VP_MakeLink==0) if(VP_MakeLink==0)
{ {
//add codes for memory over //add codes for memory over
ml_AllSize -= AL_FarNum+1;
DeleteHeap(); return ; DeleteHeap(); return ;
}/* }/*
if(VP_MakeLink==0)*/ if(VP_MakeLink==0)*/
@ -421,7 +410,6 @@ namespace ZNsMain
if(VP_MakeLink==0) if(VP_MakeLink==0)
{ {
ml_AllSize -= AL_FarNum+1 ;
APR_TailCopy = VP_TailLink ; APR_TailCopy = VP_TailLink ;
VB_IsHeapOver= true ; VB_IsHeapOver= true ;
@ -543,9 +531,7 @@ namespace ZNsMain
ZtCBody() ZtCBody()
{ {
ml_AllSize =
ml_UseSize = 0 ; ml_UseSize = 0 ;
mp_NoUseHead = mp_NoUseHead =
mp_NoUseTail = 0 ; mp_NoUseTail = 0 ;
}/* }/*
@ -559,9 +545,7 @@ namespace ZNsMain
ZtCBody(const ZtCBody& rhs) ZtCBody(const ZtCBody& rhs)
{ {
ml_AllSize =
ml_UseSize = 0 ; ml_UseSize = 0 ;
mp_NoUseHead = mp_NoUseHead =
mp_NoUseTail = 0 ; mp_NoUseTail = 0 ;
}/* }/*
@ -592,7 +576,6 @@ namespace ZNsMain
} }
while(--VI_UseSize>0); /*++++++++*/ while(--VI_UseSize>0); /*++++++++*/
ml_AllSize -= ml_UseSize;
ml_UseSize = 0 ; ml_UseSize = 0 ;
mp_NoUseHead = mp_NoUseHead =
mp_NoUseTail = 0 ; mp_NoUseTail = 0 ;
@ -625,10 +608,7 @@ namespace ZNsMain
} }
while(--VI_DelCntCopy>0); /*+++++*/ while(--VI_DelCntCopy>0); /*+++++*/
ml_AllSize -= AI_DelCnt; ml_UseSize -= AI_DelCnt; return AI_DelCnt;
ml_UseSize -= AI_DelCnt;
return AI_DelCnt;
}/* }/*
TypeSize DeleteHeap(TypeSize AI_DelCnt)*/ TypeSize DeleteHeap(TypeSize AI_DelCnt)*/
@ -676,11 +656,8 @@ namespace ZNsMain
this->mp_NoUseTail = rhs.mp_NoUseTail; this->mp_NoUseTail = rhs.mp_NoUseTail;
this->ml_UseSize += rhs.ml_UseSize ; this->ml_UseSize += rhs.ml_UseSize ;
this->ml_AllSize += rhs.ml_UseSize ;
rhs.ml_AllSize -= rhs.ml_UseSize ;
rhs.ml_UseSize = 0 ; rhs.ml_UseSize = 0 ;
rhs.mp_NoUseHead = 0 ; rhs.mp_NoUseHead = 0 ;
rhs.mp_NoUseTail = 0 ; rhs.mp_NoUseTail = 0 ;
}/* }/*
@ -720,11 +697,9 @@ namespace ZNsMain
(this->mp_NoUseTail, rhs.mp_NoUseHead); (this->mp_NoUseTail, rhs.mp_NoUseHead);
} }
this->ml_AllSize += AI_FetchSize ;
this->ml_UseSize += AI_FetchSize ; this->ml_UseSize += AI_FetchSize ;
this->mp_NoUseTail = VP_RhsCutTail; this->mp_NoUseTail = VP_RhsCutTail;
rhs. ml_AllSize -= AI_FetchSize ;
rhs. ml_UseSize -= AI_FetchSize ; rhs. ml_UseSize -= AI_FetchSize ;
rhs. mp_NoUseHead = VP_RhsNewHead; rhs. mp_NoUseHead = VP_RhsNewHead;
@ -752,32 +727,12 @@ namespace ZNsMain
}/* }/*
TypeSize GetUseHeapSize() const*/ TypeSize GetUseHeapSize() const*/
TypeSize GetAllHeapSize() const
{
return ml_AllSize;
}/*
TypeSize GetAllHeapSize() const*/
TypeSize size() const TypeSize size() const
{ {
return ml_UseSize; return ml_UseSize;
}/* }/*
TypeSize size() const*/ TypeSize size() const*/
TypeSize capacity() const
{
return ml_AllSize;
}/*
TypeSize capacity() const*/
void ChangeCapacity(TypeSize AI_AddCut)
{
ml_AllSize =+ AI_AddCut;
}/*
void ChangeCapacity(TypeSize AI_AddCut)*/
public: public:
};/* };/*
template<typename TSimList> class ZtCBody*/ template<typename TSimList> class ZtCBody*/
@ -1013,7 +968,7 @@ namespace ZNsMain
//public : //public :
protected: protected:
TTypSize ml_Size ; TTypSize ml_LinkSize ;
ZCLink* mp_HeadLink ; ZCLink* mp_HeadLink ;
ZCLink* mp_TailLink ; mutable ZCLink* mp_TailLink ; mutable
ZCFreeHeap mo_FreeObjt ; ZCFreeHeap mo_FreeObjt ;
@ -1051,7 +1006,7 @@ namespace ZNsMain
ARR_StoreList.mp_HeadLink= VP_HeadLink ; ARR_StoreList.mp_HeadLink= VP_HeadLink ;
ARR_StoreList.mp_TailLink= VP_TailLink ; ARR_StoreList.mp_TailLink= VP_TailLink ;
ARR_StoreList.ml_Size = AL_FarNum+1 ; ARR_StoreList.ml_LinkSize= AL_FarNum+1 ;
return ARR_StoreList; return ARR_StoreList;
}/* }/*
@ -1096,7 +1051,7 @@ namespace ZNsMain
} }
//else //else
return (--ml_Size, AP_CutLink); return (--ml_LinkSize, AP_CutLink);
}/* }/*
ZCLink* CutLink(ZCLink* AP_PrevLink, ZCLink* AP_CutLink)*/ ZCLink* CutLink(ZCLink* AP_PrevLink, ZCLink* AP_CutLink)*/
@ -1130,7 +1085,7 @@ namespace ZNsMain
} }
//else //else
return (--ml_Size, AP_CutLink); return (--ml_LinkSize, AP_CutLink);
} }
//ZCLink* CutLink(ZCLink* AP_PrevLink, ZCLink* AP_CutLink, TTypSize AL_CutPos) //ZCLink* CutLink(ZCLink* AP_PrevLink, ZCLink* AP_CutLink, TTypSize AL_CutPos)
@ -1172,11 +1127,12 @@ namespace ZNsMain
} }
else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때. else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때.
{ {
AP_CutHeadPrev->mp_NextLink=AP_CutTail->mp_NextLink; AP_CutHeadPrev->mp_NextLink = AP_CutTail->mp_NextLink;
} }
//else //else
ml_Size -= AL_CutTailPos-AL_CutHeadPos+1 ; TypeSize VL_CutSize = AL_CutTailPos-AL_CutHeadPos+1 ;
/*++++*/ ml_LinkSize-= VL_CutSize ;
#ifdef _DEBUG #ifdef _DEBUG
@ -1187,18 +1143,18 @@ namespace ZNsMain
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'ZtCSimList& CutLink( ZCLink* AP_CutHead, TTypSize AL_CutHeadPos,"<<std::endl; fileout<<"Error In 'ZtCSimList& CutLink( ZCLink* AP_CutHead, TTypSize AL_CutHeadPos,"<<std::endl;
fileout<<" ZCLink* AP_CutTail, TTypSize AL_CutTailPos" <<std::endl; fileout<<" ZCLink* AP_CutTail, TTypSize AL_CutTailPos" <<std::endl;
fileout<<" /**************************/ )" <<std::endl; fileout<<" /****************/ )" <<std::endl;
fileout<<"Static Object ARR_StoreList is not empty"<<std::endl; fileout<<"Static Object ARR_StoreList is not empty"<<std::endl;
fileout.close(); fileout.close();
exit(1); exit(1);
} }/*
//if(ARR_StoreList.IsEmpty()!=true) if(ARR_StoreList.IsEmpty()!=true)*/
#endif //_DEBUG #endif //_DEBUG
ARR_StoreList.mp_HeadLink=AP_CutHead; ARR_StoreList.mp_HeadLink= AP_CutHead;
ARR_StoreList.mp_TailLink=AP_CutTail; ARR_StoreList.mp_TailLink= AP_CutTail;
ARR_StoreList.ml_Size =AL_CutTailPos-AL_CutHeadPos+1; ARR_StoreList.ml_LinkSize= VL_CutSize;
return ARR_StoreList; return ARR_StoreList;
}/* }/*
@ -1225,7 +1181,7 @@ namespace ZNsMain
ARR_StoreList.mp_HeadLink= VP_HeadLink ; ARR_StoreList.mp_HeadLink= VP_HeadLink ;
ARR_StoreList.mp_TailLink= VP_TailLink ; ARR_StoreList.mp_TailLink= VP_TailLink ;
ARR_StoreList.ml_Size = AL_DefaultSize ; ARR_StoreList.ml_LinkSize= AL_DefaultSize ;
return ARR_StoreList; return ARR_StoreList;
}/* }/*
@ -1238,7 +1194,7 @@ namespace ZNsMain
ZtCSimList() ZtCSimList()
{ {
ml_Size =0; ml_LinkSize=0;
mp_HeadLink=0; mp_HeadLink=0;
mp_TailLink=0; mp_TailLink=0;
}/* }/*
@ -1246,7 +1202,7 @@ namespace ZNsMain
ZtCSimList(TypeArg AR_Type) ZtCSimList(TypeArg AR_Type)
{ {
ml_Size =0; ml_LinkSize=0;
mp_HeadLink=0; mp_HeadLink=0;
mp_TailLink=0; mp_TailLink=0;
@ -1256,30 +1212,30 @@ namespace ZNsMain
ZtCSimList(const ZtCSimList& rhs) ZtCSimList(const ZtCSimList& rhs)
{ {
ml_Size =0; ml_LinkSize=0;
mp_HeadLink=0; mp_HeadLink=0;
mp_TailLink=0; mp_TailLink=0;
ZtCSimList VO_StoreList; ZtCSimList VO_StoreList;
JoinHead( CopyLink(rhs.mp_HeadLink, rhs.ml_Size-1 ,VO_StoreList) ); JoinHead( CopyLink(rhs.mp_HeadLink, rhs.ml_LinkSize-1 ,VO_StoreList) );
}/* }/*
ZtCSimList(const ZtCSimList& rhs)*/ ZtCSimList(const ZtCSimList& rhs)*/
ZtCSimList& operator=(const ZtCSimList& rhs) ZtCSimList& operator=(const ZtCSimList& rhs)
{ {
if(&rhs ==this){return *this;} if(&rhs == this){return *this;}
{ DeleteAll(); } { DeleteAll(); }
if(rhs.ml_Size==0 ){return *this;} if(rhs.ml_LinkSize== 0 ){return *this;}
#if(_CODE_NEW_) #if(_CODE_NEW_)
CopyLink(rhs.mp_HeadLink, rhs.ml_Size-1, *this); return *this; CopyLink(rhs.mp_HeadLink, rhs.ml_LinkSize-1, *this); return *this;
#else #else
ZtCSimList VO_StoreList; ZtCSimList VO_StoreList;
JoinHead /////////////////////////// JoinHead ///////////////////////////
( (
CopyLink(rhs.mp_HeadLink, rhs.ml_Size-1, VO_StoreList) CopyLink(rhs.mp_HeadLink, rhs.ml_LinkSize-1, VO_StoreList)
); );
return *this; ////////////////////// return *this; //////////////////////
#endif #endif
@ -1303,7 +1259,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1313,7 +1269,7 @@ namespace ZNsMain
exit(1); exit(1);
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -1325,7 +1281,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1334,7 +1290,7 @@ namespace ZNsMain
fileout.close(); fileout.close();
exit(1); exit(1);
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -1366,7 +1322,7 @@ namespace ZNsMain
#endif #endif
VP_AddLink->mo_Data= AR_Type ; VP_AddLink->mo_Data= AR_Type ;
if(++ml_Size==1) // ml_Size==0 if(++ml_LinkSize==1) // ml_LinkSize==0
{ {
mp_HeadLink = mp_HeadLink =
mp_TailLink = VP_AddLink ; mp_TailLink = VP_AddLink ;
@ -1387,7 +1343,7 @@ namespace ZNsMain
{ {
ZCLink* VP_AddLink=GetCFreeHeap().SendFreeOut(); ZCLink* VP_AddLink=GetCFreeHeap().SendFreeOut();
if(++ml_Size==1) // ml_Size==0 if(++ml_LinkSize==1) // ml_LinkSize==0
{ {
mp_HeadLink = mp_HeadLink =
mp_TailLink = VP_AddLink ; mp_TailLink = VP_AddLink ;
@ -1416,7 +1372,7 @@ namespace ZNsMain
#endif #endif
VP_AddLink->mo_Data= AR_Type ; VP_AddLink->mo_Data= AR_Type ;
if(++ml_Size==1) // ml_Size==0 if(++ml_LinkSize==1) // ml_LinkSize==0
{ {
mp_HeadLink = mp_HeadLink =
mp_TailLink = VP_AddLink ; mp_TailLink = VP_AddLink ;
@ -1437,7 +1393,7 @@ namespace ZNsMain
{ {
ZCLink* VP_AddLink = GetCFreeHeap().SendFreeOut(); ZCLink* VP_AddLink = GetCFreeHeap().SendFreeOut();
if(++ml_Size==1) // ml_Size==0 if(++ml_LinkSize==1) // ml_LinkSize==0
{ {
mp_HeadLink = mp_HeadLink =
mp_TailLink = VP_AddLink ; mp_TailLink = VP_AddLink ;
@ -1605,7 +1561,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1614,7 +1570,7 @@ namespace ZNsMain
fileout.close(); fileout.close();
exit(1); exit(1);
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -1626,7 +1582,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -1635,7 +1591,7 @@ namespace ZNsMain
fileout.close(); fileout.close();
exit(1); exit(1);
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -1677,7 +1633,7 @@ namespace ZNsMain
mp_HeadLink = AP_Link ; mp_HeadLink = AP_Link ;
} }
++ml_Size; ZCLink::MakeRing(mp_HeadLink, mp_TailLink); ++ml_LinkSize; ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void JoinHead(ZCLink* AP_Link)*/ void JoinHead(ZCLink* AP_Link)*/
@ -1717,7 +1673,7 @@ namespace ZNsMain
}/* }/*
else*/ else*/
++ml_Size; ZCLink::MakeRing(mp_HeadLink, mp_TailLink); ++ml_LinkSize; ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void JoinTail(ZCLink* AP_Link)*/ void JoinTail(ZCLink* AP_Link)*/
@ -1731,26 +1687,23 @@ namespace ZNsMain
{ {
mp_HeadLink= rhs.mp_HeadLink; mp_HeadLink= rhs.mp_HeadLink;
mp_TailLink= rhs.mp_TailLink; mp_TailLink= rhs.mp_TailLink;
ml_Size = rhs.ml_Size ; ml_LinkSize= rhs.ml_LinkSize;
} }
else else
{ {
rhs.mp_TailLink->mp_NextLink = mp_HeadLink; rhs.mp_TailLink->mp_NextLink = mp_HeadLink;
mp_HeadLink= rhs.mp_HeadLink ; mp_HeadLink = rhs.mp_HeadLink ;
ml_Size += rhs.ml_Size ; ml_LinkSize += rhs.ml_LinkSize ;
ZCLink::MakeRing(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
else*/ else*/
this->ChangeCapacity( rhs.ml_LinkCnt) ;
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ;
rhs.mp_HeadLink=0; rhs.mp_HeadLink=0;
rhs.mp_TailLink=0; rhs.mp_TailLink=0;
rhs.ml_Size =0; rhs.ml_LinkSize=0;
}/* }/*
void JoinHead(ZtCSimList& rhs)*/ void JoinHead(ZtCSimList& rhs)*/
@ -1762,45 +1715,42 @@ namespace ZNsMain
if(mp_HeadLink==0) if(mp_HeadLink==0)
{ {
mp_HeadLink=rhs.mp_HeadLink; mp_HeadLink = rhs.mp_HeadLink ;
mp_TailLink=rhs.mp_TailLink; mp_TailLink = rhs.mp_TailLink ;
ml_Size =rhs.ml_Size ; ml_LinkSize = rhs.ml_LinkSize ;
} }
else else
{ {
mp_TailLink->mp_NextLink=rhs.mp_HeadLink; mp_TailLink->mp_NextLink=rhs.mp_HeadLink;
mp_TailLink =rhs.mp_TailLink; mp_TailLink =rhs.mp_TailLink;
ml_Size += rhs.ml_Size; ml_LinkSize += rhs.ml_LinkSize;
ZCLink::MakeRing(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
else*/ else*/
this->ChangeCapacity( rhs.ml_LinkCnt) ; rhs.mp_HeadLink =0 ;
rhs. ChangeCapacity(-rhs.ml_LinkCnt) ; rhs.mp_TailLink =0 ;
rhs.ml_LinkSize =0 ;
rhs.mp_HeadLink=0;
rhs.mp_TailLink=0;
rhs.ml_Size =0;
}/* }/*
void JoinTail(ZtCSimList& rhs)*/ void JoinTail(ZtCSimList& rhs)*/
void DeleteHead() void DeleteHead()
{ {
if(ml_Size==0) return; if(ml_LinkSize==0) return;
ZCLink* VP_DelLink= mp_HeadLink ; ZCLink* VP_DelLink = mp_HeadLink ;
mp_HeadLink = mp_HeadLink->mp_NextLink; /*+++*/ mp_HeadLink = mp_HeadLink->mp_NextLink;
GetCFreeHeap().RecvFreeIn(VP_DelLink); GetCFreeHeap().RecvFreeIn(VP_DelLink);
if(--ml_Size==0) if(--ml_LinkSize==0)
{ {
mp_HeadLink = mp_TailLink = 0 ; return; mp_HeadLink = mp_TailLink = 0 ; return;
}/* }/*
if(--ml_Size==0)*/ if(--ml_LinkSize==0)*/
ZCLink::MakeRing(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
@ -1810,41 +1760,51 @@ namespace ZNsMain
{ {
// AL_DelSize 개의 링크를 앞 부분에서 삭제 // AL_DelSize 개의 링크를 앞 부분에서 삭제
if(AL_DelSize < 1 ) AL_DelSize= 1 ; if(ml_LinkSize==0 || AL_DelSize<1){ return; }
if(AL_DelSize > ml_Size) AL_DelSize= ml_Size;
ZCLink* VP_CutTail = if(AL_DelSize> ml_LinkSize){ AL_DelSize=ml_LinkSize; }
mp_HeadLink->GetNextPtr(AL_DelSize-1);
ZtCSimList VO_StoreList; CutLink ///////////// if(AL_DelSize==ml_LinkSize)
( {
0, mp_HeadLink GetCFreeHeap().RecvFreeIn
, 1, VP_CutTail (ml_LinkSize, mp_HeadLink, mp_TailLink);
, AL_DelSize mp_HeadLink=0 ;
, VO_StoreList mp_TailLink=0 ;
) ml_LinkSize=0 ;
.DeleteAll();
//////////////////////////////////////////////// return;
}/*
if(AL_DelSize==ml_LinkSize)*/
ZCLink* VP_NewHead= mp_HeadLink->
GetNextPtr( AL_DelSize );
GetCFreeHeap().RecvFreeIn
(AL_DelSize, mp_HeadLink, VP_NewHead->mp_PrevLink);
mp_HeadLink = VP_NewHead ;
ml_LinkSize -= AL_DelSize ;
ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void DeleteHead(TTypSize AL_DelSize)*/ void DeleteHead(TTypSize AL_DelSize)*/
void DeleteTail() void DeleteTail()
{ {
if(ml_Size==0){return;} if(ml_LinkSize==0){return;}
ZCLink* VP_CutLink = mp_TailLink; ZCLink* VP_CutLink = mp_TailLink;
if(--ml_Size==0) if(--ml_LinkSize==0)
{ {
mp_HeadLink = mp_HeadLink =
mp_TailLink = 0 ; mp_TailLink = 0 ;
return; return;
}/* }/*
if(--ml_Size==0)*/ if(--ml_LinkSize==0)*/
mp_TailLink = mp_TailLink =
mp_HeadLink->GetNextPtr(ml_Size-1); mp_HeadLink->GetNextPtr(ml_LinkSize-1);
mp_TailLink->mp_NextLink=0 ; mp_TailLink->mp_NextLink=0 ;
GetCFreeHeap().RecvFreeIn(VP_CutLink); GetCFreeHeap().RecvFreeIn(VP_CutLink);
@ -1855,30 +1815,29 @@ namespace ZNsMain
void DeleteTail(TTypSize AL_DelSize) void DeleteTail(TTypSize AL_DelSize)
{ {
if(ml_Size==0){return;} if(ml_LinkSize==0 || AL_DelSize<1){ return; }
if(AL_DelSize> ml_Size){ AL_DelSize=ml_Size; } if(AL_DelSize> ml_LinkSize){ AL_DelSize=ml_LinkSize; }
if(AL_DelSize< 1 ){ AL_DelSize=1 ; }
if(AL_DelSize==ml_Size) if(AL_DelSize==ml_LinkSize)
{ {
GetCFreeHeap().RecvFreeIn GetCFreeHeap().RecvFreeIn
(ml_Size, mp_HeadLink, mp_TailLink); (ml_LinkSize, mp_HeadLink, mp_TailLink);
mp_HeadLink=0 ; mp_HeadLink=0 ;
mp_TailLink=0 ; mp_TailLink=0 ;
ml_Size =0 ; ml_LinkSize=0 ;
return; return;
}/* }/*
if(AL_DelSize==ml_Size)*/ if(AL_DelSize==ml_LinkSize)*/
ZCLink* VP_NewTail= mp_HeadLink-> ZCLink* VP_NewTail= mp_TailLink->
GetNextPtr( ml_Size-AL_DelSize-1 ); GetNextPtr( -AL_DelSize );
GetCFreeHeap().RecvFreeIn GetCFreeHeap().RecvFreeIn
(AL_DelSize, VP_NewTail->mp_NextLink, mp_TailLink); (AL_DelSize, VP_NewTail->mp_NextLink, mp_TailLink);
mp_TailLink = VP_NewTail ; mp_TailLink = VP_NewTail ;
ml_Size -= AL_DelSize ; ml_LinkSize -= AL_DelSize ;
ZCLink::MakeRing(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
@ -1908,7 +1867,7 @@ namespace ZNsMain
void Delete(ZCLink* AP_PrevLink, ZCLink* AP_CutLink, TTypSize AL_CutPos) void Delete(ZCLink* AP_PrevLink, ZCLink* AP_CutLink, TTypSize AL_CutPos)
{ {
#ifdef _DEBUG #ifdef _DEBUG
if ( ml_Size==0 || if ( ml_LinkSize==0 ||
Find(AP_CutLink) !=AL_CutPos || Find(AP_CutLink) !=AL_CutPos ||
Find(AP_PrevLink)!=(AL_CutPos-1) Find(AP_PrevLink)!=(AL_CutPos-1)
) )
@ -1937,7 +1896,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if ( ml_Size==0 || if ( ml_LinkSize==0 ||
AL_CutHeadPos>AL_CutTailPos || AL_CutHeadPos>AL_CutTailPos ||
Find(AP_CutHead)!=AL_CutHeadPos || Find(AP_CutHead)!=AL_CutHeadPos ||
Find(AP_CutTail)!=AL_CutTailPos || Find(AP_CutTail)!=AL_CutTailPos ||
@ -1976,14 +1935,14 @@ namespace ZNsMain
void DeleteAll() void DeleteAll()
{ {
if(ml_Size==0) {return;} if(ml_LinkSize==0) {return;}
GetCFreeHeap().RecvFreeIn GetCFreeHeap().RecvFreeIn
(ml_Size, mp_HeadLink, mp_TailLink); (ml_LinkSize, mp_HeadLink, mp_TailLink);
mp_HeadLink = mp_HeadLink =
mp_TailLink =0; mp_TailLink =0 ;
ml_Size =0; ml_LinkSize =0 ;
}/* }/*
void DeleteAll()*/ void DeleteAll()*/
@ -2004,7 +1963,7 @@ namespace ZNsMain
( (
mp_HeadLink ==0 || mp_HeadLink ==0 ||
AL_FirstFindIndex < 1 || AL_FirstFindIndex < 1 ||
AL_FirstFindIndex > ml_Size AL_FirstFindIndex > ml_LinkSize
); );
if(CB_DoStop) {return 0;} ///////// if(CB_DoStop) {return 0;} /////////
@ -2019,7 +1978,7 @@ namespace ZNsMain
{ return VL_FindIndex; } { return VL_FindIndex; }
/*+++++++++++++++++++++++++++*/ /*+++++++++++++++++++++++++++*/
if(VL_FindIndex==ml_Size){return 0; } if(VL_FindIndex==ml_LinkSize){return 0; }
VP_TempLink = VP_TempLink->mp_NextLink; VP_TempLink = VP_TempLink->mp_NextLink;
VL_FindIndex= VL_FindIndex + 1 ; VL_FindIndex= VL_FindIndex + 1 ;
@ -2032,7 +1991,7 @@ namespace ZNsMain
{ {
const bool CB_DoStop = const bool CB_DoStop =
( (
mp_HeadLink==0 || AL_FirstFindIndex<1 || AL_FirstFindIndex>ml_Size mp_HeadLink==0 || AL_FirstFindIndex<1 || AL_FirstFindIndex>ml_LinkSize
); );
if(CB_DoStop) return 0; if(CB_DoStop) return 0;
@ -2047,7 +2006,7 @@ namespace ZNsMain
{return VL_FindIndex;} {return VL_FindIndex;}
/*+++++++++++++++++++++++++*/ /*+++++++++++++++++++++++++*/
if(VL_FindIndex==ml_Size){return 0; } if(VL_FindIndex==ml_LinkSize){return 0; }
VP_TempLink = VP_TempLink->mp_NextLink; VP_TempLink = VP_TempLink->mp_NextLink;
VL_FindIndex= VL_FindIndex + 1 ; VL_FindIndex= VL_FindIndex + 1 ;
@ -2077,7 +2036,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -2086,7 +2045,7 @@ namespace ZNsMain
exit(1); exit(1);
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -2099,7 +2058,7 @@ namespace ZNsMain
{ {
#ifdef _DEBUG #ifdef _DEBUG
if(AL_Index<1 || AL_Index>ml_Size) if(AL_Index<1 || AL_Index>ml_LinkSize)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -2108,7 +2067,7 @@ namespace ZNsMain
exit(1); exit(1);
}/* }/*
if(AL_Index<1 || AL_Index>ml_Size)*/ if(AL_Index<1 || AL_Index>ml_LinkSize)*/
#endif //_DEBUG #endif //_DEBUG
@ -2126,19 +2085,19 @@ namespace ZNsMain
inline TTypSize GetSize() const inline TTypSize GetSize() const
{ {
return ml_Size; return ml_LinkSize;
}/* }/*
inline TTypSize GetSize() const*/ inline TTypSize GetSize() const*/
inline TTypSize size() const inline TTypSize size() const
{ {
return ml_Size; return ml_LinkSize;
}/* }/*
inline TTypSize size() const*/ inline TTypSize size() const*/
inline TTypSize capacity() const inline TTypSize capacity() const
{ {
return mo_FreeObjt.capacity(); return size()+mo_FreeObjt.size();
}/* }/*
inline TTypSize capacity() const*/ inline TTypSize capacity() const*/
@ -2148,12 +2107,6 @@ namespace ZNsMain
}/* }/*
inline TypeSize GetFreeSize() const*/ 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 inline bool IsEmpty() const
{ {
@ -2174,14 +2127,14 @@ namespace ZNsMain
{ {
ZCLink* VP_LoopLink = mp_HeadLink; ZCLink* VP_LoopLink = mp_HeadLink;
__for1(TTypSize, VL_Index, ml_Size) __for1(TTypSize, VL_Index, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>:: ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)(VP_LoopLink->mo_Data); GetObjRef(AO_Functor)(VP_LoopLink->mo_Data);
VP_LoopLink = VP_LoopLink->mp_NextLink; VP_LoopLink = VP_LoopLink->mp_NextLink;
}/* }/*
__for1(TTypSize, VL_Index, ml_Size)*/ __for1(TTypSize, VL_Index, ml_LinkSize)*/
}/* }/*
template<typename TFunctor> void IterElement(TFunctor AO_Functor) */ template<typename TFunctor> void IterElement(TFunctor AO_Functor) */
@ -2194,7 +2147,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink=mp_HeadLink; ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TTypSize, i, ml_Size) __for0(TTypSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (
@ -2204,7 +2157,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_NextLink ; VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/* }/*
__for0(TTypSize, i, ml_Size)*/ __for0(TTypSize, i, ml_LinkSize)*/
}/* }/*
template<typename TFunctor, typename TTypeHelp> template<typename TFunctor, typename TTypeHelp>
void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */ void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
@ -2219,7 +2172,7 @@ namespace ZNsMain
ZCLink* VP_LoopLink = mp_HeadLink ; ZCLink* VP_LoopLink = mp_HeadLink ;
__for0(TTypSize, i, ml_Size) __for0(TTypSize, i, ml_LinkSize)
{ {
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor) ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
( (
@ -2231,7 +2184,7 @@ namespace ZNsMain
VP_LoopLink = VP_LoopLink->mp_NextLink ; VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/* }/*
__for0(TTypSize, i, ml_Size)*/ __for0(TTypSize, i, ml_LinkSize)*/
}/* }/*
template template
<typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 > <typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
@ -2250,9 +2203,9 @@ namespace ZNsMain
ZCLink* VP_TempBefore=VP_TempLink ; ZCLink* VP_TempBefore=VP_TempLink ;
// 순회 도중에 링크가 삭제되면 노드갯수가 변할 수 있으므로 // 순회 도중에 링크가 삭제되면 노드갯수가 변할 수 있으므로
// ml_Size 를 다른 변수에 담아 놓는다. // ml_LinkSize 를 다른 변수에 담아 놓는다.
TTypSize VL_Count=ml_Size ; TTypSize VL_Count=ml_LinkSize ;
TTypSize VL_Index=1 ; TTypSize VL_Index=1 ;
__for1(TTypSize, VL_Loop, VL_Count) __for1(TTypSize, VL_Loop, VL_Count)
@ -2299,7 +2252,7 @@ namespace ZNsMain
#ifdef _DEBUG #ifdef _DEBUG
if(ml_Size==0 || Find(AP_StdLink)==0 || AL_WorkDistance>=ml_Size || AL_WorkDistance<0) if(ml_LinkSize==0 || Find(AP_StdLink)==0 || AL_WorkDistance>=ml_LinkSize || AL_WorkDistance<0)
{ {
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app); std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl; fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
@ -2311,7 +2264,7 @@ namespace ZNsMain
fileout.close(); fileout.close();
exit(1); exit(1);
} }
/*if(ml_Size==0 || Find(AP_StdLink)==0 || AL_WorkDistance>=ml_Size || AL_WorkDistance<0)*/ /*if(ml_LinkSize==0 || Find(AP_StdLink)==0 || AL_WorkDistance>=ml_LinkSize || AL_WorkDistance<0)*/
#endif //_DEBUG #endif //_DEBUG

View File

@ -172,12 +172,6 @@ namespace ZNsMain
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail); 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: private:
};/* };/*
class ZCBaseListEx10 : public ZtCBaseList*/ class ZCBaseListEx10 : public ZtCBaseList*/
@ -269,12 +263,6 @@ namespace ZNsMain
this->ZCBaseList::DelLink(AL_CutCnt, AP_CutHead, AP_CutTail); 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: private:
};/* };/*
class ZCBaseListEx11 : public ZtCBaseList*/ class ZCBaseListEx11 : public ZtCBaseList*/