commit 2025-10-04 09:05 add IterElemLink() : ZCppMain/ZtCObjList.H
This commit is contained in:
@ -966,6 +966,23 @@ namespace ZNsMain
|
||||
const ZCLink* GetPrevPtr(TypeSize AL_Distance) const*/
|
||||
|
||||
|
||||
ZCLink& operator+(TypeSize AL_Distance)
|
||||
{
|
||||
if(AL_Distance>=0)
|
||||
return *GetNextPtr(AL_Distance);
|
||||
else return *GetPrevPtr(AL_Distance);
|
||||
}/*
|
||||
ZCLink& operator+(TypeSize AL_Distance)*/
|
||||
|
||||
const ZCLink& operator+(TypeSize AL_Distance) const
|
||||
{
|
||||
if(AL_Distance>=0)
|
||||
return *GetNextPtr(AL_Distance);
|
||||
else return *GetPrevPtr(AL_Distance);
|
||||
}/*
|
||||
const ZCLink& operator+(TypeSize AL_Distance) const*/
|
||||
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCLink*/
|
||||
@ -1789,7 +1806,7 @@ namespace ZNsMain
|
||||
ZtCObjList& DeleteHead()*/
|
||||
|
||||
|
||||
void DeleteHead(TTypSize AL_DelSize)
|
||||
void DeleteHead(TypeSize AL_DelSize)
|
||||
{
|
||||
// AL_DelSize 개의 링크를 앞 부분에서 삭제
|
||||
|
||||
@ -1819,7 +1836,7 @@ namespace ZNsMain
|
||||
|
||||
ZCLink::MakeRing(mp_HeadLink, VP_TailLink);
|
||||
}/*
|
||||
void DeleteHead(TTypSize AL_DelSize)*/
|
||||
void DeleteHead(TypeSize AL_DelSize)*/
|
||||
|
||||
|
||||
ZtCObjList& DeleteTail()
|
||||
@ -1837,7 +1854,7 @@ namespace ZNsMain
|
||||
ZtCObjList& DeleteTail()*/
|
||||
|
||||
|
||||
void DeleteTail(TTypSize AL_DelSize)
|
||||
void DeleteTail(TypeSize AL_DelSize)
|
||||
{
|
||||
if(ml_LinkSize==0 || AL_DelSize<1){ return; }
|
||||
|
||||
@ -1864,7 +1881,7 @@ namespace ZNsMain
|
||||
|
||||
ZCLink::MakeRing(mp_HeadLink, VP_NewTail);
|
||||
}/*
|
||||
void DeleteTail(TTypSize AL_DelSize)*/
|
||||
void DeleteTail(TypeSize AL_DelSize)*/
|
||||
|
||||
|
||||
ZCLink* AddDefault(TypeSize AL_DefaultSize, TypeSize AL_AddPos)
|
||||
@ -2527,6 +2544,55 @@ namespace ZNsMain
|
||||
###############################################################################*/
|
||||
|
||||
|
||||
template<typename TFunctor> void IterElemLink ///////////////////////
|
||||
(
|
||||
ZCLink& AR_StdLink ,
|
||||
TypeSize AL_WorkDistance,
|
||||
TFunctor AO_Functor
|
||||
)
|
||||
/*#################################################################*/
|
||||
{
|
||||
/* AP_StdLink 부터 AL_WorkDistance 만큼 이동하면서
|
||||
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.(총 수행 횟수는 (AL_WorkDistance)절대값+1)
|
||||
*/
|
||||
|
||||
ZCLink* VP_StdLink = &AR_StdLink;
|
||||
|
||||
if(AL_WorkDistance>=0)
|
||||
{
|
||||
for(TypeSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)
|
||||
{
|
||||
ZtCTypeData<TFunctor>::
|
||||
GetObjRef(AO_Functor)(*VP_StdLink);
|
||||
|
||||
VP_StdLink = VP_StdLink->mp_NextLink ;
|
||||
}/*
|
||||
for(TypeSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)*/
|
||||
}
|
||||
else // AL_WorkDistance<0
|
||||
{
|
||||
AL_WorkDistance = -AL_WorkDistance;
|
||||
|
||||
for(TypeSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)
|
||||
{
|
||||
ZtCTypeData<TFunctor>::
|
||||
GetObjRef(AO_Functor)(*VP_StdLink);
|
||||
|
||||
VP_StdLink = VP_StdLink->mp_PrevLink ;
|
||||
}/*
|
||||
for(TypeSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)*/
|
||||
}/*
|
||||
else // AL_WorkDistance<0*/
|
||||
}/*
|
||||
void IterElemLink ///////////////////////////////////////////////////
|
||||
(
|
||||
ZCLink& AR_StdLink ,
|
||||
TypeSize AL_WorkDistance,
|
||||
TFunctor AO_Functor
|
||||
)
|
||||
/*#################################################################*/
|
||||
|
||||
|
||||
|
||||
/*///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
Reference in New Issue
Block a user