commit 2025-08-24 23:40 add ZCppMain/ZMainCGI.H

This commit is contained in:
2025-08-24 23:40:24 +09:00
parent 3a73a7501c
commit 3f91ce4980

628
ZCppMain/ZMainCGI.H Normal file
View File

@ -0,0 +1,628 @@
#ifndef __ZNSMAIN__ZMAIN_CGI_H__
#define __ZNSMAIN__ZMAIN_CGI_H__
#include "ZCppMain/ZMainHead.H"
#include "ZCppMain/ZMainEnc.H"
#include "ZCppMain/ZtCStringEx.H"
#include "ZCppMain/ZtCObjAVL.H"
#include "ZCppMain/ZtCLoadXml.H"
#include "ZCppMain/ZtCLoadDataBlock.H"
namespace ZNsMain
{
namespace ZNsCGI
{
namespace NsInterface
{
}/*
namespace NsInterface*/
namespace NsIFace
{
using namespace NsInterface;
}/*
namespace NsIFace*/
namespace ZNsBase
{
template<typename TStringData> class ZtCEnvVar
{
protected:
TStringData mo_CStrEnvName ;
TStringData mo_CStrEnvValue;
public :
ZtCEnvVar()
{
}/*
ZtCEnvVar()*/
ZtCEnvVar(const TStringData& AR_CStrEnvName)
{
mo_CStrEnvName = AR_CStrEnvName;
}/*
ZtCEnvVar(const TStringData& AR_CStrEnvName)*/
ZtCEnvVar(const TStringData& AR_CStrEnvName, const TStringData& AR_CStrEnvValue)
{
mo_CStrEnvName = AR_CStrEnvName ;
mo_CStrEnvValue = AR_CStrEnvValue;
}/*
ZtCEnvVar(const TStringData& AR_CStrEnvName, const TStringData& AR_CStrEnvValue)*/
ZtCEnvVar<TStringData>& operator=(const ZtCEnvVar<TStringData>& rhs)
{
mo_CStrEnvName = rhs.mo_CStrEnvName ;
mo_CStrEnvValue = rhs.mo_CStrEnvValue; return *this;
}/*
ZtCEnvVar<TStringData>& operator=(const ZtCEnvVar<TStringData>& rhs)*/
ZtCEnvVar<TStringData>& operator=(const TStringData& AR_CStrEnvName)
{
mo_CStrEnvName = AR_CStrEnvName; return *this;
}/*
ZtCEnvVar<TStringData>& operator=(const ZtCEnvVar<TStringData>& rhs)*/
void Set(const TStringData& AR_CStringEnvName, const TStringData& AR_CStringEnvValue)
{
mo_CStrEnvName = AR_CStringEnvName ;
mo_CStrEnvValue = AR_CStringEnvValue;
}/*
void Set(const TStringData& AR_CStringEnvName, const TStringData& AR_CStringEnvValue)*/
TStringData& GetName () {return mo_CStrEnvName ;}
TStringData& GetValue() {return mo_CStrEnvValue;}
const TStringData& GetName () const {return mo_CStrEnvName ;}
const TStringData& GetValue() const {return mo_CStrEnvValue;}
bool operator==(const ZtCEnvVar<TStringData>& rhs) const{
return mo_CStrEnvName ==rhs.mo_CStrEnvName ;}
bool operator< (const ZtCEnvVar<TStringData>& rhs) const{
return mo_CStrEnvName < rhs.mo_CStrEnvName ;}
bool operator> (const ZtCEnvVar<TStringData>& rhs) const{
return mo_CStrEnvName > rhs.mo_CStrEnvName ;}
bool operator==(const TStringData& AR_CStrEnvName) const{
return mo_CStrEnvName ==AR_CStrEnvName ;}
bool operator> (const TStringData& AR_CStrEnvName) const{
return mo_CStrEnvName > AR_CStrEnvName ;}
bool operator< (const TStringData& AR_CStrEnvName) const{
return mo_CStrEnvName < AR_CStrEnvName ;}
public:
};/*
template<typename TStringData> class ZtCEnvVar*/
// CGI <20><><EFBFBD>̺귯<CCBA><EAB7AF><EFBFBD><EFBFBD> <20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20≯<EFBFBD><CCB8>׸<EFBFBD> Http Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ
// <20><EFBFBD><EEBFA1>, class ZtCFileUp <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̴<EFBFBD>.
template< typename TStringData,
typename TFileSize=ZNsMain::ZTypLengthF
>
class ZtCFileUp ///////////////////////////////////
{
public :
typedef TFileSize TypeFileSize;
protected:
TStringData mo_FileName;
TStringData mo_FileType;
TStringData mo_EnviName;
TFileSize ml_FileSize;
public :
ZtCFileUp()
{
ml_FileSize = 0;
};/*
ZtCFileUp()*/
TStringData& GetFileName() {return mo_FileName;}
TStringData& GetFileType() {return mo_FileType;}
TStringData& GetEnviName() {return mo_EnviName;}
const TStringData& GetFileName() const{return mo_FileName;}
const TStringData& GetFileType() const{return mo_FileType;}
const TStringData& GetEnviName() const{return mo_EnviName;}
TFileSize GetDataSize() const
{
return ml_FileSize;
}/*
TFileSize GetDataSize() const*/
void SetDataSize(TFileSize AL_FileSize)
{
ml_FileSize = AL_FileSize;
}/*
void SetDataSize(TFileSize AL_FileSize)*/
void AddDataSize(TFileSize AL_FileSize)
{
ml_FileSize += AL_FileSize;
}/*
void AddDataSize(TFileSize AL_FileSize)*/
TFileSize& GetDataSizeRef()
{
return ml_FileSize;
}/*
TFileSize& GetDataSizeRef()*/
public:
};/*
template< typename TStringData,
typename TFileSize=ZNsMain::ZTypLengthF
>
class ZtCFileUp /////////////////////////////////*/
}/*
namespace ZNsBase*/
template<typename TStringData> void ZftEscapeHtml(TStringData& ARR_CString)
{
ARR_CString.Replace("&", "&amp;" ).
Replace("\"","&quot;").
Replace("<", "&lt;" ).
Replace(">", "&gt;" ).
Replace(" ", "&nbsp;").
/*//////*/ Replace("\n","<br />");
}/*
template<typename TStringData> void ZftEscapeHtml(TStringData& ARR_CString) */
template<typename TStringData> void ZftNL2BR(TStringData& ARR_CStringData)
{
ARR_CStringData.
Replace("\r\n", "<br />").Replace("\n" , "<br />");
}/*
template<typename TStringData> void ZftNL2BR(TStringData& ARR_CStringData) */
namespace ZNsType
{
template< typename TStringData=ZNsMain::ZtCStringBase<char>
>
class ZtCTypeEnvVarSet /*##################################*/
{
public:
typedef TStringData ZCStringData ;
typedef ZNsMain::ZNsCGI::ZNsBase::
ZtCEnvVar<ZCStringData> ZCEnvVar ;
typedef ZNsMain::ZtCObjAVL<ZCEnvVar> ZCEnvVarSet ;
typedef typename ZCEnvVarSet ::ZCNode ZCEnvVarNode ;
typedef typename ZCStringData::ZCMainChars ZCMainChars ;
typedef typename ZCStringData::TypeChar TypeChar ;
typedef typename ZCStringData::TypeLength TypeLength ;
public:
};/*
template< typename TStringData=ZNsMain::ZtCStringBase<char>
>
class ZtCTypeEnvVarSet ####################################*/
}/*
namespace ZNsType*/
template< typename TStringData, /*############################*/
typename TTypeEnvVarSet =
ZNsType::ZtCTypeEnvVarSet<TStringData>
>
class ZtCLoadSimUrlConfig : protected ZNsMain::ZtCLoadDataBlockOne
< ZtCLoadSimUrlConfig
<
TStringData, TTypeEnvVarSet
>,
TStringData
/*###########*/ > /*############################################*/
{
public :
template< typename TTDerive, typename TTStringData
>
friend class ZNsMain::ZtCLoadDataBlockOne;
public :
typedef typename TTypeEnvVarSet::ZCStringData ZCStringData;
typedef typename TTypeEnvVarSet::ZCEnvVar ZCEnvVar ;
typedef typename TTypeEnvVarSet::ZCEnvVarSet ZCEnvVarSet ;
typedef typename TTypeEnvVarSet::ZCEnvVarNode ZCEnvVarNode;
typedef typename TTypeEnvVarSet::ZCMainChars ZCMainChars ;
typedef typename TTypeEnvVarSet::TypeChar TypeChar ;
typedef typename TTypeEnvVarSet::TypeLength TypeLength ;
public :
typedef ZNsMain::ZtCLoadDataBlockOne
<ZtCLoadSimUrlConfig, TStringData> TypeBase;
private:
ZCEnvVarSet mo_CEnvVarSet ;
ZCStringData mo_CStringName ;
ZCStringData mo_CStringBuff ;
ZCEnvVarNode* mp_CStringNode ;
bool mb_DoFindEqual ; // '=' <20><> ã<><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true
public :
typedef void (*TypePfOnMeetCEnvVar)
(const ZCEnvVar& AR_CEnvVar, ZCStringData& ARR_CStringBuff);
private:
static void OnMeetCEnvVar(const ZCEnvVar& AR_CEnvVar, ZCStringData& ARR_CStringBuff)
{
ZCStringData VO_CStringEnc(AR_CEnvVar.GetValue());
ZNsMain::ZNsEnc::ZftGetSimUrlEnc(RR(VO_CStringEnc));
ARR_CStringBuff
("&")(AR_CEnvVar.GetName())("=")(VO_CStringEnc)("&\r\n");
}/*
static void OnMeetCEnvVar(const ZCEnvVar& AR_CEnvVar, ZCStringData& ARR_CStringBuff)*/
private:
static void ShowEnvVar(ZCEnvVar& AR_CEnvVar)
{
cout<<"# "<<AR_CEnvVar.GetName()<<" : "<<AR_CEnvVar.GetValue()<<endl;
}/*
static void ShowEnvVar(ZCEnvVar& AR_CEnvVar)*/
/*private:*/
private:
ZNsMain::ZERun ExecBlockIn(const TypeChar* AP_Data, TypeLength AL_Length)
{
if(mb_DoFindEqual)
{
// mp_CStringNode==0 <20≯<EFBFBD> '=' <20><> ã<><C3A3> ã<><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD≯<EFBFBD><CCB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>, <20>ߺ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// mo_CEnvVarSet <20><> <20><><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD> <20>ʾҴٴ<D2B4> <20><><EFBFBD>̴<EFBFBD>. <20>̶<EFBFBD><CCB6><EFBFBD> AP_Data <20><> <20>׳<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. (2011-12-18 15:28:00)
if(mp_CStringNode!=0)
{
// mo_CEnvVarSet <20><> <20><> <20>Է<EFBFBD>.
const_cast<ZCEnvVar&>(mp_CStringNode->GetData()).
GetValue()(AP_Data, AL_Length) ;
/*+++++++++++++++++++++++++++++++++++++++++++++*/
}/*
if(mp_CStringNode!=0)*/
return ZNsMain::ZERun_OK;
}/*
if(mb_DoFindEqual)*/
TypeLength VL_FindPos = ZCMainChars::
FindPos(AP_Data, "=", AL_Length, 1); // 1 <20><> "=" <20><> <20><><EFBFBD><EFBFBD>
if(VL_FindPos<0)
{
mo_CStringName(AP_Data, AL_Length); return ZNsMain::ZERun_OK;
}/*
if(VL_FindPos<0)*/
mb_DoFindEqual=true; mo_CStringName(AP_Data, VL_FindPos).Trim();
if(mo_CStringName.size()< 1) return ZNsMain::ZERun_OK;
mo_CStringName = ZNsMain::
ZNsEnc::ZftGetSimUrlDec( RR(mo_CStringName) ) ;
if(mo_CStringName.size()< 1) return ZNsMain::ZERun_OK;
mp_CStringNode=mo_CEnvVarSet.AddKey(mo_CStringName);
if(mp_CStringNode ==0) return ZNsMain::ZERun_OK;
const_cast<ZCEnvVar&>(mp_CStringNode->GetData()).GetValue()
(
AP_Data +VL_FindPos+1,
AL_Length-VL_FindPos-1
);
///////////////////////////////////////////////////////////
return ZNsMain::ZERun_OK;
}/*
ZNsMain::ZERun ExecBlockIn(const TypeChar* AP_Data, TypeLength AL_Length)*/
ZNsMain::ZERun ExecBlockMatch(const TypeChar* AP_Data, TypeLength AL_Length)
{
// <20>и<EFBFBD> <20><><EFBFBD><EFBFBD> "&" <20><> <20>߰ߵ<DFB0> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ.
if(mp_CStringNode!=0)
{
const_cast<ZCEnvVar&>(mp_CStringNode->GetData()).GetValue().Trim();
}/*
if(mp_CStringNode!=0)*/
mp_CStringNode = 0 ;
mo_CStringName = "" ;
mb_DoFindEqual = false;
return ZNsMain::ZERun_OK;
}/*
ZNsMain::ZERun ExecBlockMatch(const TypeChar* AP_Data, TypeLength AL_Length)*/
/*private:*/
public :
ZtCLoadSimUrlConfig()
{
mp_CStringNode=0 ;
mb_DoFindEqual=false;
this->TypeBase::SetSearchCString(ZCStringData("&"));
}/*
ZtCLoadSimUrlConfig()*/
ZCStringData& GetCStringBuff() {return mo_CStringBuff;}
ZCEnvVarSet GetCEnvVarSet () {return mo_CEnvVarSet ;}
const ZCStringData& GetCStringBuff() const{return mo_CStringBuff;}
const ZCEnvVarSet GetCEnvVarSet () const{return mo_CEnvVarSet ;}
void LoadData (const ZCStringData& AR_CStringConf){
LoadData (AR_CStringConf.data(), AR_CStringConf.size()); }
void LoadDataEx(const ZCStringData& AR_CStringConf){
LoadDataEx(AR_CStringConf.data(), AR_CStringConf.size()); }
void LoadData(const TypeChar* APC_ConfigData, TypeLength AI_ConfigLen)
{
this->TypeBase::LoadData(APC_ConfigData, AI_ConfigLen);
}/*
void LoadData(const TypeChar* APC_ConfigData, TypeLength AI_ConfigLen)*/
void LoadDataEx(const TypeChar* APC_ConfigData, TypeLength AI_ConfigLen)
{
this->TypeBase::LoadData(APC_ConfigData, AI_ConfigLen);
mo_CStringName.clear();
mp_CStringNode=0 ;
mb_DoFindEqual=false ;
}/*
void LoadDataEx(const TypeChar* APC_ConfigData, TypeLength AI_ConfigLen)*/
void clear()
{
mo_CEnvVarSet .clear();
mo_CStringName.clear();
mp_CStringNode=0 ;
mb_DoFindEqual=false ;
}/*
void clear()*/
long GetLongValue(const ZCStringData& AR_CStringName)
{
ZCEnvVarNode* VP_CEnvVarNode=mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return 0; return VP_CEnvVarNode->GetData().GetValue().GetLong();
}/*
long GetLongValue(const ZCStringData& AR_CStringName)*/
long GetLongValue(const ZCStringData& AR_CStringName, long& ARRL_Long)
{
ZCEnvVarNode* VP_CEnvVarNode=mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return ARRL_Long; return ARRL_Long=VP_CEnvVarNode->GetData().GetValue().GetLong();
}/*
long GetLongValue(const ZCStringData& AR_CStringName, long& ARRL_Long)*/
ZCStringData& GetCStringValue(const ZCStringData& AR_CStringName, ZCStringData& ARR_CStringValue)
{
ZCEnvVarNode* VP_CEnvVarNode=mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return ARR_CStringValue;
return ARR_CStringValue=VP_CEnvVarNode->GetData().GetValue();
}/*
ZCStringData& GetCStringValue(const ZCStringData& AR_CStringName, ZCStringData& ARR_CStringValue)*/
ZCStringData GetCStringValue(const ZCStringData& AR_CStringName)
{
ZCStringData VO_ValueCStr; return GetCStringValue(AR_CStringName, RR(VO_ValueCStr));
}/*
ZCStringData GetCStringValue(const ZCStringData& AR_CStringName)*/
ZCStringData* GetCStringValuePtr(const ZCStringData& AR_CStringName)
{
ZCEnvVarNode* VP_CEnvVarNode =
mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return 0;
return const_cast<ZCStringData*>(
&VP_CEnvVarNode->GetData().GetValue());
}/*
ZCStringData* GetCStringValuePtr(const ZCStringData& AR_CStringName)*/
const ZCStringData* GetCStringValuePtr(const ZCStringData& AR_CStringName) const
{
ZCEnvVarNode* VP_CEnvVarNode =
mo_CEnvVarSet.FindKey(AR_CStringName);
if(VP_CEnvVarNode==0) return 0;
return &VP_CEnvVarNode->GetData().GetValue();
}/*
const ZCStringData* GetCStringValuePtr(const ZCStringData& AR_CStringName) const*/
bool AddCEnvVar(const ZCEnvVar& AR_CEnvVar)
{
return mo_CEnvVarSet.AddData(AR_CEnvVar);
}/*
bool AddCEnvVar(const ZCEnvVar& AR_CEnvVar)*/
bool AddCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)
{
return mo_CEnvVarSet.AddData(ZCEnvVar(AR_NameCStr, AR_ValueCStr));
}/*
bool AddCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)*/
bool AddCEnvVarLong(const ZCStringData& AR_NameCStr, long AL_LongValue)
{
return mo_CEnvVarSet.AddData(ZCEnvVar(AR_NameCStr, ZCStringData(AL_LongValue)));
}/*
bool AddCEnvVarLong(const ZCStringData& AR_NameCStr, long AL_LongValue)*/
bool CutCEnvVar(const ZCStringData& AR_NameCStr)
{
return mo_CEnvVarSet.template DeleteKey<const ZCStringData&>(AR_NameCStr);
}/*
bool CutCEnvVar(const ZCStringData& AR_NameCStr)*/
bool AddEditCEnvVar(const ZCEnvVar& AR_CEnvVar) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>.
{
CutCEnvVar(AR_CEnvVar.GetName()); return mo_CEnvVarSet.AddData(AR_CEnvVar);
}/*
bool AddEditCEnvVar(const ZCEnvVar& AR_CEnvVar)*/
bool AddEditCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)
{
CutCEnvVar(AR_NameCStr); return mo_CEnvVarSet.AddData(ZCEnvVar(AR_NameCStr, AR_ValueCStr));
}/*
bool AddEditCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)*/
bool EditCEnvVar(const ZCEnvVar& AR_CEnvVar) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
{
if(CutCEnvVar(AR_CEnvVar.GetName())) return mo_CEnvVarSet.AddData(AR_CEnvVar); return false;
}/*
bool EditCEnvVar(const ZCEnvVar& AR_CEnvVar)*/
bool EditCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)
{
if(CutCEnvVar(AR_NameCStr))
return mo_CEnvVarSet.AddData(ZCEnvVar(AR_NameCStr, AR_ValueCStr));
return false;
}/*
bool EditCEnvVar(const ZCStringData& AR_NameCStr, const ZCStringData& AR_ValueCStr)*/
void Serialize(ZCStringData& ARR_SerialCStr, TypePfOnMeetCEnvVar APF_OnMeetCEnvVar)
{
mo_CEnvVarSet.template IterInOrder<TypePfOnMeetCEnvVar, ZCStringData&>
(
APF_OnMeetCEnvVar, RR(ARR_SerialCStr)
);
//////////////////////////////////////////////////////////////////////
}/*
void Serialize(ZCStringData& ARR_SerialCStr, TypePfOnMeetCEnvVar APF_OnMeetCEnvVar)*/
void Serialize(ZCStringData& ARR_SerialCStr) /////////////////////////////
{
mo_CEnvVarSet.template IterInOrder<TypePfOnMeetCEnvVar, ZCStringData&>
(
OnMeetCEnvVar, RR(ARR_SerialCStr)
);
//////////////////////////////////////////////////////////////////////
}/*
void Serialize(ZCStringData& ARR_SerialCStr)*/
void Serialize()
{
Serialize( RR(this->mo_CStringBuff="") );
}/*
void Serialize()*/
template<typename TFunctor> void IterEnvSet(TFunctor AO_Functor)
{
mo_CEnvVarSet.template IterInOrder<TFunctor>(AO_Functor);
}/*
template<typename TFunctor> void IterEnvSet(TFunctor AO_Functor)*/
void IterEnvSet()
{
IterEnvSet(&ShowEnvVar); // for debug
}/*
void IterEnvSet()*/
public:
};/*
template< typename TStringData, ##########################
typename TTypeEnvVarSet =
ZNsType::ZtCTypeEnvVarSet<TStringData>
>
class ZtCLoadSimUrlConfig ################################*/
template< typename TStringData=ZNsMain::ZtCStringBase<char>
>
class ZtCLoadXmlInfo /*####################################*/
{
public :
typedef TStringData ZCStringData;
typedef typename ZCStringData::TypeLength TypeLength;
typedef ZNsMain::ZNsType::ZtCTypeXmlInfo< ///////////
ZCStringData
/*/////////*/ > ZCTypeXmlInfo; //////////////////////
typedef ZNsMain::ZtCXmlInfo<ZCTypeXmlInfo> ZCXmlInfo;
typedef ZNsMain::ZNsView::ZtCViewLoadXmlOfXmlInfo<
ZCXmlInfo
/*/////////*/ > ZCViewLoadXml; //////////////////////
typedef ZNsMain::ZtCLoadXml<ZCStringData> ZCLoadXml;
/*public :*/
private:
ZCViewLoadXml m_oCViewLoad;
ZCLoadXml m_oCLoadXml ;
public :
ZCLoadXml& GetCLoadXml(){return m_oCLoadXml ;}
ZCXmlInfo& GetCXmlInfo(){return m_oCViewLoad.GetCXmlInfo();}
ZNsMain::ZERunEx Exec(const char* APC_XmlData, TypeLength AI_Length)
{
m_oCViewLoad.clear();
m_oCLoadXml .clear(); return m_oCLoadXml.
ExecAll(RR(m_oCViewLoad), APC_XmlData, AI_Length);
}/*
ZNsMain::ZERunEx Exec(const char* APC_XmlData, TypeLength AI_Length)*/
ZNsMain::ZERunEx Exec(const ZCStringData& ArgrXmlData)
{
return Exec(ArgrXmlData.data(), ArgrXmlData.size());
}/*
ZNsMain::ZERunEx Exec(const ZCStringData& ArgrXmlData)*/
template<typename TMainChars>
ZNsMain::ZERunEx Exec(const TMainChars& AR_CMainChars)
{
return Exec(AR_CMainChars.data(), AR_CMainChars.size());
}/*
template<typename TMainChars>
ZNsMain::ZERunEx Exec(const TMainChars& AR_CMainChars)*/
public :
};/*
template< typename TStringData=ZNsMain::ZtCStringBase<char>
>
class ZtCLoadXmlInfo ######################################*/
}/*
namespace ZNsCGI*/
}/*
namespace ZNsMain */
#endif //__ZNSMAIN__ZMAIN_CGI_H__