commit 2025-09-09 11:02 add ItHID(), ItNext() etc in ZCppMain/ZtCSimList.H

This commit is contained in:
2025-09-09 11:03:06 +09:00
parent b994f15dbb
commit 004c9a9135

View File

@ -13,7 +13,7 @@ namespace ZNsMain
template<typename TypeObjList> class ZtCSortObjList; template<typename TypeObjList> class ZtCSortObjList;
template /*############################*/ template /*#######################################*/
< <
typename TType , typename TType ,
typename TTypCArg =const TType&, typename TTypCArg =const TType&,
@ -21,7 +21,7 @@ namespace ZNsMain
typename TTypCInit =ZCInit , typename TTypCInit =ZCInit ,
typename TTypSize =ZTypLong typename TTypSize =ZTypLong
> >
class ZtCSimList /*####################*/ class ZtCSimList /*###############################*/
{ {
public: public:
typedef TType Type ; typedef TType Type ;
@ -282,10 +282,11 @@ namespace ZNsMain
ZCLink* GetOneLink()*/ ZCLink* GetOneLink()*/
void GetManyLink( TTypSize AL_LinkSize, void GetManyLink /*#####################################################*/
ZCLink*& APR_HeadLink, (
ZCLink*& APR_TailLink TTypSize AL_LinkSize, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink
/*************/ ) )
/*######################################################################*/
{ {
#ifdef _REENTRANT_MUTEX #ifdef _REENTRANT_MUTEX
ZNsMain::ZCMutexSmallLock VO_ZCMutexSmallLock(mo_Mutex); ZNsMain::ZCMutexSmallLock VO_ZCMutexSmallLock(mo_Mutex);
@ -308,10 +309,9 @@ namespace ZNsMain
mo_TypeInit(VP_Temp->mo_Type); mo_TypeInit(VP_Temp->mo_Type);
if(VP_Temp==mp_NoUseTailLink) if(VP_Temp==mp_NoUseTailLink)
break; { break; }
else
VP_Temp = VP_Temp->mp_NextLink; VP_Temp = VP_Temp->mp_NextLink;
//else
} }
//while(true) //while(true)
@ -353,10 +353,9 @@ namespace ZNsMain
mo_TypeInit(VP_Temp->mo_Type); mo_TypeInit(VP_Temp->mo_Type);
if(VP_Temp==mp_NoUseTailLink) if(VP_Temp==mp_NoUseTailLink)
break; { break; }
else
VP_Temp=VP_Temp->mp_NextLink ; VP_Temp=VP_Temp->mp_NextLink ;
//endif
} }
//while(true) //while(true)
@ -372,12 +371,12 @@ namespace ZNsMain
ml_UseSize =0; ml_UseSize =0;
} }
//else // AL_LinkSize > ml_UseSize //else // AL_LinkSize > ml_UseSize
} }/*
/*void GetManyLink( void GetManyLink
TTypSize AL_LinkSize, (
ZCLink*& APR_HeadLink, TTypSize AL_LinkSize, ZCLink*& APR_HeadLink, ZCLink*& APR_TailLink
ZCLink*& APR_TailLink )
////////////// ) */ ########################################################################*/
void GetManyLinkCopy /*////////////////////////////*/ void GetManyLinkCopy /*////////////////////////////*/
@ -456,11 +455,12 @@ namespace ZNsMain
} }
//while(mp_NoUseHeadLink!=mp_NoUseTailLink) //while(mp_NoUseHeadLink!=mp_NoUseTailLink)
MakeLinkCopy( AP_LinkOrgin->mp_NextLink , MakeLinkCopy /*++++++++++++++++++++++++++++++++++++++++++++*/
AL_FarNum-ml_UseSize , (
mp_NoUseTailLink->mp_NextLink, AP_LinkOrgin ->mp_NextLink, AL_FarNum-ml_UseSize ,
APR_TailCopy mp_NoUseTailLink->mp_NextLink, APR_TailCopy
/*********/ ); );
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
mp_NoUseHeadLink = mp_NoUseHeadLink =
mp_NoUseTailLink = 0; mp_NoUseTailLink = 0;
@ -630,9 +630,9 @@ namespace ZNsMain
if(VP_MakeLink==0) if(VP_MakeLink==0)
{ {
ml_AllSize -= AL_FarNum+1 ; ml_AllSize -= AL_FarNum+1 ;
APR_TailCopy = VP_TempLink ; APR_TailCopy = VP_TempLink ;
VB_IsHeapOver= true ; VB_IsHeapOver= true ;
break; break;
} }
//if(VP_MakeLink==0) //if(VP_MakeLink==0)
@ -718,7 +718,6 @@ namespace ZNsMain
//else //else
mp_NoUseTailLink->mp_NextLink=0; mp_NoUseTailLink->mp_NextLink=0;
ml_UseSize += AL_Count ; ml_UseSize += AL_Count ;
} }
//void ReceiveLink(ZCLink* AP_HeadLink,ZCLink* AP_TailLink, TTypSize AL_Count) //void ReceiveLink(ZCLink* AP_HeadLink,ZCLink* AP_TailLink, TTypSize AL_Count)
@ -1004,7 +1003,6 @@ namespace ZNsMain
{ {
mp_HeadLink=AP_CutTail->mp_NextLink; mp_HeadLink=AP_CutTail->mp_NextLink;
} }
//endif
} }
else if(AP_CutTail==mp_TailLink) // 잘라내려는 링크가 끝 링크를 포함할 때. else if(AP_CutTail==mp_TailLink) // 잘라내려는 링크가 끝 링크를 포함할 때.
{ {
@ -1060,7 +1058,8 @@ namespace ZNsMain
ZCLink* VP_HeadLink=0; ZCLink* VP_HeadLink=0;
ZCLink* VP_TailLink=0; ZCLink* VP_TailLink=0;
GetCLinkHeap().GetManyLink(AL_DefaultSize, VP_HeadLink, VP_TailLink); GetCLinkHeap().GetManyLink
(AL_DefaultSize, VP_HeadLink, VP_TailLink);
ZCLink::MakeCircle( VP_HeadLink, VP_TailLink ); ZCLink::MakeCircle( VP_HeadLink, VP_TailLink );
ARR_StoreList.mp_HeadLink= VP_HeadLink ; ARR_StoreList.mp_HeadLink= VP_HeadLink ;
@ -1219,7 +1218,8 @@ namespace ZNsMain
void AddHead(TypeArg AR_Type) void AddHead(TypeArg AR_Type)
{ {
ZCLink* VP_AddLink=GetCLinkHeap().GetOneLink(); VP_AddLink->mo_Type=AR_Type; ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink() ;
VP_AddLink->mo_Type= AR_Type ;
if(++ml_Size==1) // ml_Size==0 if(++ml_Size==1) // ml_Size==0
{ {
@ -1258,9 +1258,7 @@ namespace ZNsMain
void AddTail(TypeArg AR_Type) void AddTail(TypeArg AR_Type)
{ {
ZCLink* VP_AddLink = ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink();
GetCLinkHeap().GetOneLink();
VP_AddLink->mo_Type= AR_Type ; VP_AddLink->mo_Type= AR_Type ;
if(++ml_Size==1) // ml_Size==0 if(++ml_Size==1) // ml_Size==0
@ -1704,7 +1702,8 @@ namespace ZNsMain
if(AL_DelSize==ml_Size) if(AL_DelSize==ml_Size)
{ {
GetCLinkHeap().ReceiveLink(mp_HeadLink,mp_TailLink,ml_Size); GetCLinkHeap().ReceiveLink
(mp_HeadLink, mp_TailLink, ml_Size);
mp_HeadLink=0 ; mp_HeadLink=0 ;
mp_TailLink=0 ; mp_TailLink=0 ;
ml_Size =0 ; ml_Size =0 ;
@ -1713,8 +1712,11 @@ namespace ZNsMain
}/* }/*
if(AL_DelSize==ml_Size)*/ if(AL_DelSize==ml_Size)*/
ZCLink* VP_NewTail=mp_HeadLink->GetNextPtr(ml_Size-AL_DelSize-1); ZCLink* VP_NewTail= mp_HeadLink->
GetCLinkHeap().ReceiveLink(VP_NewTail->mp_NextLink,mp_TailLink,AL_DelSize); GetNextPtr(ml_Size-AL_DelSize-1);
GetCLinkHeap().ReceiveLink
(VP_NewTail->mp_NextLink, mp_TailLink, AL_DelSize);
mp_TailLink = VP_NewTail ; mp_TailLink = VP_NewTail ;
mp_TailLink-> mp_NextLink=0 ; mp_TailLink-> mp_NextLink=0 ;
ml_Size -= AL_DelSize ; ml_Size -= AL_DelSize ;
@ -1807,7 +1809,13 @@ namespace ZNsMain
ZtCSimList VO_StoreList; ZtCSimList VO_StoreList;
CutLink(AP_CutHeadPrev,AP_CutHead,AL_CutHeadPos,AP_CutTail,AL_CutTailPos ,VO_StoreList).DeleteAll(); CutLink /*==========================================*/
(
AP_CutHeadPrev, AP_CutHead , AL_CutHeadPos,
AP_CutTail , AL_CutTailPos , VO_StoreList
).
DeleteAll() ;
/*==================================================*/
}/* }/*
void Delete /////////////////////////////////////// void Delete ///////////////////////////////////////
( (
@ -2227,6 +2235,70 @@ namespace ZNsMain
}/* }/*
const TType& GetDataInIter(const IterEasyID APPI_IterEasyID) const*/ const TType& GetDataInIter(const IterEasyID APPI_IterEasyID) const*/
ZCLink* ItHEasy(){return mp_HeadLink;}
IterEasyID ItHID (){return (IterEasyID)mp_HeadLink;}
ZCLink* ItTEasy(){return mp_TailLink;}
IterEasyID ItTID (){return (IterEasyID)mp_TailLink;}
const ZCLink* ItHEasy() const{return mp_HeadLink;}
const IterEasyID ItHID () const{return (IterEasyIDc)mp_HeadLink;}
const ZCLink* ItTEasy() const{return mp_TailLink;}
const IterEasyID ItTID () const{return (IterEasyIDc)mp_TailLink;}
void ItNext(ZCLink*& APR_CLink)
{
MoveNextIter(APR_CLink);
}/*
void ItNext(ZCLink*& APR_CLink)*/
void ItNext(IterEasyID& APPI_IterEasyID)
{
MoveNextIter(APPI_IterEasyID);
}/*
void ItNext(IterEasyID& APPI_IterEasyID)*/
void ItNext(const ZCLink*& APR_CLink) const
{
MoveNextIter(APR_CLink);
}/*
void ItNext(const ZCLink*& APR_CLink) const*/
void ItNext(const IterEasyID& APPI_IterEasyID) const
{
MoveNextIter(APPI_IterEasyID);
}/*
void ItNext(const IterEasyID& APPI_IterEasyID) const*/
TType& ItD(ZCLink* AP_CLink)
{
return **AP_CLink;
}/*
TType& ItD(ZCLink* AP_CLink)*/
TType& ItD(IterEasyID APPI_IterEasyID)
{
return ItD((ZCLink*)APPI_IterEasyID);
}/*
TType& ItD(IterEasyID APPI_IterEasyID)*/
const TType& ItD(const ZCLink* AP_CLink) const
{
return **AP_CLink;
}/*
const TType& ItD(const ZCLink* AP_CLink) const*/
const TType& ItD(const IterEasyID APPI_IterEasyID) const
{
return ItD((const ZCLink*)APPI_IterEasyID);
}/*
const TType& ItD(const IterEasyID APPI_IterEasyID) const*/
/* /*
public:*/ public:*/
};/* };/*