629 lines
23 KiB
C++
629 lines
23 KiB
C++
|
||
|
||
#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("&", "&" ).
|
||
Replace("\"",""").
|
||
Replace("<", "<" ).
|
||
Replace(">", ">" ).
|
||
Replace(" ", " ").
|
||
/*//////*/ 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__
|