commit 2025-10-04 12:08 add IterElemLink(TFunctor, TTypeHelp1, TTypeHelp2) : ZCppMain/ZMainHead.H
This commit is contained in:
@ -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;}
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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;
|
||||
}/*
|
||||
|
Reference in New Issue
Block a user