commit 2025-10-17 20:54 add class ZtCCheckRef<TType&> : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-17 20:55:05 +09:00
parent 0e4ae40622
commit e7692ddfd1
2 changed files with 116 additions and 53 deletions

View File

@ -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);

View File

@ -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;