commit 2025-10-17 19:13 add IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp) & IterTail() in ZtCTypeChain : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-17 19:13:38 +09:00
parent 9c746559f4
commit 0e4ae40622

View File

@ -3271,6 +3271,51 @@ namespace ZNsMain
AO_CView.template OnMeetType<TypeChainNow>();
}/*
static void IterTail(TViewChain AO_CView)*/
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
template<typename TTypeHelp> static void
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
{
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef;
typedef ZCCheckRef::TypeRaw TypeRaw ;
AO_CView.template
OnMeetType<TypeChainNow, TypeRaw>
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
if(TypeChainNow::ZEBoolNext>0)
{
TypeChainNext::template ZtCIterChain<TViewChain>
::template IterHead<TTypeHelp>(AO_CView, AO_TypeHelp) ;
}/*
if(TypeChainNow::ZEBoolNext>0)*/
}/*
template<typename TTypeHelp> static void
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
template<typename TTypeHelp> static void
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
{
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef;
typedef ZCCheckRef::TypeRaw TypeRaw ;
if(TypeChainNow::ZEBoolNext>0)
{
TypeChainNext::template ZtCIterChain<TViewChain>
::template IterTail<TTypeHelp>(AO_CView, AO_TypeHelp) ;
}/*
if(TypeChainNow::ZEBoolNext>0)*/
AO_CView.template
OnMeetType<TypeChainNow, TypeRaw>
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
}/*
template<typename TTypeHelp> static void
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
public:
};/*
template<typename TViewChain> class ZtCIterChain*/
@ -3309,6 +3354,36 @@ namespace ZNsMain
{ AO_CView.template OnMeetType<TypeChainNow>(); }
static void IterTail(TViewChain AO_CView)
{ AO_CView.template OnMeetType<TypeChainNow>(); }
template<typename TTypeHelp> static void
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
{
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
typedef ZCCheckRef::TypeRaw TypeRaw ;
AO_CView.template OnMeetType<TypeChainNow, TypeRaw>
( ZCCheckRef::PassData(AO_TypeHelp) );
}/*
template<typename TTypeHelp> static void
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
template<typename TTypeHelp> static void
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
{
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef;
typedef ZCCheckRef::TypeRaw TypeRaw ;
AO_CView.template
OnMeetType<TypeChainNow, TypeRaw>
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
}/*
template<typename TTypeHelp> static void
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
public:
};/*
template<typename TViewChain> class ZtCIterChain*/
@ -3351,6 +3426,70 @@ namespace ZNsMain
void ZftIterTmplChainTail(TTypeView AO_View)
*/
template
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
void ZftIterTmplChainHead
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
/*#############################################################*/
{
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
typedef ZCCheckRef::TypeRaw TypeRaw ;
AO_View.template OnMeetType<TTmplChain, TypeRaw>
( ZCCheckRef::PassData(AO_TypeHelp) );
if(TTmplChain::ZEBoolNext>0)
{
typedef typename
TTmplChain::TypeChainNext TypeChainNext;
ZftIterTmplChainHead
<TypeChainNext, TTypeView, TTypeHelp>
(AO_View, AO_TypeHelp);
}/*
if(TTmplChain::ZEBoolNext>0)*/
}/*
template
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
void ZftIterTmplChainHead
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
###############################################################*/
template
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
void ZftIterTmplChainTail
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
/*#############################################################*/
{
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
typedef ZCCheckRef::TypeRaw TypeRaw ;
if(TTmplChain::ZEBoolNext>0)
{
typedef typename
TTmplChain::TypeChainNext TypeChainNext;
ZftIterTmplChainTail
<TypeChainNext, TTypeView, TTypeHelp>
(AO_View, AO_TypeHelp);
}/*
if(TTmplChain::ZEBoolNext>0)*/
AO_View.template OnMeetType<TTmplChain, TypeRaw>
( ZCCheckRef::PassData(AO_TypeHelp) );
}/*
template
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
void ZftIterTmplChainTail
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
###############################################################*/
/*////////////////////////////////////////////////////////////////
■ ZtCTypeChain 예제.
@ -3367,6 +3506,10 @@ namespace ZNsMain
{
cout<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
template<typename TTypChain, typename TTypHelp> void OnMeetType(TTypHelp& AR_CallNo)
{
cout<<"* Call No="<<++AR_CallNo<<" : "<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
}
};
int main()
@ -3381,8 +3524,9 @@ namespace ZNsMain
ZCEmpty > > >
> ZCTypeChain; ZCTypeView VO_ZCTypeView;
cout<<"temp chain size = "<<ZCTypeChain::Size()<<endl;
int VI_CallNo = 0;
cout<<"temp chain size = "<<ZCTypeChain::Size()<<endl;
ZftIterTmplChainTail<ZCTypeChain, ZCTypeView&>(VO_ZCTypeView);
@ -3391,6 +3535,19 @@ namespace ZNsMain
cout<<"************************************"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView>::IterTail(VO_ZCTypeView);
ZftIterTmplChainHead<ZCTypeChain, ZCTypeView&, int&>
( VO_ZCTypeView, (VI_CallNo = 0) );
cout<<"************************************"<<endl;
ZftIterTmplChainTail<ZCTypeChain, ZCTypeView&, int&>
( VO_ZCTypeView, (VI_CallNo = 0) );
cout<<"************************************"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView>::
IterHead(VO_ZCTypeView, ZftMCP(VI_CallNo=0));
cout<<"************************************"<<endl;
ZCTypeChain::ZtCIterChain<ZCTypeView>::
IterTail(VO_ZCTypeView, ZftMCP(VI_CallNo=0));
return 0;
}