commit 2025-08-24 23:40 add ZCppMain/ZMainCGI.H
This commit is contained in:
628
ZCppMain/ZMainCGI.H
Normal file
628
ZCppMain/ZMainCGI.H
Normal 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("&", "&" ).
|
||||||
|
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__
|
Reference in New Issue
Block a user