commit 2025-09-09 11:02 add ItHID(), ItNext() etc in ZCppMain/ZtCSimList.H
This commit is contained in:
@ -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:*/
|
||||||
};/*
|
};/*
|
||||||
|
Reference in New Issue
Block a user