commit 2025-10-18 16:33 add ZtCMiniValChain : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-18 16:33:51 +09:00
parent ea178aa11a
commit b5f71d95d2

View File

@ -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
{
/*////////////////////////////////////////////////////////////