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) */
|
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* GetHeadLinkPtr(){return mp_HeadLink;}
|
||||||
ZCLink* GetTailLinkPtr(){return mp_TailLink;}
|
ZCLink* GetTailLinkPtr(){return mp_TailLink;}
|
||||||
|
@ -2600,6 +2600,38 @@ namespace ZNsMain
|
|||||||
void IterElemLink(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
|
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 ///////////////////////
|
template<typename TFunctor> void IterElemLink ///////////////////////
|
||||||
(
|
(
|
||||||
ZCLink& AR_StdLink ,
|
ZCLink& AR_StdLink ,
|
||||||
@ -2609,9 +2641,9 @@ namespace ZNsMain
|
|||||||
/*#################################################################*/
|
/*#################################################################*/
|
||||||
{
|
{
|
||||||
/* AP_StdLink 부터 AL_WorkDistance 만큼 이동하면서
|
/* AP_StdLink 부터 AL_WorkDistance 만큼 이동하면서
|
||||||
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.(총 수행 횟수는 (AL_WorkDistance)절대값+1)
|
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.
|
||||||
|
(총 수행 횟수는 (AL_WorkDistance)절대값+1)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ZCLink* VP_StdLink = &AR_StdLink;
|
ZCLink* VP_StdLink = &AR_StdLink;
|
||||||
|
|
||||||
if(AL_WorkDistance>=0)
|
if(AL_WorkDistance>=0)
|
||||||
|
@ -2238,48 +2238,64 @@ namespace ZNsMain
|
|||||||
void IterElemLink(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */
|
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 ///////////////////////
|
template<typename TFunctor> void IterElemLink ///////////////////////
|
||||||
(
|
(
|
||||||
ZCLink* AP_StdLink ,
|
ZCLink& AR_StdLink ,
|
||||||
TTypSize AL_WorkDistance,
|
TTypSize AL_WorkDistance,
|
||||||
TFunctor AO_Functor
|
TFunctor AO_Functor
|
||||||
)
|
)
|
||||||
/*#################################################################*/
|
/*#################################################################*/
|
||||||
{
|
{
|
||||||
/* AP_StdLink 부터 AL_WorkDistance 만큼 이동하면서
|
/* AR_StdLink 부터 AL_WorkDistance 만큼 이동하면서
|
||||||
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.(총 수행 횟수는 (AL_WorkDistance)절대값+1)
|
* 각 ZCLink 에 대하여 AO_Functor() 함수를 수행한다.
|
||||||
|
(총 수행 횟수는 (AL_WorkDistance)절대값+1)
|
||||||
*/
|
*/
|
||||||
|
ZCLink* VP_StdLink = &AR_StdLink;
|
||||||
#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
|
|
||||||
|
|
||||||
for(TTypSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)
|
for(TTypSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)
|
||||||
{
|
{
|
||||||
ZtCTypeData<TFunctor>::
|
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)*/
|
for(TTypSize VL_Loop=0; VL_Loop<=AL_WorkDistance; ++VL_Loop)*/
|
||||||
}/*
|
}/*
|
||||||
void IterElemLink ///////////////////////////////////////////////////
|
void IterElemLink ///////////////////////////////////////////////////
|
||||||
(
|
(
|
||||||
ZCLink* AP_StdLink ,
|
ZCLink& AR_StdLink ,
|
||||||
TTypSize AL_WorkDistance,
|
TTypSize AL_WorkDistance,
|
||||||
TFunctor AO_Functor
|
TFunctor AO_Functor
|
||||||
)
|
)
|
||||||
|
@ -323,6 +323,22 @@ namespace ZNsMain
|
|||||||
static void ShowNode11(ZCLink11& AR_CLink)*/
|
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)
|
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
|
||||||
{
|
{
|
||||||
CStringBase VO_CStringBase;
|
CStringBase VO_CStringBase;
|
||||||
@ -430,6 +446,8 @@ namespace ZNsMain
|
|||||||
cout<<"# VO_ZCBaseListEx10_2 : capacity()="<<VO_ZCBaseListEx10_2.capacity()<<endl;
|
cout<<"# VO_ZCBaseListEx10_2 : capacity()="<<VO_ZCBaseListEx10_2.capacity()<<endl;
|
||||||
|
|
||||||
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10);
|
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10);
|
||||||
|
cout<<"*****************************************************"<<endl;
|
||||||
|
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_2, ZftMCP(cout));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}/*
|
}/*
|
||||||
|
Reference in New Issue
Block a user