commit 2025-10-04 12:08 add IterElemLink(TFunctor, TTypeHelp1, TTypeHelp2) : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-04 12:08:13 +09:00
parent a721d4465a
commit 989273ee18
4 changed files with 125 additions and 28 deletions

View File

@ -6296,6 +6296,37 @@ namespace ZNsMain
void IterElemLink(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
void IterElemLink
( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 )
/*#############################################################################*/
{
typedef ZNsMain::ZtCCheckRef<TTypeHelp1> ZCCheckRef1;
typedef ZNsMain::ZtCCheckRef<TTypeHelp2> ZCCheckRef2;
ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
*VP_LoopLink
, ZCCheckRef1::PassData(AO_TypeHelp1)
, ZCCheckRef2::PassData(AO_TypeHelp2)
);
////////////////////////////////////////////
VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/*
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
void IterElemLink
( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 )
###############################################################################*/
ZCLink* GetHeadLinkPtr(){return mp_HeadLink;}
ZCLink* GetTailLinkPtr(){return mp_TailLink;}

View File

@ -2600,6 +2600,38 @@ namespace ZNsMain
void IterElemLink(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
void IterElemLink
( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 )
/*#############################################################################*/
{
typedef ZNsMain::ZtCCheckRef<TTypeHelp1> ZCCheckRef1;
typedef ZNsMain::ZtCCheckRef<TTypeHelp2> ZCCheckRef2;
ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
*VP_LoopLink
, ZCCheckRef1::PassData(AO_TypeHelp1)
, ZCCheckRef2::PassData(AO_TypeHelp2)
);
////////////////////////////////////////////
VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/*
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
void IterElemLink
( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 )
###############################################################################*/
template<typename TFunctor> void IterElemLink ///////////////////////
(
ZCLink& AR_StdLink ,
@ -2609,9 +2641,9 @@ namespace ZNsMain
/*#################################################################*/
{
/* AP_StdLink 부터 AL_WorkDistance 만큼 이동하면서
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.(총 수행 횟수는 (AL_WorkDistance)절대값+1)
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.
(총 수행 횟수는 (AL_WorkDistance)절대값+1)
*/
ZCLink* VP_StdLink = &AR_StdLink;
if(AL_WorkDistance>=0)

View File

@ -2238,48 +2238,64 @@ namespace ZNsMain
void IterElemLink(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
void IterElemLink
( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 )
/*#############################################################################*/
{
typedef ZNsMain::ZtCCheckRef<TTypeHelp1> ZCCheckRef1;
typedef ZNsMain::ZtCCheckRef<TTypeHelp2> ZCCheckRef2;
ZCLink* VP_LoopLink=mp_HeadLink;
__for0(TypeSize, i, ml_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
*VP_LoopLink
, ZCCheckRef1::PassData(AO_TypeHelp1)
, ZCCheckRef2::PassData(AO_TypeHelp2)
);
////////////////////////////////////////////
VP_LoopLink = VP_LoopLink->mp_NextLink ;
}/*
__for0(TypeSize, i, ml_LinkSize)*/
}/*
template
< typename TFunctor , typename TTypeHelp1 , typename TTypeHelp2 >
void IterElemLink
( TFunctor AO_Functor, TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2 )
###############################################################################*/
template<typename TFunctor> void IterElemLink ///////////////////////
(
ZCLink* AP_StdLink ,
ZCLink& AR_StdLink ,
TTypSize AL_WorkDistance,
TFunctor AO_Functor
)
/*#################################################################*/
{
/* AP_StdLink 부터 AL_WorkDistance 만큼 이동하면서
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.(총 수행 횟수는 (AL_WorkDistance)절대값+1)
/* AR_StdLink 부터 AL_WorkDistance 만큼 이동하면서
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.
(총 수행 횟수는 (AL_WorkDistance)절대값+1)
*/
#ifdef _DEBUG
if(ml_LinkSize==0 || Find(AP_StdLink)==0 || AL_WorkDistance>=ml_LinkSize || AL_WorkDistance<0)
{
std::fstream fileout("DEBUG.txt",std::ios::out | std::ios::app);
fileout<<std::endl<<"File : "<<__FILE__<<std::endl<<"Line : "<<__LINE__<<std::endl;
fileout<<"Error In 'void IterElemLink( ZCLink* AP_StdLink ,"<<std::endl;
fileout<<" TTypSize AL_WorkDistance,"<<std::endl;
fileout<<" TFunctor AO_Functor"<<std::endl;
fileout<<" )' :"<<std::endl;
fileout<<" Parameters are not valid"<<std::endl;
fileout.close();
exit(1);
}
/*if(ml_LinkSize==0 || Find(AP_StdLink)==0 || AL_WorkDistance>=ml_LinkSize || AL_WorkDistance<0)*/
#endif //_DEBUG
ZCLink* VP_StdLink = &AR_StdLink;
for(TTypSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)
{
ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)(AP_StdLink);
GetObjRef(AO_Functor)(*VP_StdLink);
AP_StdLink = AP_StdLink->mp_NextLink ;
VP_StdLink = VP_StdLink->mp_NextLink ;
}/*
for(TTypSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)*/
}/*
void IterElemLink ///////////////////////////////////////////////////
(
ZCLink* AP_StdLink ,
ZCLink& AR_StdLink ,
TTypSize AL_WorkDistance,
TFunctor AO_Functor
)

View File

@ -310,19 +310,35 @@ namespace ZNsMain
static void ShowNode10(ZCLink10& AR_CLink)
{
cout<<"* Node10 Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node10 Curr : "<<*(AR_CLink )<<endl;
cout<<"* Node10 Curr : " <<*(AR_CLink )<<endl;
cout<<"* Node10 Prev : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode10(ZCLink10& AR_CLink)*/
static void ShowNode11(ZCLink11& AR_CLink)
{
cout<<"* Node11 Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node11 Curr : "<<*(AR_CLink )<<endl;
cout<<"* Node11 Curr : " <<*(AR_CLink )<<endl;
cout<<"* Node11 Prev : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode11(ZCLink11& AR_CLink)*/
static void ShowNode10_2(ZCLink10& AR_CLink, ostream& AR_OS)
{
cout<<"* Node10_2 Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node10_2 Curr : " <<*(AR_CLink )<<endl;
cout<<"* Node10_2 Prev : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode10_2(ZCLink10& AR_CLink, ostream& AR_OS)*/
static void ShowNode11_2(ZCLink11& AR_CLink, ostream& AR_OS)
{
cout<<"* Node11_2 Prev : "<<*(AR_CLink-1)<<endl;
cout<<"* Node11_2 Curr : " <<*(AR_CLink )<<endl;
cout<<"* Node11_2 Prev : "<<*(AR_CLink+1)<<endl;
}/*
static void ShowNode11_2(ZCLink11& AR_CLink, ostream& AR_OS)*/
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{
CStringBase VO_CStringBase;
@ -430,6 +446,8 @@ namespace ZNsMain
cout<<"# VO_ZCBaseListEx10_2 : capacity()="<<VO_ZCBaseListEx10_2.capacity()<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10);
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_2, ZftMCP(cout));
return 0;
}/*