commit 2025-10-04 09:05 add IterElemLink() : ZCppMain/ZtCObjList.H

This commit is contained in:
2025-10-04 09:05:34 +09:00
parent 933bed0404
commit 90bfd26996
2 changed files with 89 additions and 23 deletions

View File

@ -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
)
/*#################################################################*/
/*///////////////////////////////////////////////////////////////////////////