commit 2025-10-17 20:54 add class ZtCCheckRef<TType&> : ZCppMain/ZMainHead.H
This commit is contained in:
@ -1081,6 +1081,26 @@ namespace ZNsMain
|
||||
class ZtCCheckRef #################################################*/
|
||||
|
||||
|
||||
/* 참조 전문화 */
|
||||
template<typename TType>
|
||||
class ZtCCheckRef<TType&> /*#######################################*/
|
||||
{
|
||||
public :
|
||||
typedef TType& TypeData;
|
||||
typedef TType TypeRaw ;
|
||||
private:
|
||||
TypeData mr_Data;
|
||||
public :
|
||||
ZtCCheckRef(TypeData AR_TypeData) : mr_Data(AR_TypeData){}
|
||||
public :
|
||||
TypeData GetData(){return mr_Data;}
|
||||
public :
|
||||
static TypeData PassData(TypeData AO_Data){return AO_Data;}
|
||||
};/*
|
||||
template<typename TType>
|
||||
class ZtCCheckRef<TType&> #########################################*/
|
||||
|
||||
|
||||
/* ZtCRef 전문화 */
|
||||
template<typename TType>
|
||||
class ZtCCheckRef< ZtCRef<TType> > /*##############################*/
|
||||
@ -3277,18 +3297,17 @@ namespace ZNsMain
|
||||
template<typename TTypeHelp> static void
|
||||
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
||||
{
|
||||
typedef ZNsMain::
|
||||
ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
||||
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||
|
||||
AO_CView.template
|
||||
OnMeetType<TypeChainNow, TypeRaw>
|
||||
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
|
||||
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) ;
|
||||
TypeChainNext::template ZtCIterChain<TViewChain>::
|
||||
template IterHead<TTypeHelp>(AO_CView, AO_TypeHelp) ;
|
||||
}/*
|
||||
if(TypeChainNow::ZEBoolNext>0)*/
|
||||
}/*
|
||||
@ -3298,20 +3317,17 @@ namespace ZNsMain
|
||||
template<typename TTypeHelp> static void
|
||||
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
||||
{
|
||||
typedef ZNsMain::
|
||||
ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
||||
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||
typedef typename 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) ) ;
|
||||
TypeChainNext::template ZtCIterChain<TViewChain>::
|
||||
template IterTail<TTypeHelp>(AO_CView, AO_TypeHelp) ;
|
||||
}
|
||||
AO_CView.template OnMeetType<TypeChainNow, TypeRaw>
|
||||
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
|
||||
/*************************************************/
|
||||
}/*
|
||||
template<typename TTypeHelp> static void
|
||||
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
|
||||
@ -3354,13 +3370,13 @@ 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 ;
|
||||
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||
|
||||
AO_CView.template OnMeetType<TypeChainNow, TypeRaw>
|
||||
( ZCCheckRef::PassData(AO_TypeHelp) );
|
||||
@ -3368,18 +3384,16 @@ namespace ZNsMain
|
||||
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 ;
|
||||
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||
|
||||
AO_CView.template
|
||||
OnMeetType<TypeChainNow, TypeRaw>
|
||||
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
|
||||
AO_CView.template OnMeetType<TypeChainNow, TypeRaw>
|
||||
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
|
||||
}/*
|
||||
template<typename TTypeHelp> static void
|
||||
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
|
||||
@ -3392,52 +3406,51 @@ namespace ZNsMain
|
||||
|
||||
|
||||
template<typename TTmplChain, typename TTypeView>
|
||||
void ZftIterTmplChainHead(TTypeView AO_View)
|
||||
void ZftIterTmplChainHead(TTypeView AO_CView)
|
||||
{
|
||||
AO_View.template OnMeetType<TTmplChain>();
|
||||
AO_CView.template OnMeetType<TTmplChain>();
|
||||
|
||||
if(TTmplChain::ZEBoolNext>0)
|
||||
{
|
||||
typedef typename
|
||||
TTmplChain::TypeChainNext TypeChainNext;
|
||||
|
||||
ZftIterTmplChainHead<TypeChainNext, TTypeView>(AO_View);
|
||||
ZftIterTmplChainHead<TypeChainNext, TTypeView>(AO_CView);
|
||||
}/*
|
||||
if(TTmplChain::ZEBoolNext>0)*/
|
||||
}/*
|
||||
template<typename TTmplChain, typename TTypeView>
|
||||
void ZftIterTmplChainHead(TTypeView AO_View)
|
||||
void ZftIterTmplChainHead(TTypeView AO_CView)
|
||||
*/
|
||||
template<typename TTmplChain, typename TTypeView>
|
||||
void ZftIterTmplChainTail(TTypeView AO_View)
|
||||
void ZftIterTmplChainTail(TTypeView AO_CView)
|
||||
{
|
||||
if(TTmplChain::ZEBoolNext>0)
|
||||
{
|
||||
typedef typename
|
||||
TTmplChain::TypeChainNext TypeChainNext;
|
||||
|
||||
ZftIterTmplChainTail<TypeChainNext, TTypeView>(AO_View);
|
||||
ZftIterTmplChainTail<TypeChainNext, TTypeView>(AO_CView);
|
||||
}/*
|
||||
if(TTmplChain::ZEBoolNext>0)*/
|
||||
|
||||
AO_View.template OnMeetType<TTmplChain>();
|
||||
AO_CView.template OnMeetType<TTmplChain>();
|
||||
}/*
|
||||
template<typename TTmplChain, typename TTypeView>
|
||||
void ZftIterTmplChainTail(TTypeView AO_View)
|
||||
void ZftIterTmplChainTail(TTypeView AO_CView)
|
||||
*/
|
||||
|
||||
|
||||
template
|
||||
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
||||
void ZftIterTmplChainHead
|
||||
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
|
||||
(TTypeView AO_CView, TTypeHelp AO_TypeHelp)
|
||||
/*#############################################################*/
|
||||
{
|
||||
typedef ZNsMain::
|
||||
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
|
||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
||||
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||
|
||||
AO_View.template OnMeetType<TTmplChain, TypeRaw>
|
||||
AO_CView.template OnMeetType<TTmplChain, TypeRaw>
|
||||
( ZCCheckRef::PassData(AO_TypeHelp) );
|
||||
|
||||
if(TTmplChain::ZEBoolNext>0)
|
||||
@ -3447,26 +3460,25 @@ namespace ZNsMain
|
||||
|
||||
ZftIterTmplChainHead
|
||||
<TypeChainNext, TTypeView, TTypeHelp>
|
||||
(AO_View, AO_TypeHelp);
|
||||
(AO_CView, AO_TypeHelp);
|
||||
}/*
|
||||
if(TTmplChain::ZEBoolNext>0)*/
|
||||
}/*
|
||||
template
|
||||
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
||||
void ZftIterTmplChainHead
|
||||
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
|
||||
(TTypeView AO_CView, TTypeHelp AO_TypeHelp)
|
||||
###############################################################*/
|
||||
|
||||
|
||||
template
|
||||
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
||||
void ZftIterTmplChainTail
|
||||
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
|
||||
(TTypeView AO_CView, TTypeHelp AO_TypeHelp)
|
||||
/*#############################################################*/
|
||||
{
|
||||
typedef ZNsMain::
|
||||
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
|
||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
||||
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||
|
||||
if(TTmplChain::ZEBoolNext>0)
|
||||
{
|
||||
@ -3475,17 +3487,17 @@ namespace ZNsMain
|
||||
|
||||
ZftIterTmplChainTail
|
||||
<TypeChainNext, TTypeView, TTypeHelp>
|
||||
(AO_View, AO_TypeHelp);
|
||||
(AO_CView, AO_TypeHelp);
|
||||
}/*
|
||||
if(TTmplChain::ZEBoolNext>0)*/
|
||||
|
||||
AO_View.template OnMeetType<TTmplChain, TypeRaw>
|
||||
AO_CView.template OnMeetType<TTmplChain, TypeRaw>
|
||||
( ZCCheckRef::PassData(AO_TypeHelp) );
|
||||
}/*
|
||||
template
|
||||
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
||||
void ZftIterTmplChainTail
|
||||
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
|
||||
(TTypeView AO_CView, TTypeHelp AO_TypeHelp)
|
||||
###############################################################*/
|
||||
|
||||
|
||||
@ -3506,7 +3518,7 @@ namespace ZNsMain
|
||||
{
|
||||
cout<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
|
||||
}
|
||||
template<typename TTypChain, typename TTypHelp> void OnMeetType(TTypHelp& AR_CallNo)
|
||||
template<typename TTypChain, typename TTypHelp> void OnMeetType(int& AR_CallNo)
|
||||
{
|
||||
cout<<"* Call No="<<++AR_CallNo<<" : "<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
|
||||
}
|
||||
@ -3526,7 +3538,7 @@ namespace ZNsMain
|
||||
|
||||
int VI_CallNo = 0;
|
||||
|
||||
cout<<"temp chain size = "<<ZCTypeChain::Size()<<endl;
|
||||
cout<<"tmpl chain size = "<<ZCTypeChain::Size()<<endl;
|
||||
|
||||
ZftIterTmplChainTail<ZCTypeChain, ZCTypeView&>(VO_ZCTypeView);
|
||||
|
||||
|
@ -376,8 +376,59 @@ namespace ZNsMain
|
||||
static void ShowNode11_3(ZCLink11& AR_CLink, ZTypLong& ARRI_CallCnt)*/
|
||||
|
||||
|
||||
class ZCTypeView
|
||||
{
|
||||
public:
|
||||
|
||||
template<typename TTypChain> void OnMeetType()
|
||||
{
|
||||
cout<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
|
||||
}
|
||||
template<typename TTypChain, typename TTypHelp> void OnMeetType(int& AR_CallNo)
|
||||
{
|
||||
cout<<"* Call No="<<++AR_CallNo<<" : "<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
|
||||
}
|
||||
};/*
|
||||
class ZCTypeView*/
|
||||
|
||||
|
||||
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
|
||||
{
|
||||
typedef ZtCTypeChain
|
||||
<
|
||||
double , ZtCTypeChain<
|
||||
int , ZtCTypeChain<
|
||||
wchar_t, ZtCTypeChain<
|
||||
char ,
|
||||
|
||||
ZCEmpty > > >
|
||||
> ZCTypeChain; ZCTypeView VO_ZCTypeView;
|
||||
|
||||
int VI_CallNo = 0;
|
||||
|
||||
cout<<"*** tmpl chain size = "<<ZCTypeChain::Size()<<endl;
|
||||
|
||||
ZftIterTmplChainTail<ZCTypeChain, ZCTypeView&>(VO_ZCTypeView);
|
||||
|
||||
cout<<"************************************"<<endl;
|
||||
ZCTypeChain::ZtCIterChain<ZCTypeView>::IterHead(VO_ZCTypeView);
|
||||
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));
|
||||
|
||||
|
||||
ZTypLong VI_CallCnt=0;
|
||||
|
||||
CStringBase VO_CStringBase;
|
||||
|
Reference in New Issue
Block a user