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 #################################################*/
|
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 전문화 */
|
/* ZtCRef 전문화 */
|
||||||
template<typename TType>
|
template<typename TType>
|
||||||
class ZtCCheckRef< ZtCRef<TType> > /*##############################*/
|
class ZtCCheckRef< ZtCRef<TType> > /*##############################*/
|
||||||
@ -3277,18 +3297,17 @@ namespace ZNsMain
|
|||||||
template<typename TTypeHelp> static void
|
template<typename TTypeHelp> static void
|
||||||
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
||||||
{
|
{
|
||||||
typedef ZNsMain::
|
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||||
ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
|
||||||
|
|
||||||
AO_CView.template
|
AO_CView.template OnMeetType<TypeChainNow, TypeRaw>
|
||||||
OnMeetType<TypeChainNow, TypeRaw>
|
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
|
||||||
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
|
/*************************************************/
|
||||||
|
|
||||||
if(TypeChainNow::ZEBoolNext>0)
|
if(TypeChainNow::ZEBoolNext>0)
|
||||||
{
|
{
|
||||||
TypeChainNext::template ZtCIterChain<TViewChain>
|
TypeChainNext::template ZtCIterChain<TViewChain>::
|
||||||
::template IterHead<TTypeHelp>(AO_CView, AO_TypeHelp) ;
|
template IterHead<TTypeHelp>(AO_CView, AO_TypeHelp) ;
|
||||||
}/*
|
}/*
|
||||||
if(TypeChainNow::ZEBoolNext>0)*/
|
if(TypeChainNow::ZEBoolNext>0)*/
|
||||||
}/*
|
}/*
|
||||||
@ -3298,20 +3317,17 @@ namespace ZNsMain
|
|||||||
template<typename TTypeHelp> static void
|
template<typename TTypeHelp> static void
|
||||||
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
||||||
{
|
{
|
||||||
typedef ZNsMain::
|
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||||
ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
|
||||||
|
|
||||||
if(TypeChainNow::ZEBoolNext>0)
|
if(TypeChainNow::ZEBoolNext>0)
|
||||||
{
|
{
|
||||||
TypeChainNext::template ZtCIterChain<TViewChain>
|
TypeChainNext::template ZtCIterChain<TViewChain>::
|
||||||
::template IterTail<TTypeHelp>(AO_CView, AO_TypeHelp) ;
|
template IterTail<TTypeHelp>(AO_CView, AO_TypeHelp) ;
|
||||||
}/*
|
}
|
||||||
if(TypeChainNow::ZEBoolNext>0)*/
|
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
|
template<typename TTypeHelp> static void
|
||||||
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
|
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
|
||||||
@ -3354,13 +3370,13 @@ namespace ZNsMain
|
|||||||
{ AO_CView.template OnMeetType<TypeChainNow>(); }
|
{ AO_CView.template OnMeetType<TypeChainNow>(); }
|
||||||
static void IterTail(TViewChain AO_CView)
|
static void IterTail(TViewChain AO_CView)
|
||||||
{ AO_CView.template OnMeetType<TypeChainNow>(); }
|
{ AO_CView.template OnMeetType<TypeChainNow>(); }
|
||||||
|
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||||
|
|
||||||
template<typename TTypeHelp> static void
|
template<typename TTypeHelp> static void
|
||||||
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
||||||
{
|
{
|
||||||
typedef ZNsMain::
|
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||||
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
|
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
|
||||||
|
|
||||||
AO_CView.template OnMeetType<TypeChainNow, TypeRaw>
|
AO_CView.template OnMeetType<TypeChainNow, TypeRaw>
|
||||||
( ZCCheckRef::PassData(AO_TypeHelp) );
|
( ZCCheckRef::PassData(AO_TypeHelp) );
|
||||||
@ -3368,18 +3384,16 @@ namespace ZNsMain
|
|||||||
template<typename TTypeHelp> static void
|
template<typename TTypeHelp> static void
|
||||||
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
|
IterHead(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
|
||||||
|
|
||||||
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
/*****************************************************************/
|
||||||
|
|
||||||
template<typename TTypeHelp> static void
|
template<typename TTypeHelp> static void
|
||||||
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)
|
||||||
{
|
{
|
||||||
typedef ZNsMain::
|
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||||
ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
|
||||||
|
|
||||||
AO_CView.template
|
AO_CView.template OnMeetType<TypeChainNow, TypeRaw>
|
||||||
OnMeetType<TypeChainNow, TypeRaw>
|
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
|
||||||
( ZCCheckRef::PassData(AO_TypeHelp) ) ;
|
|
||||||
}/*
|
}/*
|
||||||
template<typename TTypeHelp> static void
|
template<typename TTypeHelp> static void
|
||||||
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
|
IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp)*/
|
||||||
@ -3392,52 +3406,51 @@ namespace ZNsMain
|
|||||||
|
|
||||||
|
|
||||||
template<typename TTmplChain, typename TTypeView>
|
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)
|
if(TTmplChain::ZEBoolNext>0)
|
||||||
{
|
{
|
||||||
typedef typename
|
typedef typename
|
||||||
TTmplChain::TypeChainNext TypeChainNext;
|
TTmplChain::TypeChainNext TypeChainNext;
|
||||||
|
|
||||||
ZftIterTmplChainHead<TypeChainNext, TTypeView>(AO_View);
|
ZftIterTmplChainHead<TypeChainNext, TTypeView>(AO_CView);
|
||||||
}/*
|
}/*
|
||||||
if(TTmplChain::ZEBoolNext>0)*/
|
if(TTmplChain::ZEBoolNext>0)*/
|
||||||
}/*
|
}/*
|
||||||
template<typename TTmplChain, typename TTypeView>
|
template<typename TTmplChain, typename TTypeView>
|
||||||
void ZftIterTmplChainHead(TTypeView AO_View)
|
void ZftIterTmplChainHead(TTypeView AO_CView)
|
||||||
*/
|
*/
|
||||||
template<typename TTmplChain, typename TTypeView>
|
template<typename TTmplChain, typename TTypeView>
|
||||||
void ZftIterTmplChainTail(TTypeView AO_View)
|
void ZftIterTmplChainTail(TTypeView AO_CView)
|
||||||
{
|
{
|
||||||
if(TTmplChain::ZEBoolNext>0)
|
if(TTmplChain::ZEBoolNext>0)
|
||||||
{
|
{
|
||||||
typedef typename
|
typedef typename
|
||||||
TTmplChain::TypeChainNext TypeChainNext;
|
TTmplChain::TypeChainNext TypeChainNext;
|
||||||
|
|
||||||
ZftIterTmplChainTail<TypeChainNext, TTypeView>(AO_View);
|
ZftIterTmplChainTail<TypeChainNext, TTypeView>(AO_CView);
|
||||||
}/*
|
}/*
|
||||||
if(TTmplChain::ZEBoolNext>0)*/
|
if(TTmplChain::ZEBoolNext>0)*/
|
||||||
|
|
||||||
AO_View.template OnMeetType<TTmplChain>();
|
AO_CView.template OnMeetType<TTmplChain>();
|
||||||
}/*
|
}/*
|
||||||
template<typename TTmplChain, typename TTypeView>
|
template<typename TTmplChain, typename TTypeView>
|
||||||
void ZftIterTmplChainTail(TTypeView AO_View)
|
void ZftIterTmplChainTail(TTypeView AO_CView)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
template
|
template
|
||||||
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
||||||
void ZftIterTmplChainHead
|
void ZftIterTmplChainHead
|
||||||
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
|
(TTypeView AO_CView, TTypeHelp AO_TypeHelp)
|
||||||
/*#############################################################*/
|
/*#############################################################*/
|
||||||
{
|
{
|
||||||
typedef ZNsMain::
|
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||||
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
|
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
|
||||||
|
|
||||||
AO_View.template OnMeetType<TTmplChain, TypeRaw>
|
AO_CView.template OnMeetType<TTmplChain, TypeRaw>
|
||||||
( ZCCheckRef::PassData(AO_TypeHelp) );
|
( ZCCheckRef::PassData(AO_TypeHelp) );
|
||||||
|
|
||||||
if(TTmplChain::ZEBoolNext>0)
|
if(TTmplChain::ZEBoolNext>0)
|
||||||
@ -3447,26 +3460,25 @@ namespace ZNsMain
|
|||||||
|
|
||||||
ZftIterTmplChainHead
|
ZftIterTmplChainHead
|
||||||
<TypeChainNext, TTypeView, TTypeHelp>
|
<TypeChainNext, TTypeView, TTypeHelp>
|
||||||
(AO_View, AO_TypeHelp);
|
(AO_CView, AO_TypeHelp);
|
||||||
}/*
|
}/*
|
||||||
if(TTmplChain::ZEBoolNext>0)*/
|
if(TTmplChain::ZEBoolNext>0)*/
|
||||||
}/*
|
}/*
|
||||||
template
|
template
|
||||||
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
||||||
void ZftIterTmplChainHead
|
void ZftIterTmplChainHead
|
||||||
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
|
(TTypeView AO_CView, TTypeHelp AO_TypeHelp)
|
||||||
###############################################################*/
|
###############################################################*/
|
||||||
|
|
||||||
|
|
||||||
template
|
template
|
||||||
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
||||||
void ZftIterTmplChainTail
|
void ZftIterTmplChainTail
|
||||||
(TTypeView AO_View, TTypeHelp AO_TypeHelp)
|
(TTypeView AO_CView, TTypeHelp AO_TypeHelp)
|
||||||
/*#############################################################*/
|
/*#############################################################*/
|
||||||
{
|
{
|
||||||
typedef ZNsMain::
|
typedef ZNsMain::ZtCCheckRef<TTypeHelp> ZCCheckRef;
|
||||||
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
|
typedef typename ZCCheckRef::TypeRaw TypeRaw ;
|
||||||
typedef ZCCheckRef::TypeRaw TypeRaw ;
|
|
||||||
|
|
||||||
if(TTmplChain::ZEBoolNext>0)
|
if(TTmplChain::ZEBoolNext>0)
|
||||||
{
|
{
|
||||||
@ -3475,17 +3487,17 @@ namespace ZNsMain
|
|||||||
|
|
||||||
ZftIterTmplChainTail
|
ZftIterTmplChainTail
|
||||||
<TypeChainNext, TTypeView, TTypeHelp>
|
<TypeChainNext, TTypeView, TTypeHelp>
|
||||||
(AO_View, AO_TypeHelp);
|
(AO_CView, AO_TypeHelp);
|
||||||
}/*
|
}/*
|
||||||
if(TTmplChain::ZEBoolNext>0)*/
|
if(TTmplChain::ZEBoolNext>0)*/
|
||||||
|
|
||||||
AO_View.template OnMeetType<TTmplChain, TypeRaw>
|
AO_CView.template OnMeetType<TTmplChain, TypeRaw>
|
||||||
( ZCCheckRef::PassData(AO_TypeHelp) );
|
( ZCCheckRef::PassData(AO_TypeHelp) );
|
||||||
}/*
|
}/*
|
||||||
template
|
template
|
||||||
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
<typename TTmplChain, typename TTypeView, typename TTypeHelp>
|
||||||
void ZftIterTmplChainTail
|
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;
|
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;
|
cout<<"* Call No="<<++AR_CallNo<<" : "<<TTypChain::ZETypeNo<<" : "<<typeid(typename TTypChain::TypeData).name()<<endl;
|
||||||
}
|
}
|
||||||
@ -3526,7 +3538,7 @@ namespace ZNsMain
|
|||||||
|
|
||||||
int VI_CallNo = 0;
|
int VI_CallNo = 0;
|
||||||
|
|
||||||
cout<<"temp chain size = "<<ZCTypeChain::Size()<<endl;
|
cout<<"tmpl chain size = "<<ZCTypeChain::Size()<<endl;
|
||||||
|
|
||||||
ZftIterTmplChainTail<ZCTypeChain, ZCTypeView&>(VO_ZCTypeView);
|
ZftIterTmplChainTail<ZCTypeChain, ZCTypeView&>(VO_ZCTypeView);
|
||||||
|
|
||||||
|
@ -376,8 +376,59 @@ namespace ZNsMain
|
|||||||
static void ShowNode11_3(ZCLink11& AR_CLink, ZTypLong& ARRI_CallCnt)*/
|
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)
|
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;
|
ZTypLong VI_CallCnt=0;
|
||||||
|
|
||||||
CStringBase VO_CStringBase;
|
CStringBase VO_CStringBase;
|
||||||
|
Reference in New Issue
Block a user