commit 2025-10-18 16:33 add ZtCMiniValChain : ZCppMain/ZMainHead.H
This commit is contained in:
@ -3813,6 +3813,11 @@ namespace ZNsMain
|
||||
|
||||
-- 2025-10-18 02:10
|
||||
|
||||
실제로 ZtCMiniArrByChain 를 설계해, 주로 기본 자료형의 배열을 만
|
||||
들수 있게 했다.
|
||||
|
||||
-- 2025-10-18 16:23
|
||||
|
||||
///////////////////////////////////////////////////////////////////*/
|
||||
|
||||
template /*########################################################*/
|
||||
@ -4004,6 +4009,117 @@ namespace ZNsMain
|
||||
|
||||
|
||||
|
||||
/*///////////////////////////////////////////////////////////////////
|
||||
|
||||
■ class ZtCMiniValChain<>
|
||||
|
||||
ZtCMiniValChain 을 이용해 주로 기본 자료형에 대해 배열을 만들고
|
||||
초기화한다. 단, 당장은 크게 쓸모있어 보이지는 않는다.
|
||||
|
||||
-- 2025-10-18 16:25
|
||||
|
||||
■ class ZtCMiniValChain<> 사용 예.
|
||||
|
||||
typedef ZtCMiniValChain
|
||||
<
|
||||
char , 'a' , ZtCMiniValChain<
|
||||
char , 'b' , ZtCMiniValChain<
|
||||
char , 'c' , ZtCMiniValChain<
|
||||
char , 'd' , ZtCMiniValChain<
|
||||
char , 'e' , ZtCMiniValChain<
|
||||
char , 'f' , ZtCMiniValChain<
|
||||
char , 'g' , ZtCMiniValChain<
|
||||
char , 'h' ,
|
||||
ZCEmpty > > > > > > >
|
||||
> ZCCharValChain ;
|
||||
|
||||
typedef ZtCMiniArrByChain
|
||||
<char, ZCCharValChain> ZCMiniArrByChain;
|
||||
|
||||
ZCMiniArrByChain VO_CMiniArrByChain;
|
||||
|
||||
cout<<"# VO_CMiniArrByChain.size()="<<VO_CMiniArrByChain.size()<<endl;
|
||||
cout<<"# VO_CMiniArrByChain.data()="<<VO_CMiniArrByChain.data()<<endl;
|
||||
|
||||
-- 2025-10-18 16:26
|
||||
|
||||
///////////////////////////////////////////////////////////////////*/
|
||||
|
||||
template /*########################################################*/
|
||||
<
|
||||
typename TTypData, typename TCMiniValChain
|
||||
>
|
||||
class ZtCMiniArrByChain /////////////////////////////////////////////
|
||||
{
|
||||
public :
|
||||
typedef TTypData TypeData ;
|
||||
typedef TCMiniValChain TypeChain ;
|
||||
public :
|
||||
typedef const TTypData TypeDataC ;
|
||||
public :
|
||||
enum{ZESize = TCMiniValChain::ZETypeNo};
|
||||
public :
|
||||
typedef TTypData TypeArrr[ZESize+1];
|
||||
/*******************************************************************/
|
||||
TypeArrr mo_TypeArr;
|
||||
public :
|
||||
static ZTypIntE Size (){return ZESize;}
|
||||
static ZTypIntE size (){return ZESize;}
|
||||
public :
|
||||
TypeData * GetArray() {return mo_TypeArr;}
|
||||
TypeDataC* GetArray() const{return mo_TypeArr;}
|
||||
TypeData * data () {return mo_TypeArr;}
|
||||
TypeDataC* data () const{return mo_TypeArr;}
|
||||
private:
|
||||
|
||||
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||
class ZCTypeView
|
||||
{
|
||||
private:
|
||||
ZTypIntE mi_CallNo;
|
||||
public :
|
||||
ZCTypeView(){mi_CallNo=0;}
|
||||
public :
|
||||
|
||||
template
|
||||
<typename TTypChain, typename THelpArray>
|
||||
void OnMeetTypeVal(TypeData* mp_Array)
|
||||
{
|
||||
mp_Array[mi_CallNo++] = TTypChain::GetData() ;
|
||||
}/*
|
||||
template
|
||||
<typename TTypChain, typename THelpArray>
|
||||
void OnMeetTypeVal(TypeData* mp_Array) */
|
||||
|
||||
public :
|
||||
};/*
|
||||
class ZCTypeView*/
|
||||
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||
|
||||
private:
|
||||
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||
public :
|
||||
|
||||
ZtCMiniArrByChain()
|
||||
{
|
||||
ZCTypeView VO_ZCTypeView; mo_TypeArr[ZESize]=0;
|
||||
|
||||
TypeChain::template ZtCIterChain<ZCTypeView&>::
|
||||
IterHead( VO_ZCTypeView, mo_TypeArr );
|
||||
/*********************************************/
|
||||
}/*
|
||||
ZtCMiniArrByChain()*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
template /*##########################################################
|
||||
<
|
||||
typename TTypData, typename TCMiniValChain
|
||||
>
|
||||
class ZtCMiniArrByChain ///////////////////////////////////////////*/
|
||||
|
||||
|
||||
|
||||
namespace ZNsTmplChain
|
||||
{
|
||||
/*////////////////////////////////////////////////////////////
|
||||
|
Reference in New Issue
Block a user