commit 2025-09-28 10:10 template parameter TTypeCRTP in ZtCBaseList : ZCppMain/ZMainHead.H

This commit is contained in:
2025-09-28 10:10:58 +09:00
parent 6c4c4a86e1
commit cf415becc0
4 changed files with 297 additions and 170 deletions

View File

@ -1023,13 +1023,23 @@ namespace ZNsMain
/////////////////////////////////////////////////////////////////////////////////////////*/ /////////////////////////////////////////////////////////////////////////////////////////*/
/*#########################################################################################
■ 2번 template parameter 가 bool TTypebUseCRTP 인데, 만약 TTypeChild 가 유효한 자료형이라
면, TTypebUseCRTP 이 true 인 것이 맞겠으나, DEBUG 등의 특수한 용도로 TTypebUseCRTP 을
false 로 설정할 수 있게 한 것이다.
-- 2025-09-28 08:41
#########################################################################################*/
template< typename TTypeChild=ZCEmpty, bool TTypebUseCRTP =false template< typename TTypeChild=ZCEmpty, bool TTypebUseCRTP =false
> >
class ZtCTypeCRTP //////////////////////////////////////////////// class ZtCTypeCRTP ////////////////////////////////////////////////
{ {
public: public:
typedef TTypeChild TypeData; typedef TTypeChild TypeData;
typedef TTypeChild TypeHigh;
public: public:
enum{ZEUseCRTP=(ZTypIntE)TTypebUseCRTP}; enum{ZEUseCRTP=(ZTypIntE)TTypebUseCRTP};
public: public:
@ -1039,6 +1049,17 @@ namespace ZNsMain
class ZtCTypeCRTP //////////////////////////////////////////////*/ class ZtCTypeCRTP //////////////////////////////////////////////*/
#if(_CODE_OLD_)
/*#########################################################################################
■ ZtCTypeCRTP2 이 필요한 곳에 ZtCTypeNowCRTP 을 사용하자. -- 2025-09-28 09:25
ZtCBaseList 에서 ZtCTypeCRTP 와 ZtCTypeNowCRTP 을 사용하고 있다.
#########################################################################################*/
template< typename TTypeChild = ZCEmpty , //////////////////// template< typename TTypeChild = ZCEmpty , ////////////////////
typename TTypeBase = ZCEmpty , typename TTypeBase = ZCEmpty ,
bool TTypebUseCRTP= false bool TTypebUseCRTP= false
@ -1047,7 +1068,6 @@ namespace ZNsMain
{ {
public: public:
typedef TTypeChild TypeData; typedef TTypeChild TypeData;
typedef TTypeChild TypeHigh;
typedef TTypeBase TypeBase; typedef TTypeBase TypeBase;
public: public:
enum{ZEUseCRTP=(ZTypIntE)TTypebUseCRTP}; enum{ZEUseCRTP=(ZTypIntE)TTypebUseCRTP};
@ -1059,6 +1079,8 @@ namespace ZNsMain
> >
class ZtCTypeCRTP2 /////////////////////////////////////////////*/ class ZtCTypeCRTP2 /////////////////////////////////////////////*/
#endif //_CODE_OLD_
/*////////////////////////////////////////////////////////////////////////////////////////// /*//////////////////////////////////////////////////////////////////////////////////////////
@ -1148,13 +1170,69 @@ namespace ZNsMain
typedef typename TTypeCtrlAllocWork::CThreadLink CThreadLink; typedef typename TTypeCtrlAllocWork::CThreadLink CThreadLink;
typedef typename TTypeCtrlAllocWork::CTypeCRTP CTypeCRTP ; typedef typename TTypeCtrlAllocWork::CTypeCRTP CTypeCRTP ;
// 이후 아래 코드로
// // some code
// typedef typename CTypeCRTP::TypeData CCtrlAllocWorkEx;
//
// CCtrlAllocWork_T 의 상속 클래스에 접근할 수 있다. void SetCloseMark(CWork& ARR_CWork)
{
if(CTypeCRTP::EUseCRTP>0)
{
typedef typename CTypeCRTP::TypeData CCtrlAllocWorkEx;
#if(_CODE_NEW_)
static_cast<CCtrlAllocWorkEx&>(*this). // 코드-CCtrlAllocWork::CRTP2
SetCloseMarkInChild(RR(ARR_CWork)); return;
#else
((CCtrlAllocWorkEx&)(*this)). // 코드-CCtrlAllocWork::CRTP
SetCloseMarkInChild(RR(ARR_CWork)); return;
#endif
//////////////////////////////////////////////////////////////////////////////////////////////////
■ 주석-CCtrlAllocWork::CRTP2
이전에는 상속 클래스의 SetCloseMarkInChild() 을 사용하기 위해 위의 '코드-CCtrlAllocWork::CRTP'
를 사용하였으나 약간의 안전성 상승을 위해, std::NsType::CTypeCRTP2_T<> 을 긴급히 정의하고, NsT
ype::CTypeCtrlAllocWork_T<> 의 템플릿 인수에 typename TTypeCRTP 를 추가한 다음, '코드-CCtrlAll
ocWork::CRTP2' 를 사용하게 되었다. 그래서 class CCtrlAllocWork_T<> 이
TTypeCtrlAllocWork::CTypeCRTP::TypeBase
을 상속하고 있다. 이 TypeBase 는 SetCloseMarkInChild(CWork&) 함수를 가져야 한다.
-- 2012-09-20 09:43:00
■ NsType::CTypeCRTP2_T<> 는 NsType::CTypeCRTP_T<> 에서 TypeBase 가 추가된 것이다.
-- 2012-09-20 09:57:00
//////////////////////////////////////////////////////////////////////////////////////////////////
} }
CWorkExec::SetCloseMark(RR(ARR_CWork));
}
//void SetCloseMark(CWork& ARR_CWork)
// some code
}
즉 아래 코드로
typedef typename CTypeCRTP::TypeData CCtrlAllocWorkEx;
CCtrlAllocWork_T 의 상속 클래스에 접근하고 있는데, 이것은 좀 이상하다.
즉 CTypeCRTP::TypeData 은 NsIFace::ICtrlAllocWork 이기 때문이다. 예전
코드라 그런지 나쁜 냄새가 난다.
-- 2025-09-28 07-27
//////////////////////////////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////////////////////////////*/
@ -5130,29 +5208,39 @@ namespace ZNsMain
// class ZtCBaseList : circular double linked list // class ZtCBaseList : circular double linked list
template /////////////////////////////////////////////// template //////////////////////////////////////////////////////////////////
< <
typename TType , typename TType ,
typename TTypArgu = const TType& , typename TTypArgu = const TType& ,
typename TTypCAlloc = ZCAllocator , typename TTypeAlloc = ZCAllocator ,
typename TTypSize = ZTypLong , typename TTypSize = ZTypLong ,
typename TMoveObj = ZNsMain:: typename TMoveObj = ZNsMain::
ZtCMoveObj<TType, TTypArgu, true> ZtCMoveObj<TType, TTypArgu, true> ,
typename TTypeCRTP = ZNsType::ZtCTypeCRTP<ZCEmpty, false>
> >
class ZtCBaseList /*##################################*/ class ZtCBaseList /*#####################################################*/
{ {
public: public:
class ZCLink; class ZCLink;
public: public:
typedef TType TypeData ; typedef TType TypeData ;
typedef TTypArgu TypeArg ; typedef TTypArgu TypeArg ;
typedef TTypCAlloc TypeAlloc ; typedef TTypeAlloc TypeAlloc ;
typedef TTypSize TypeSize ; typedef TTypSize TypeSize ;
typedef TMoveObj TypeMoveObj ; typedef TMoveObj TypeMoveObj ;
typedef ZCLink* IterEasy ; // 가장 대표적으로 쓰일 수 있는 반복자. typedef ZCLink* IterEasy ; // 가장 대표적으로 쓰일 수 있는 반복자.
typedef ZCLink* iterator ; typedef ZCLink* iterator ;
public: public:
typedef ZNsType::ZtCTypeNowCRTP ///////////////////
<
ZtCBaseList, typename TTypeCRTP::TypeData
>
ZCTypeNowCRTP ; ///////////////////////////////////
typedef typename ZCTypeNowCRTP::TypeData TypeChild;
public :
class ZCLink : public TypeAlloc class ZCLink : public TypeAlloc
{ {
@ -5163,11 +5251,27 @@ namespace ZNsMain
ZCLink* mp_NextLink ; ZCLink* mp_NextLink ;
ZCLink* mp_PrevLink ; ZCLink* mp_PrevLink ;
private: private:
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
ZCLink* GetNextPtr() {return mp_NextLink;} ZCLink* GetNextPtr() {return mp_NextLink;}
ZCLink* GetPrevPtr() {return mp_PrevLink;} ZCLink* GetPrevPtr() {return mp_PrevLink;}
const ZCLink* GetNextPtr()const{return mp_NextLink;} const ZCLink* GetNextPtr()const{return mp_NextLink;}
const ZCLink* GetPrevPtr()const{return mp_PrevLink;} const ZCLink* GetPrevPtr()const{return mp_PrevLink;}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
private:
static void JoinLink(ZCLink* AP_PrevLink, ZCLink* AP_NextLink)
{
AP_PrevLink->mp_NextLink=AP_NextLink;
AP_NextLink->mp_PrevLink=AP_PrevLink;
}/*
static void JoinLink(ZCLink* AP_PrevLink, ZCLink* AP_NextLink)*/
static void MakeRing(ZCLink* AP_HeadLink, ZCLink* AP_TailLink)
{
AP_HeadLink->mp_PrevLink=AP_TailLink;
AP_TailLink->mp_NextLink=AP_HeadLink;
}/*
static void MakeRing(ZCLink* AP_HeadLink, ZCLink* AP_TailLink)*/
public: public:
@ -5244,6 +5348,35 @@ namespace ZNsMain
TypeSize ml_LinkCnt ; TypeSize ml_LinkCnt ;
private : private :
ZCLink* NewLink()
{
if(TTypeCRTP::ZEUseCRTP<1) return new ZCLink;
return (*static_cast<TypeChild*>(this)).NewLink();
}/*
ZCLink* NewLink()*/
ZCLink* NewLink(TypeArg AO_ArgData)
{
if(TTypeCRTP::ZEUseCRTP<1)
{ return new ZCLink(AO_ArgData); }
return (*static_cast<TypeChild*>(this)).NewLink(AO_ArgData);
}/*
ZCLink* NewLink(TypeArg AO_ArgData)*/
void DelLink(ZCLink* AP_DelLink)
{
if(TTypeCRTP::ZEUseCRTP<1)
{ delete AP_DelLink; return; }
return (*static_cast<TypeChild*>(this)).DelLink(AP_DelLink);
}/*
void DelLink(ZCLink* AP_DelLink)*/
/*private :*/
private :
ZCLink* AddTailLink(ZCLink* AP_NewLink) ZCLink* AddTailLink(ZCLink* AP_NewLink)
{ {
if(ml_LinkCnt<1) if(ml_LinkCnt<1)
@ -5251,22 +5384,19 @@ namespace ZNsMain
mp_HeadLink = AP_NewLink; mp_HeadLink = AP_NewLink;
mp_TailLink = AP_NewLink; mp_TailLink = AP_NewLink;
mp_HeadLink->mp_NextLink = mp_HeadLink ; ZCLink::MakeRing
mp_HeadLink->mp_PrevLink = mp_HeadLink ; ( mp_HeadLink, mp_TailLink ) ;
ml_LinkCnt= 1; return AP_NewLink; ml_LinkCnt= 1; return AP_NewLink;
}/* }/*
if(ml_LinkCnt<1)*/ if(ml_LinkCnt<1)*/
mp_TailLink->mp_NextLink = AP_NewLink ; ZCLink::JoinLink(mp_TailLink, AP_NewLink) ;
AP_NewLink ->mp_PrevLink = mp_TailLink ; ZCLink::MakeRing(mp_HeadLink, AP_NewLink) ;
AP_NewLink ->mp_NextLink = mp_HeadLink ;
mp_HeadLink->mp_PrevLink = AP_NewLink ;
mp_TailLink = AP_NewLink; ++ml_LinkCnt ; mp_TailLink = AP_NewLink; ++ml_LinkCnt ;
return AP_NewLink; /*:::::::::::::::::*/ return AP_NewLink; /*::::::::::::::::::::*/
}/* }/*
ZCLink* AddTailLink(ZCLink* AP_CLink)*/ ZCLink* AddTailLink(ZCLink* AP_CLink)*/
@ -5277,26 +5407,24 @@ namespace ZNsMain
mp_HeadLink = AP_NewLink; mp_HeadLink = AP_NewLink;
mp_TailLink = AP_NewLink; mp_TailLink = AP_NewLink;
mp_HeadLink->mp_NextLink = mp_HeadLink ; ZCLink::MakeRing
mp_HeadLink->mp_PrevLink = mp_HeadLink ; ( mp_HeadLink, mp_TailLink ) ;
ml_LinkCnt= 1; return AP_NewLink; ml_LinkCnt= 1; return AP_NewLink;
}/* }/*
if(ml_LinkCnt<1)*/ if(ml_LinkCnt<1)*/
AP_NewLink ->mp_NextLink = mp_HeadLink ; ZCLink::JoinLink(AP_NewLink, mp_HeadLink) ;
mp_HeadLink->mp_PrevLink = AP_NewLink ; ZCLink::MakeRing(AP_NewLink, mp_TailLink) ;
AP_NewLink ->mp_PrevLink = mp_TailLink ;
mp_TailLink->mp_NextLink = AP_NewLink ;
mp_HeadLink = AP_NewLink; ++ml_LinkCnt ; mp_HeadLink = AP_NewLink; ++ml_LinkCnt ;
return AP_NewLink; /*:::::::::::::::::*/ return AP_NewLink; /*::::::::::::::::::::*/
}/* }/*
ZCLink* AddHeadLink(ZCLink* AP_CLink) ZCLink* AddHeadLink(ZCLink* AP_CLink)*/
private :*/
/*private :*/
public : public :
ZtCBaseList() ZtCBaseList()
@ -5350,7 +5478,7 @@ namespace ZNsMain
ZCLink* VP_NextLink = ZCLink* VP_NextLink =
VP_NowLink->mp_NextLink ; VP_NowLink->mp_NextLink ;
delete VP_NowLink; DelLink(VP_NowLink);
VP_NowLink = VP_NextLink; VP_NowLink = VP_NextLink;
}/* }/*
@ -5364,9 +5492,9 @@ namespace ZNsMain
TypeData& AddHead() TypeData& AddHead()
{ return AddHeadLink(new ZCLink)->mo_Data; } { return AddHeadLink(NewLink())->mo_Data; }
TypeData& AddTail() TypeData& AddTail()
{ return AddTailLink(new ZCLink)->mo_Data; } { return AddTailLink(NewLink())->mo_Data; }
TypeData& AddHead(TypeArg AO_ArgData) /*########################*/ TypeData& AddHead(TypeArg AO_ArgData) /*########################*/
@ -5374,7 +5502,7 @@ namespace ZNsMain
#if(_CODE_NEW_) #if(_CODE_NEW_)
if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
{ {
ZCLink* VP_NewNode = new ZCLink(AO_ArgData); ZCLink* VP_NewNode = NewLink(AO_ArgData);
TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData); TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData);
@ -5391,7 +5519,7 @@ namespace ZNsMain
#if(_CODE_NEW_) #if(_CODE_NEW_)
if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
{ {
ZCLink* VP_NewNode = new ZCLink(AO_ArgData); ZCLink* VP_NewNode = NewLink(AO_ArgData);
TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData); TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData);
@ -5411,7 +5539,7 @@ namespace ZNsMain
ZCLink* VP_TempLink = mp_HeadLink ; ZCLink* VP_TempLink = mp_HeadLink ;
mp_HeadLink = mp_HeadLink->mp_NextLink ; mp_HeadLink = mp_HeadLink->mp_NextLink ;
delete VP_TempLink; DelLink(VP_TempLink);
if(--ml_LinkCnt<1) if(--ml_LinkCnt<1)
{ {
@ -5419,8 +5547,7 @@ namespace ZNsMain
}/* }/*
if(--ml_LinkCnt<1)*/ if(--ml_LinkCnt<1)*/
mp_HeadLink->mp_PrevLink = mp_TailLink ; ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
mp_TailLink->mp_NextLink = mp_HeadLink ;
}/* }/*
void DeleteHead()*/ void DeleteHead()*/
@ -5432,7 +5559,7 @@ namespace ZNsMain
ZCLink* VP_TempLink = mp_TailLink ; ZCLink* VP_TempLink = mp_TailLink ;
mp_TailLink = mp_TailLink->mp_PrevLink ; mp_TailLink = mp_TailLink->mp_PrevLink ;
delete VP_TempLink; DelLink(VP_TempLink);
if(--ml_LinkCnt<1) if(--ml_LinkCnt<1)
{ {
@ -5440,8 +5567,7 @@ namespace ZNsMain
}/* }/*
if(--ml_LinkCnt<1)*/ if(--ml_LinkCnt<1)*/
mp_HeadLink->mp_PrevLink = mp_TailLink ; ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
mp_TailLink->mp_NextLink = mp_HeadLink ;
}/* }/*
void DeleteTail()*/ void DeleteTail()*/
@ -5666,16 +5792,17 @@ namespace ZNsMain
public : public :
};/* };/*
template /////////////////////////////////////////////// template //////////////////////////////////////////////////////////////////
< <
typename TType , typename TType ,
typename TTypArgu = const TType& , typename TTypArgu = const TType& ,
typename TTypCAlloc = ZCAllocator , typename TTypeAlloc = ZCAllocator ,
typename TTypSize = ZTypLong , typename TTypSize = ZTypLong ,
typename TMoveObj = ZNsMain:: typename TMoveObj = ZNsMain::
ZtCMoveObj<TType, TTypArgu, true> ZtCMoveObj<TType, TTypArgu, true> ,
typename TTypeCRTP = ZNsType::ZtCTypeCRTP<ZCEmpty, false>
> >
class ZtCBaseList /*##################################*/ class ZtCBaseList #######################################################*/

View File

@ -858,12 +858,12 @@ namespace ZNsMain
}/* }/*
static void JoinLink(ZCLink* AP_PrevLink, ZCLink* AP_NextLink)*/ static void JoinLink(ZCLink* AP_PrevLink, ZCLink* AP_NextLink)*/
static void MakeCircle(ZCLink* AP_HeadLink, ZCLink* AP_TailLink) static void MakeRing(ZCLink* AP_HeadLink, ZCLink* AP_TailLink)
{ {
AP_HeadLink->mp_PrevLink=AP_TailLink; AP_HeadLink->mp_PrevLink=AP_TailLink;
AP_TailLink->mp_NextLink=AP_HeadLink; AP_TailLink->mp_NextLink=AP_HeadLink;
}/* }/*
static void MakeCircle(ZCLink* AP_HeadLink, ZCLink* AP_TailLink)*/ static void MakeRing(ZCLink* AP_HeadLink, ZCLink* AP_TailLink)*/
/*private:*/ /*private:*/
public : public :
@ -1089,7 +1089,7 @@ namespace ZNsMain
{ {
ZCLink* VP_TailLink = AO_CObjList.mp_HeadLink->mp_PrevLink; ZCLink* VP_TailLink = AO_CObjList.mp_HeadLink->mp_PrevLink;
ZCLink::MakeCircle(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;
@ -1123,7 +1123,7 @@ namespace ZNsMain
mp_HeadLink=0; mp_HeadLink=0;
else else
{ {
ZCLink::MakeCircle ////////////////////////// ZCLink::MakeRing ////////////////////////////
( (
mp_HeadLink=mp_HeadLink->mp_NextLink, mp_HeadLink=mp_HeadLink->mp_NextLink,
AP_CutLink->mp_PrevLink AP_CutLink->mp_PrevLink
@ -1133,7 +1133,7 @@ namespace ZNsMain
else*/ else*/
} }
else if(AP_CutLink==mp_HeadLink->mp_PrevLink) else if(AP_CutLink==mp_HeadLink->mp_PrevLink)
ZCLink::MakeCircle(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_Size, AP_CutLink);
@ -1149,17 +1149,17 @@ namespace ZNsMain
mp_HeadLink=0; mp_HeadLink=0;
else else
{ {
ZCLink::MakeCircle 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_Size) // 끝 링크를 삭제할 때
ZCLink::MakeCircle(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_Size, AP_CutLink);
@ -1202,11 +1202,11 @@ namespace ZNsMain
} }
else if(AL_CutHeadPos==1) // 잘라내려는 링크가 처음 링크를 포함할 때. else if(AL_CutHeadPos==1) // 잘라내려는 링크가 처음 링크를 포함할 때.
{ {
ZCLink::MakeCircle(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_Size) // 잘라내려는 링크가 끝 링크를 포함할 때.
{ {
ZCLink::MakeCircle(mp_HeadLink, AP_CutHead->mp_PrevLink); ZCLink::MakeRing(mp_HeadLink, AP_CutHead->mp_PrevLink);
} }
else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때. else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때.
{ {
@ -1219,7 +1219,7 @@ namespace ZNsMain
// AP_CutHead 과 AP_CutTail 을 연결하여 // AP_CutHead 과 AP_CutTail 을 연결하여
// 이중 원형 연결리스트가 되도록 한다. // 이중 원형 연결리스트가 되도록 한다.
ZCLink::MakeCircle(AP_CutHead, AP_CutTail); ZCLink::MakeRing(AP_CutHead, AP_CutTail);
#ifdef _DEBUG #ifdef _DEBUG
@ -1297,7 +1297,7 @@ namespace ZNsMain
); );
///////////////////////////////////////////// /////////////////////////////////////////////
ZCLink::MakeCircle(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_Size =(AL_FarNum<0 ? -AL_FarNum : AL_FarNum)+1 ;
@ -1330,7 +1330,7 @@ namespace ZNsMain
GetManyLink GetManyLink
(AL_DefaultSize, RR(VP_HeadLink), RR(VP_TailLink)); (AL_DefaultSize, RR(VP_HeadLink), RR(VP_TailLink));
ZCLink::MakeCircle( 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_Size = AL_DefaultSize ;
@ -2110,11 +2110,11 @@ namespace ZNsMain
} }
else if(AL_CutHeadPos==1) // 잘라내려는 링크가 처음 링크를 포함할 때. else if(AL_CutHeadPos==1) // 잘라내려는 링크가 처음 링크를 포함할 때.
{ {
ZCLink::MakeCircle(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_Size) // 잘라내려는 링크가 끝 링크를 포함할 때.
{ {
ZCLink::MakeCircle(mp_HeadLink, AP_CutHead->mp_PrevLink); ZCLink::MakeRing(mp_HeadLink, AP_CutHead->mp_PrevLink);
} }
else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때. else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때.
{ {
@ -2133,7 +2133,7 @@ namespace ZNsMain
{ {
// AP_CutHead 과 AP_CutTail 을 연결하여 이중 원형 연결리스트가 되도록 한다. // AP_CutHead 과 AP_CutTail 을 연결하여 이중 원형 연결리스트가 되도록 한다.
ZCLink::MakeCircle(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_Size =AL_CutTailPos-AL_CutHeadPos+1;
@ -2141,7 +2141,7 @@ namespace ZNsMain
else else
{ {
ZCLink::JoinLink(ARR_StoreList.mp_HeadLink->mp_PrevLink, AP_CutHead); ZCLink::JoinLink(ARR_StoreList.mp_HeadLink->mp_PrevLink, AP_CutHead);
ZCLink::MakeCircle(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_Size += AL_CutTailPos-AL_CutHeadPos+1 ;
}/* }/*
@ -3230,12 +3230,12 @@ namespace ZNsMain
}/* }/*
static void JoinLink(ZCLinkUnit* lhs, ZCLinkUnit* rhs)*/ static void JoinLink(ZCLinkUnit* lhs, ZCLinkUnit* rhs)*/
static void MakeCircle(ZCLinkUnit* AP_HeadUnit, ZCLinkUnit* AP_TailUnit) static void MakeRing(ZCLinkUnit* AP_HeadUnit, ZCLinkUnit* AP_TailUnit)
{ {
AP_HeadUnit->mp_PrevUnit=AP_TailUnit; AP_HeadUnit->mp_PrevUnit=AP_TailUnit;
AP_TailUnit->mp_NextUnit=AP_HeadUnit; AP_TailUnit->mp_NextUnit=AP_HeadUnit;
}/* }/*
static void MakeCircle(ZCLinkUnit* AP_HeadUnit, ZCLinkUnit* AP_TailUnit)*/ static void MakeRing(ZCLinkUnit* AP_HeadUnit, ZCLinkUnit* AP_TailUnit)*/
TypeData& AddEmptyObj() TypeData& AddEmptyObj()
{ {
@ -3485,7 +3485,7 @@ namespace ZNsMain
if(--ml_CutUnitCnt<1) if(--ml_CutUnitCnt<1)
mp_CutHeadUnit=0; mp_CutHeadUnit=0;
else else
ZCLinkUnit::MakeCircle(mp_CutHeadUnit, VP_CutTailUnit); ZCLinkUnit::MakeRing(mp_CutHeadUnit, VP_CutTailUnit);
//else //else
VP_CutHeadUnit->ml_UseSize=0; return VP_CutHeadUnit; VP_CutHeadUnit->ml_UseSize=0; return VP_CutHeadUnit;
@ -3509,7 +3509,7 @@ namespace ZNsMain
ZCLinkUnit* VP_TailCLinkUnit= mp_NowHeadUnit->mp_PrevUnit; ZCLinkUnit* VP_TailCLinkUnit= mp_NowHeadUnit->mp_PrevUnit;
ZCLinkUnit::JoinLink(VP_NewLinkUnit, mp_NowHeadUnit ); ZCLinkUnit::JoinLink(VP_NewLinkUnit, mp_NowHeadUnit );
ZCLinkUnit::MakeCircle(VP_NewLinkUnit, VP_TailCLinkUnit); ZCLinkUnit::MakeRing(VP_NewLinkUnit, VP_TailCLinkUnit);
mp_NowHeadUnit=VP_NewLinkUnit; mp_NowHeadUnit=VP_NewLinkUnit;
}/* }/*
@ -3536,7 +3536,7 @@ namespace ZNsMain
ZCLinkUnit* VP_TailCLinkUnit= mp_NowHeadUnit->mp_PrevUnit; ZCLinkUnit* VP_TailCLinkUnit= mp_NowHeadUnit->mp_PrevUnit;
ZCLinkUnit::JoinLink(VP_TailCLinkUnit, VP_NewLinkUnit); ZCLinkUnit::JoinLink(VP_TailCLinkUnit, VP_NewLinkUnit);
ZCLinkUnit::MakeCircle(mp_NowHeadUnit , VP_NewLinkUnit); ZCLinkUnit::MakeRing(mp_NowHeadUnit , VP_NewLinkUnit);
}/* }/*
else*/ else*/
@ -3828,14 +3828,14 @@ namespace ZNsMain
if(ml_CutUnitCnt<1) if(ml_CutUnitCnt<1)
{ {
ZCLinkUnit::MakeCircle(VP_UnitHead, VP_UnitTail); ZCLinkUnit::MakeRing(VP_UnitHead, VP_UnitTail);
mp_CutHeadUnit = VP_UnitHead; /////////////////// mp_CutHeadUnit = VP_UnitHead; /////////////////
} }
else else
{ {
ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_UnitHead); ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_UnitHead);
ZCLinkUnit::MakeCircle(mp_CutHeadUnit , VP_UnitTail); ZCLinkUnit::MakeRing(mp_CutHeadUnit , VP_UnitTail);
}/* }/*
else*/ else*/
@ -3861,7 +3861,7 @@ namespace ZNsMain
ZCLinkUnit* VP_TailLink=mp_NowHeadUnit->mp_PrevUnit; ZCLinkUnit* VP_TailLink=mp_NowHeadUnit->mp_PrevUnit;
ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, mp_NowHeadUnit); ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, mp_NowHeadUnit);
ZCLinkUnit::MakeCircle(mp_CutHeadUnit , VP_TailLink ); ZCLinkUnit::MakeRing(mp_CutHeadUnit , VP_TailLink );
} }
else else
mp_CutHeadUnit=mp_NowHeadUnit; mp_CutHeadUnit=mp_NowHeadUnit;
@ -3882,7 +3882,7 @@ namespace ZNsMain
if(--ml_NowUnitCnt<1) if(--ml_NowUnitCnt<1)
{ {
ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, mp_NowHeadUnit); ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, mp_NowHeadUnit);
ZCLinkUnit::MakeCircle(mp_CutHeadUnit , mp_NowHeadUnit); ZCLinkUnit::MakeRing(mp_CutHeadUnit , mp_NowHeadUnit);
mp_NowHeadUnit=0; mp_NowHeadUnit=0;
ml_NowObjtCnt =0; ml_NowObjtCnt =0;
@ -3895,9 +3895,9 @@ namespace ZNsMain
mp_NowHeadUnit = mp_NowHeadUnit->mp_NextUnit; mp_NowHeadUnit = mp_NowHeadUnit->mp_NextUnit;
ml_NowObjtCnt -= VP_HeadLink->size(); ml_NowObjtCnt -= VP_HeadLink->size();
ZCLinkUnit::MakeCircle(mp_NowHeadUnit , VP_TailLink); ZCLinkUnit::MakeRing(mp_NowHeadUnit , VP_TailLink);
ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_HeadLink); ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_HeadLink);
ZCLinkUnit::MakeCircle(mp_CutHeadUnit , VP_HeadLink); ZCLinkUnit::MakeRing(mp_CutHeadUnit , VP_HeadLink);
}/* }/*
else*/ else*/
@ -3949,7 +3949,7 @@ namespace ZNsMain
ZCLinkUnit* VP_RhsTailUnit=rhs.mp_NowHeadUnit->mp_PrevUnit; ZCLinkUnit* VP_RhsTailUnit=rhs.mp_NowHeadUnit->mp_PrevUnit;
ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, rhs.mp_NowHeadUnit); ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, rhs.mp_NowHeadUnit);
ZCLinkUnit::MakeCircle(mp_NowHeadUnit, VP_RhsTailUnit ); ZCLinkUnit::MakeRing(mp_NowHeadUnit, VP_RhsTailUnit );
}/* }/*
else*/ else*/
@ -3970,7 +3970,7 @@ namespace ZNsMain
ZCLinkUnit* VP_LhsTailUnit= mp_NowHeadUnit->mp_PrevUnit; ZCLinkUnit* VP_LhsTailUnit= mp_NowHeadUnit->mp_PrevUnit;
ZCLinkUnit::JoinLink(VP_RhsTailUnit , mp_NowHeadUnit); ZCLinkUnit::JoinLink(VP_RhsTailUnit , mp_NowHeadUnit);
ZCLinkUnit::MakeCircle(rhs.mp_NowHeadUnit, VP_LhsTailUnit); ZCLinkUnit::MakeRing(rhs.mp_NowHeadUnit, VP_LhsTailUnit);
}/* }/*
if(ml_NowUnitCnt>=1)*/ if(ml_NowUnitCnt>=1)*/
@ -4000,19 +4000,19 @@ namespace ZNsMain
ZCLinkUnit* VP_RhsNowHead = VP_RhsNowTail-> ZCLinkUnit* VP_RhsNowHead = VP_RhsNowTail->
GetObjtPtr( -(AI_FetchSize-1), RR(VI_RhsObjCnt) ) ; GetObjtPtr( -(AI_FetchSize-1), RR(VI_RhsObjCnt) ) ;
ZCLinkUnit::MakeCircle( ZCLinkUnit::MakeRing(
rhs.mp_NowHeadUnit, VP_RhsNowHead->mp_PrevUnit); rhs.mp_NowHeadUnit, VP_RhsNowHead->mp_PrevUnit);
rhs.ml_NowUnitCnt -= AI_FetchSize; rhs.ml_NowUnitCnt -= AI_FetchSize;
rhs.ml_NowObjtCnt -= VI_RhsObjCnt; rhs.ml_NowObjtCnt -= VI_RhsObjCnt;
if(ml_NowUnitCnt<1) if(ml_NowUnitCnt<1)
{ {
ZCLinkUnit::MakeCircle(VP_RhsNowHead, VP_RhsNowTail); mp_NowHeadUnit=VP_RhsNowHead; ZCLinkUnit::MakeRing(VP_RhsNowHead, VP_RhsNowTail); mp_NowHeadUnit=VP_RhsNowHead;
} }
else else
{ {
ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, VP_RhsNowHead); ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, VP_RhsNowHead);
ZCLinkUnit::MakeCircle(mp_NowHeadUnit , VP_RhsNowTail); ZCLinkUnit::MakeRing(mp_NowHeadUnit , VP_RhsNowTail);
} }
ml_NowUnitCnt += AI_FetchSize; ml_NowUnitCnt += AI_FetchSize;
ml_NowObjtCnt += VI_RhsObjCnt; ml_NowObjtCnt += VI_RhsObjCnt;
@ -4041,21 +4041,21 @@ namespace ZNsMain
rhs.mp_NowHeadUnit = VP_RhsNowTail->mp_NextUnit ; rhs.mp_NowHeadUnit = VP_RhsNowTail->mp_NextUnit ;
ZCLinkUnit::MakeCircle( ZCLinkUnit::MakeRing(
rhs.mp_NowHeadUnit, VP_RhsNowHead->mp_PrevUnit); rhs.mp_NowHeadUnit, VP_RhsNowHead->mp_PrevUnit);
rhs.ml_NowUnitCnt -= AI_FetchSize; rhs.ml_NowUnitCnt -= AI_FetchSize;
rhs.ml_NowObjtCnt -= VI_RhsObjCnt; rhs.ml_NowObjtCnt -= VI_RhsObjCnt;
if(ml_NowUnitCnt<1) if(ml_NowUnitCnt<1)
{ {
ZCLinkUnit::MakeCircle(VP_RhsNowHead, VP_RhsNowTail); ZCLinkUnit::MakeRing(VP_RhsNowHead, VP_RhsNowTail);
mp_NowHeadUnit=VP_RhsNowHead; /////////////////////// mp_NowHeadUnit=VP_RhsNowHead; /////////////////////
} }
else else
{ {
ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, VP_RhsNowHead); ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, VP_RhsNowHead);
ZCLinkUnit::MakeCircle(mp_NowHeadUnit , VP_RhsNowTail); ZCLinkUnit::MakeRing(mp_NowHeadUnit , VP_RhsNowTail);
} }
ml_NowUnitCnt += AI_FetchSize; ml_NowUnitCnt += AI_FetchSize;
ml_NowObjtCnt += VI_RhsObjCnt; ml_NowObjtCnt += VI_RhsObjCnt;
@ -4076,21 +4076,21 @@ namespace ZNsMain
} }
else else
{ {
ZCLinkUnit::MakeCircle( ZCLinkUnit::MakeRing(
rhs.mp_NowHeadUnit, VP_RhsNowTail->mp_PrevUnit); rhs.mp_NowHeadUnit, VP_RhsNowTail->mp_PrevUnit);
} }
rhs.ml_NowObjtCnt -= VP_RhsNowTail->ml_UseSize ; rhs.ml_NowObjtCnt -= VP_RhsNowTail->ml_UseSize ;
if(++ml_NowUnitCnt<=1) if(++ml_NowUnitCnt<=1)
{ {
ZCLinkUnit::MakeCircle(VP_RhsNowTail, VP_RhsNowTail); ZCLinkUnit::MakeRing(VP_RhsNowTail, VP_RhsNowTail);
mp_NowHeadUnit=VP_RhsNowTail; /////////////////////// mp_NowHeadUnit=VP_RhsNowTail; /////////////////////
} }
else else
{ {
ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, VP_RhsNowTail); ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, VP_RhsNowTail);
ZCLinkUnit::MakeCircle(mp_NowHeadUnit , VP_RhsNowTail); ZCLinkUnit::MakeRing(mp_NowHeadUnit , VP_RhsNowTail);
} }
ml_NowObjtCnt += VP_RhsNowTail->ml_UseSize ; ml_NowObjtCnt += VP_RhsNowTail->ml_UseSize ;
}/* }/*
@ -4111,21 +4111,21 @@ namespace ZNsMain
} }
else else
{ {
ZCLinkUnit::MakeCircle( ZCLinkUnit::MakeRing(
rhs.mp_NowHeadUnit, VP_RhsNowHead->mp_PrevUnit); rhs.mp_NowHeadUnit, VP_RhsNowHead->mp_PrevUnit);
} }
rhs.ml_NowObjtCnt -= VP_RhsNowHead->ml_UseSize ; rhs.ml_NowObjtCnt -= VP_RhsNowHead->ml_UseSize ;
if(++ml_NowUnitCnt<=1) if(++ml_NowUnitCnt<=1)
{ {
ZCLinkUnit::MakeCircle(VP_RhsNowHead, VP_RhsNowHead); ZCLinkUnit::MakeRing(VP_RhsNowHead, VP_RhsNowHead);
mp_NowHeadUnit=VP_RhsNowHead; /////////////////////// mp_NowHeadUnit=VP_RhsNowHead; /////////////////////
} }
else else
{ {
ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, VP_RhsNowHead); ZCLinkUnit::JoinLink(mp_NowHeadUnit->mp_PrevUnit, VP_RhsNowHead);
ZCLinkUnit::MakeCircle(mp_NowHeadUnit , VP_RhsNowHead); ZCLinkUnit::MakeRing(mp_NowHeadUnit , VP_RhsNowHead);
} }
ml_NowObjtCnt += VP_RhsNowHead->ml_UseSize ; ml_NowObjtCnt += VP_RhsNowHead->ml_UseSize ;
}/* }/*
@ -4145,7 +4145,7 @@ namespace ZNsMain
ZCLinkUnit* VP_RhsTailUnit=rhs.mp_CutHeadUnit->mp_PrevUnit; ZCLinkUnit* VP_RhsTailUnit=rhs.mp_CutHeadUnit->mp_PrevUnit;
ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, rhs.mp_CutHeadUnit); ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, rhs.mp_CutHeadUnit);
ZCLinkUnit::MakeCircle(mp_CutHeadUnit , VP_RhsTailUnit ); ZCLinkUnit::MakeRing(mp_CutHeadUnit , VP_RhsTailUnit );
}/* }/*
else*/ else*/
@ -4174,20 +4174,20 @@ namespace ZNsMain
ZCLinkUnit* VP_RhsCutHead = ZCLinkUnit* VP_RhsCutHead =
VP_RhsCutTail->GetObjtPtr( -(AI_FetchSize-1) ); VP_RhsCutTail->GetObjtPtr( -(AI_FetchSize-1) );
ZCLinkUnit::MakeCircle( ZCLinkUnit::MakeRing(
rhs.mp_CutHeadUnit, VP_RhsCutHead->mp_PrevUnit); rhs.mp_CutHeadUnit, VP_RhsCutHead->mp_PrevUnit);
rhs.ml_CutUnitCnt -= AI_FetchSize; rhs.ml_CutUnitCnt -= AI_FetchSize;
if(ml_CutUnitCnt<1) if(ml_CutUnitCnt<1)
{ {
ZCLinkUnit::MakeCircle(VP_RhsCutHead, VP_RhsCutTail); ZCLinkUnit::MakeRing(VP_RhsCutHead, VP_RhsCutTail);
mp_CutHeadUnit=VP_RhsCutHead; /////////////////////// mp_CutHeadUnit=VP_RhsCutHead; /////////////////////
} }
else else
{ {
ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_RhsCutHead); ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_RhsCutHead);
ZCLinkUnit::MakeCircle(mp_CutHeadUnit , VP_RhsCutTail); ZCLinkUnit::MakeRing(mp_CutHeadUnit , VP_RhsCutTail);
} }
ml_CutUnitCnt += AI_FetchSize; ml_CutUnitCnt += AI_FetchSize;
}/* }/*
@ -4213,20 +4213,20 @@ namespace ZNsMain
rhs.mp_CutHeadUnit=VP_RhsCutTail->mp_NextUnit; rhs.mp_CutHeadUnit=VP_RhsCutTail->mp_NextUnit;
ZCLinkUnit::MakeCircle( ZCLinkUnit::MakeRing(
rhs.mp_CutHeadUnit, VP_RhsCutHead->mp_PrevUnit); rhs.mp_CutHeadUnit, VP_RhsCutHead->mp_PrevUnit);
rhs.ml_CutUnitCnt -= AI_FetchSize; rhs.ml_CutUnitCnt -= AI_FetchSize;
if(ml_CutUnitCnt<1) if(ml_CutUnitCnt<1)
{ {
ZCLinkUnit::MakeCircle(VP_RhsCutHead, VP_RhsCutTail); ZCLinkUnit::MakeRing(VP_RhsCutHead, VP_RhsCutTail);
mp_CutHeadUnit=VP_RhsCutHead; /////////////////////// mp_CutHeadUnit=VP_RhsCutHead; /////////////////////
} }
else else
{ {
ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_RhsCutHead); ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_RhsCutHead);
ZCLinkUnit::MakeCircle(mp_CutHeadUnit , VP_RhsCutTail); ZCLinkUnit::MakeRing(mp_CutHeadUnit , VP_RhsCutTail);
} }
ml_CutUnitCnt += AI_FetchSize; ml_CutUnitCnt += AI_FetchSize;
}/* }/*
@ -4244,21 +4244,21 @@ namespace ZNsMain
rhs.mp_CutHeadUnit=0; rhs.mp_CutHeadUnit=0;
else else
{ {
ZCLinkUnit::MakeCircle( ZCLinkUnit::MakeRing(
rhs.mp_CutHeadUnit, VP_RhsNowTail->mp_PrevUnit); rhs.mp_CutHeadUnit, VP_RhsNowTail->mp_PrevUnit);
}/* }/*
else*/ else*/
if(++ml_CutUnitCnt<=1) if(++ml_CutUnitCnt<=1)
{ {
ZCLinkUnit::MakeCircle(VP_RhsNowTail, VP_RhsNowTail); ZCLinkUnit::MakeRing(VP_RhsNowTail, VP_RhsNowTail);
mp_CutHeadUnit=VP_RhsNowTail; /////////////////////// mp_CutHeadUnit=VP_RhsNowTail; /////////////////////
} }
else else
{ {
ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_RhsNowTail); ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_RhsNowTail);
ZCLinkUnit::MakeCircle(mp_CutHeadUnit , VP_RhsNowTail); ZCLinkUnit::MakeRing(mp_CutHeadUnit , VP_RhsNowTail);
}/* }/*
else*/ else*/
}/* }/*
@ -4276,7 +4276,7 @@ namespace ZNsMain
if(--rhs.ml_CutUnitCnt<1) {rhs.mp_CutHeadUnit=0;} else if(--rhs.ml_CutUnitCnt<1) {rhs.mp_CutHeadUnit=0;} else
{ {
ZCLinkUnit::MakeCircle( ZCLinkUnit::MakeRing(
rhs.mp_CutHeadUnit, VP_RhsNowHead->mp_PrevUnit); rhs.mp_CutHeadUnit, VP_RhsNowHead->mp_PrevUnit);
}/* }/*
////////////////////////////////////////////////////*/ ////////////////////////////////////////////////////*/
@ -4284,13 +4284,13 @@ namespace ZNsMain
if(++ml_CutUnitCnt<=1) if(++ml_CutUnitCnt<=1)
{ {
ZCLinkUnit:: ZCLinkUnit::
MakeCircle(VP_RhsNowHead, VP_RhsNowHead); MakeRing(VP_RhsNowHead, VP_RhsNowHead);
mp_CutHeadUnit = VP_RhsNowHead; mp_CutHeadUnit = VP_RhsNowHead;
} }
else else
{ {
ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_RhsNowHead); ZCLinkUnit::JoinLink(mp_CutHeadUnit->mp_PrevUnit, VP_RhsNowHead);
ZCLinkUnit::MakeCircle(mp_CutHeadUnit , VP_RhsNowHead); ZCLinkUnit::MakeRing(mp_CutHeadUnit , VP_RhsNowHead);
}/* }/*
else*/ else*/
}/* }/*

View File

@ -841,7 +841,7 @@ namespace ZNsMain
}/* }/*
inline static void JoinLink(ZCLink* AP_PrevLink, ZCLink* AP_NextLink)*/ inline static void JoinLink(ZCLink* AP_PrevLink, ZCLink* AP_NextLink)*/
inline static void MakeCircle(ZCLink* AP_HeadLink, ZCLink* AP_TailLink) inline static void MakeRing(ZCLink* AP_HeadLink, ZCLink* AP_TailLink)
{ {
// 처음과 끝 링크를 연결하여 원형상태로 만든다. // 처음과 끝 링크를 연결하여 원형상태로 만든다.
// 이것은 ZtCSimList class template 과 멤버 함수를 맞추기 위한 것으로 // 이것은 ZtCSimList class template 과 멤버 함수를 맞추기 위한 것으로
@ -849,7 +849,7 @@ namespace ZNsMain
AP_TailLink->mp_NextLink = AP_HeadLink; AP_TailLink->mp_NextLink = AP_HeadLink;
}/* }/*
inline static void MakeCircle(ZCLink* AP_HeadLink, ZCLink* AP_TailLink)*/ inline static void MakeRing(ZCLink* AP_HeadLink, ZCLink* AP_TailLink)*/
//private: //private:
public : public :
@ -1041,7 +1041,7 @@ namespace ZNsMain
); );
////////////////////////////// //////////////////////////////
ZCLink::MakeCircle(VP_HeadLink, VP_TailLink); ZCLink::MakeRing(VP_HeadLink, VP_TailLink);
ARR_StoreList.mp_HeadLink= VP_HeadLink ; ARR_StoreList.mp_HeadLink= VP_HeadLink ;
ARR_StoreList.mp_TailLink= VP_TailLink ; ARR_StoreList.mp_TailLink= VP_TailLink ;
@ -1074,7 +1074,7 @@ namespace ZNsMain
{ {
mp_HeadLink = mp_HeadLink->mp_NextLink ; mp_HeadLink = mp_HeadLink->mp_NextLink ;
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
} }
//else //else
} }
@ -1082,7 +1082,7 @@ namespace ZNsMain
{ {
mp_TailLink= AP_PrevLink; mp_TailLink= AP_PrevLink;
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
} }
else else
{ {
@ -1108,7 +1108,7 @@ namespace ZNsMain
{ {
mp_HeadLink = mp_HeadLink->mp_NextLink ; mp_HeadLink = mp_HeadLink->mp_NextLink ;
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
} }
//else //else
} }
@ -1116,7 +1116,7 @@ namespace ZNsMain
{ {
mp_TailLink= AP_PrevLink; mp_TailLink= AP_PrevLink;
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
} }
else else
{ {
@ -1155,14 +1155,14 @@ namespace ZNsMain
{ {
mp_HeadLink = AP_CutTail->mp_NextLink ; mp_HeadLink = AP_CutTail->mp_NextLink ;
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
} }
} }
else if(AP_CutTail==mp_TailLink) // 잘라내려는 링크가 끝 링크를 포함할 때. else if(AP_CutTail==mp_TailLink) // 잘라내려는 링크가 끝 링크를 포함할 때.
{ {
mp_TailLink= AP_CutHeadPrev ; mp_TailLink= AP_CutHeadPrev ;
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
} }
else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때. else // 잘라내려는 링크가 처음과 끝 링크를 포함하지 않을 때.
{ {
@ -1215,7 +1215,7 @@ namespace ZNsMain
GetCFreeHeap().SendFreeOut GetCFreeHeap().SendFreeOut
(AL_DefaultSize, RR(VP_HeadLink), RR(VP_TailLink)); (AL_DefaultSize, RR(VP_HeadLink), RR(VP_TailLink));
ZCLink::MakeCircle( VP_HeadLink, VP_TailLink ); ZCLink::MakeRing(VP_HeadLink, VP_TailLink);
ARR_StoreList.mp_HeadLink= VP_HeadLink ; ARR_StoreList.mp_HeadLink= VP_HeadLink ;
ARR_StoreList.mp_TailLink= VP_TailLink ; ARR_StoreList.mp_TailLink= VP_TailLink ;
@ -1373,7 +1373,7 @@ namespace ZNsMain
}/* }/*
else*/ else*/
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void AddHead(TypeArg AR_Type)*/ void AddHead(TypeArg AR_Type)*/
@ -1392,7 +1392,7 @@ namespace ZNsMain
mp_HeadLink = VP_AddLink ; mp_HeadLink = VP_AddLink ;
} }
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
ZCLink* AddHeadDefault()*/ ZCLink* AddHeadDefault()*/
@ -1423,7 +1423,7 @@ namespace ZNsMain
}/* }/*
else*/ else*/
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void AddTail(TypeArg AR_Type)*/ void AddTail(TypeArg AR_Type)*/
@ -1442,7 +1442,7 @@ namespace ZNsMain
mp_TailLink = VP_AddLink ; mp_TailLink = VP_AddLink ;
} }
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
ZCLink* AddTailDefault()*/ ZCLink* AddTailDefault()*/
@ -1671,7 +1671,7 @@ namespace ZNsMain
mp_HeadLink = AP_Link ; mp_HeadLink = AP_Link ;
} }
++ml_Size; ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ++ml_Size; ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void JoinHead(ZCLink* AP_Link)*/ void JoinHead(ZCLink* AP_Link)*/
@ -1711,7 +1711,7 @@ namespace ZNsMain
}/* }/*
else*/ else*/
++ml_Size; ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ++ml_Size; ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void JoinTail(ZCLink* AP_Link)*/ void JoinTail(ZCLink* AP_Link)*/
@ -1734,7 +1734,7 @@ namespace ZNsMain
mp_HeadLink= rhs.mp_HeadLink ; mp_HeadLink= rhs.mp_HeadLink ;
ml_Size += rhs.ml_Size ; ml_Size += rhs.ml_Size ;
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
else*/ else*/
@ -1763,7 +1763,7 @@ namespace ZNsMain
ml_Size += rhs.ml_Size; ml_Size += rhs.ml_Size;
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
else*/ else*/
@ -1789,7 +1789,7 @@ namespace ZNsMain
}/* }/*
if(--ml_Size==0)*/ if(--ml_Size==0)*/
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void DeleteHead()*/ void DeleteHead()*/
@ -1836,7 +1836,7 @@ namespace ZNsMain
GetCFreeHeap().RecvFreeIn(VP_CutLink); GetCFreeHeap().RecvFreeIn(VP_CutLink);
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void DeleteTail()*/ void DeleteTail()*/
@ -1867,7 +1867,7 @@ namespace ZNsMain
mp_TailLink = VP_NewTail ; mp_TailLink = VP_NewTail ;
ml_Size -= AL_DelSize ; ml_Size -= AL_DelSize ;
ZCLink::MakeCircle(mp_HeadLink, mp_TailLink); ZCLink::MakeRing(mp_HeadLink, mp_TailLink);
}/* }/*
void DeleteTail(TTypSize AL_DelSize)*/ void DeleteTail(TTypSize AL_DelSize)*/

View File

@ -239,7 +239,7 @@ namespace ZNsMain
}/* }/*
//////////////////////////*/ //////////////////////////*/
ZCLink::MakeCircle ZCLink::MakeRing
(VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]); (VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]);
ARR_CObjList.mp_HeadLink = VPP_LinkPtrArr[0]; ARR_CObjList.mp_HeadLink = VPP_LinkPtrArr[0];
@ -292,7 +292,7 @@ namespace ZNsMain
}/* }/*
//////////////////////////*/ //////////////////////////*/
ZCLink::MakeCircle ZCLink::MakeRing
(VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]); (VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]);
ARR_CObjList.mp_HeadLink = VPP_LinkPtrArr[0]; ARR_CObjList.mp_HeadLink = VPP_LinkPtrArr[0];
@ -821,7 +821,7 @@ namespace ZNsMain
//////////////////////////// ////////////////////////////
#if(_CODE_OLD_) // 아래 코드만 빠진다. #if(_CODE_OLD_) // 아래 코드만 빠진다.
ZCLink::MakeCircle(VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]); ZCLink::MakeRing(VPP_LinkPtrArr[0], VPP_LinkPtrArr[VL_SortSize-1]);
#else #else
ARR_CObjList.mp_HeadLink=VPP_LinkPtrArr[0] ; ARR_CObjList.mp_HeadLink=VPP_LinkPtrArr[0] ;
ARR_CObjList.mp_TailLink=VPP_LinkPtrArr[VL_SortSize-1]; ARR_CObjList.mp_TailLink=VPP_LinkPtrArr[VL_SortSize-1];