commit 2025-08-16 34:34 edit ZCppMain/ZtCLoadDataBlock.H

ZCLoadDataBlock1 과 ZCLoadDataBlock2 의 소속을 ZNsExam 에서 ZNsExam::ZtCDummy 로 옮김
This commit is contained in:
2025-08-17 01:06:21 +09:00
parent f7636ecc5d
commit 56fe854723

View File

@ -115,9 +115,9 @@ namespace ZNsMain
TStringData mo_BlockBuffCStr; // mo_StartMarkCStr, mo_CloseMarkCStr 사이에 있는 데이타는 여기에 쌓아둔다. TStringData mo_BlockBuffCStr; // mo_StartMarkCStr, mo_CloseMarkCStr 사이에 있는 데이타는 여기에 쌓아둔다.
bool mb_DoFindStart ; // mo_StartMarkCStr 을 찾은 상태라면 true bool mb_DoFindStart ; // mo_StartMarkCStr 을 찾은 상태라면 true
#define __GET_CHILD_OBJ__ (static_cast<TDerive&>(*this)) //protected:
private :
/*protected:*/ TDerive& GetChildObj(){ return static_cast<TDerive&>(*this); }
public : public :
_NP_ ZERun OnMeetNormal(const TypeChar* APC_Data, TypeLength AL_Length) _NP_ ZERun OnMeetNormal(const TypeChar* APC_Data, TypeLength AL_Length)
@ -133,7 +133,7 @@ namespace ZNsMain
}/* }/*
if(mb_DoFindStart==true)*/ if(mb_DoFindStart==true)*/
return __GET_CHILD_OBJ__.ExecBlockOut(APC_Data, AL_Length); return GetChildObj.ExecBlockOut(APC_Data, AL_Length);
}/* }/*
_NP_ ZERun OnMeetNormal(const TypeChar* APC_Data, TypeLength AL_Length)*/ _NP_ ZERun OnMeetNormal(const TypeChar* APC_Data, TypeLength AL_Length)*/
@ -153,11 +153,11 @@ namespace ZNsMain
}/* }/*
if(mb_DoFindStart==true)*/ if(mb_DoFindStart==true)*/
return __GET_CHILD_OBJ__.ExecBlockOut return GetChildObj().ExecBlockOut
( (
APC_Data, AL_Length, ZCCheckRef::PassData(AO_CHelpType) APC_Data, AL_Length, ZCCheckRef::PassData(AO_CHelpType)
); );
///////////////////////////////////// /////////////////////////////////
}/* }/*
template<typename THelpType> _NP_ ZERun OnMeetNormal( template<typename THelpType> _NP_ ZERun OnMeetNormal(
const TypeChar* APC_Data, TypeLength AL_Length, THelpType AO_CHelpType) */ const TypeChar* APC_Data, TypeLength AL_Length, THelpType AO_CHelpType) */
@ -182,11 +182,11 @@ namespace ZNsMain
if(TBooIncMark==true) mo_BlockBuffCStr.append(mo_CloseMarkCStr); if(TBooIncMark==true) mo_BlockBuffCStr.append(mo_CloseMarkCStr);
if(__GET_CHILD_OBJ__.ExecBlockIn(mo_BlockBuffCStr)==ZERun_NO) if(GetChildObj().ExecBlockIn(mo_BlockBuffCStr)==ZERun_NO)
{ {
mo_BlockBuffCStr=""; return ZERun_NO; mo_BlockBuffCStr=""; return ZERun_NO;
}/* }/*
if(__GET_CHILD_OBJ__.ExecBlockIn(mo_BlockBuffCStr)==ZERun_NO)*/ if(GetChildObj().ExecBlockIn(mo_BlockBuffCStr)==ZERun_NO)*/
mo_BlockBuffCStr=""; mo_BlockBuffCStr="";
}/* }/*
@ -226,13 +226,13 @@ namespace ZNsMain
if(TBooIncMark==true) if(TBooIncMark==true)
{ mo_BlockBuffCStr.append(mo_CloseMarkCStr); } { mo_BlockBuffCStr.append(mo_CloseMarkCStr); }
if ( __GET_CHILD_OBJ__.ExecBlockIn if ( GetChildObj().ExecBlockIn
( (
mo_BlockBuffCStr, ZCCheckRef::PassData(AO_CHelpType) mo_BlockBuffCStr, ZCCheckRef::PassData(AO_CHelpType)
) )
==ZERun_NO ==ZERun_NO
) )
/////////////////////////////////// ///////////////////////////////
{ {
mo_BlockBuffCStr=""; return ZERun_NO; mo_BlockBuffCStr=""; return ZERun_NO;
} }
@ -412,11 +412,11 @@ namespace ZNsMain
void FiniBuff() void FiniBuff()
{ {
if(mb_DoFindStart==true ) __GET_CHILD_OBJ__. if(mb_DoFindStart==true ) GetChildObj().
ExecBlockOut(mo_StartMarkCStr.data(), mo_StartMarkCStr.size()); ExecBlockOut(mo_StartMarkCStr.data(), mo_StartMarkCStr.size());
if(mo_BlockBuffCStr.size()>0) __GET_CHILD_OBJ__. if(mo_BlockBuffCStr.size()>0) GetChildObj().
ExecBlockOut(mo_BlockBuffCStr.data(), mo_MarkBuffCStr.size()); ExecBlockOut(mo_BlockBuffCStr.data(), mo_MarkBuffCStr.size());
if(mo_MarkBuffCStr .size()>0) __GET_CHILD_OBJ__. if(mo_MarkBuffCStr .size()>0) GetChildObj().
ExecBlockOut(mo_MarkBuffCStr. data(), mo_MarkBuffCStr. size()); ExecBlockOut(mo_MarkBuffCStr. data(), mo_MarkBuffCStr. size());
}/* }/*
void FiniBuff()*/ void FiniBuff()*/
@ -425,19 +425,16 @@ namespace ZNsMain
{ {
typedef ZNsMain::ZtCCheckRef<THelpType> ZCCheckRef; typedef ZNsMain::ZtCCheckRef<THelpType> ZCCheckRef;
if(mb_DoFindStart==true ) __GET_CHILD_OBJ__.ExecBlockOut if(mb_DoFindStart==true ) GetChildObj().ExecBlockOut
(mo_StartMarkCStr.data(), mo_StartMarkCStr.size(), ZCCheckRef::PassData(AO_CHelpType)); (mo_StartMarkCStr.data(), mo_StartMarkCStr.size(), ZCCheckRef::PassData(AO_CHelpType));
if(mo_BlockBuffCStr.size()>0) __GET_CHILD_OBJ__.ExecBlockOut if(mo_BlockBuffCStr.size()>0) GetChildObj().ExecBlockOut
(mo_BlockBuffCStr.data(), mo_BlockBuffCStr.size(), ZCCheckRef::PassData(AO_CHelpType)); (mo_BlockBuffCStr.data(), mo_BlockBuffCStr.size(), ZCCheckRef::PassData(AO_CHelpType));
if(mo_MarkBuffCStr .size()>0) __GET_CHILD_OBJ__.ExecBlockOut if(mo_MarkBuffCStr .size()>0) GetChildObj().ExecBlockOut
(mo_MarkBuffCStr. data(), mo_MarkBuffCStr. size(), ZCCheckRef::PassData(AO_CHelpType)); (mo_MarkBuffCStr. data(), mo_MarkBuffCStr. size(), ZCCheckRef::PassData(AO_CHelpType));
}/* }/*
template<typename THelpType> void FiniBuff(THelpType AO_CHelpType) */ template<typename THelpType> void FiniBuff(THelpType AO_CHelpType) */
#undef __GET_CHILD_OBJ__
public: public:
};/* };/*
template< typename TDerive , template< typename TDerive ,
@ -733,168 +730,176 @@ namespace ZNsMain
template<typename TStringData> class ZtCExamReadyExec*/ template<typename TStringData> class ZtCExamReadyExec*/
template<typename TDummy=void> class ZtCDummy
typedef ZNsMain::ZtCStringBase<char> ZCStringBase;
class ZCLoadDataBlock1 : public ZNsMain::
ZtCLoadDataBlock<ZCLoadDataBlock1, ZCStringBase>
{ {
protected: public:
typedef ZNsMain::ZtCStringBase<char> ZCStringBase;
typedef typename ZCStringBase::TypeChar TypeChar ;
public:
friend class ZNsMain::ZtCLoadDataBlock<ZCLoadDataBlock1, ZCStringBase>;
/*////////////////////////////////////////////////////////////////////// class ZCLoadDataBlock1 : public ZNsMain::
ZtCLoadDataBlock<ZCLoadDataBlock1, ZCStringBase>
■ ZNsMain::ZtCLoadDataBlock<CLoadDataBlock, ZCStringBase> 을 TypeBase
로 typedef 하고 friend class TypeBase 라 하면 g++ 에서는 컴파일이 안
된다.
CLoadDataBlock_test.cpp:26: error:
using typedef-name `std::CLoadDataBlock::TypeBase' after `class'
Visual C++ 2008 에서는 컴파일되는데, 이점은 Visual C++ 쪽이 좀 더 합
리적인 것 같다.
-- 2008-12-10 21:14:00
//////////////////////////////////////////////////////////////////////*/
protected:
ZERun ExecBlockIn(const ZCStringBase& AR_CString)
{ {
cout<<"▷ Search Data Block IN =>\""<<AR_CString<<"\""<<endl; return ZERun_OK; protected:
}/*
ZERun ExecBlockIn(const ZCStringBase& AR_CString)*/
template<typename THelpObj> ZERun ExecBlockIn friend class ZNsMain::ZtCLoadDataBlock<ZCLoadDataBlock1, ZCStringBase>;
(const ZCStringBase& AR_CStringData, THelpObj AO_HelpObj)
{
cout<<"Help:Search Data Block IN =>\""<<AR_CStringData<<"\""<<endl; return ZERun_OK;
}/*
template<typename THelpObj> ZERun ExecBlockIn
(const ZCStringBase& AR_CStringData, THelpObj AO_HelpObj)*/
/*//////////////////////////////////////////////////////////////////////
ZERun ExecBlockOut(const char* AP_Data, long AL_Length) ■ ZNsMain::ZtCLoadDataBlock<CLoadDataBlock, ZCStringBase> 을 TypeBase
{ 로 typedef 하고 friend class TypeBase 라 하면 g++ 에서는 컴파일이 안
if(AL_Length>0) 된다.
cout<<"▷ Search Data Block OUT=>\"" ;
else cout<<"▷ Search Data Block OUT=>\"NULL";
for(long i=0;i<AL_Length;++i) CLoadDataBlock_test.cpp:26: error:
using typedef-name `std::CLoadDataBlock::TypeBase' after `class'
Visual C++ 2008 에서는 컴파일되는데, 이점은 Visual C++ 쪽이 좀 더 합
리적인 것 같다.
-- 2008-12-10 21:14:00
//////////////////////////////////////////////////////////////////////*/
protected:
ZERun ExecBlockIn(const ZCStringBase& AR_CString)
{ {
cout.put( AP_Data[i] ); cout<<"▷ Search Data Block IN =>\""<<AR_CString<<"\""<<endl; return ZERun_OK;
} }/*
///////////////////////////// ZERun ExecBlockIn(const ZCStringBase& AR_CString)*/
cout<<"\""<<endl; return ZERun_OK; template<typename THelpObj> ZERun ExecBlockIn
}/* (const ZCStringBase& AR_CStringData, THelpObj AO_HelpObj)
ZERun ExecBlockOut(const char* AP_Data, long AL_Length)*/
template<typename THelpObj> ZERun ExecBlockOut
(const TypeChar* AP_Data, ZTypLength AL_Length, THelpObj AO_HelpObj)
{
if(AL_Length>0)
cout<<"▷ Help:Search Data Block OUT=>\"" ;
else cout<<"▷ Help:Search Data Block OUT=>\"NULL";
for(long i=0;i<AL_Length;++i)
{ {
cout.put( AP_Data[i] ); cout<<"Help:Search Data Block IN =>\""<<AR_CStringData<<"\""<<endl; return ZERun_OK;
} }/*
///////////////////////////// template<typename THelpObj> ZERun ExecBlockIn
(const ZCStringBase& AR_CStringData, THelpObj AO_HelpObj)*/
cout<<"\""<<endl; return ZERun_OK;
}/*
template<typename THelpObj> ZERun ExecBlockOut ZERun ExecBlockOut
(const TypeChar* AP_Data, ZTypLength AL_Length, THelpObj AO_HelpObj)*/
protected: ZERun ExecBlockOut(const char* AP_Data, long AL_Length)
{
if(AL_Length>0)
cout<<"▷ Search Data Block OUT=>\"" ;
else cout<<"▷ Search Data Block OUT=>\"NULL";
for(long i=0;i<AL_Length;++i)
{
cout.put( AP_Data[i] );
}
/////////////////////////////
cout<<"\""<<endl; return ZERun_OK;
}/*
ZERun ExecBlockOut(const char* AP_Data, long AL_Length)*/
template<typename THelpObj> ZERun ExecBlockOut
(const TypeChar* AP_Data, ZTypLength AL_Length, THelpObj AO_HelpObj)
{
if(AL_Length>0)
cout<<"▷ Help:Search Data Block OUT=>\"" ;
else cout<<"▷ Help:Search Data Block OUT=>\"NULL";
for(long i=0;i<AL_Length;++i)
{
cout.put( AP_Data[i] );
}
/////////////////////////////
cout<<"\""<<endl; return ZERun_OK;
}/*
template<typename THelpObj> ZERun ExecBlockOut ZERun ExecBlockOut
(const TypeChar* AP_Data, ZTypLength AL_Length, THelpObj AO_HelpObj)*/
protected:
};/*
class ZCLoadDataBlock1 : public ZNsMain::
ZtCLoadDataBlock<ZCLoadDataBlock1, ZCStringBase>*/
class ZCLoadDataBlock2 : public ZNsMain::
ZtCLoadDataBlock<ZCLoadDataBlock2, ZCStringBase>
{
protected:
friend class ZNsMain::ZtCLoadDataBlock<ZCLoadDataBlock2, ZCStringBase>;
/*//////////////////////////////////////////////////////////////////////
■ ZNsMain::ZtCLoadDataBlock<CLoadDataBlock, ZCStringBase> 을 TypeBase
로 typedef 하고 friend class TypeBase 라 하면 g++ 에서는 컴파일이 안
된다.
CLoadDataBlock_test.cpp:26: error:
using typedef-name `std::CLoadDataBlock::TypeBase' after `class'
Visual C++ 2008 에서는 컴파일되는데, 이점은 Visual C++ 쪽이 좀 더 합
리적인 것 같다.
-- 2008-12-10 21:14:00
//////////////////////////////////////////////////////////////////////*/
protected:
ZERun ExecBlockIn(const ZCStringBase& AR_CString)
{
cout<<"▷ Search2 Data Block IN =>\""<<AR_CString<<"\""<<endl; return ZERun_OK;
}/*
ZERun ExecBlockIn(const ZCStringBase& AR_CString)*/
template<typename THelpObj> ZERun ExecBlockIn
(const ZCStringBase& AR_CStringData, THelpObj& AO_HelpObj)
{
cout<<"Help2:Search2 Data Block IN =>\""<<AR_CStringData<<"\""<<endl; return ZERun_OK;
}/*
template<typename THelpObj> ZERun ExecBlockIn
(const ZCStringBase& AR_CStringData, THelpObj& AO_HelpObj)*/
ZERun ExecBlockOut(const char* AP_Data, long AL_Length)
{
if(AL_Length>0)
cout<<"▷ Search2 Data Block OUT=>\"" ;
else cout<<"▷ Search2 Data Block OUT=>\"NULL";
for(long i=0;i<AL_Length;++i)
{
cout.put( AP_Data[i] );
}
/////////////////////////////
cout<<"\""<<endl; return ZERun_OK;
}/*
ZERun ExecBlockOut(const char* AP_Data, long AL_Length)*/
template<typename THelpObj> ZERun ExecBlockOut
(const TypeChar* AP_Data, ZTypLength AL_Length, THelpObj& AO_HelpObj)
{
if(AL_Length>0)
cout<<"▷ Help2:Search2 Data Block OUT=>\"" ;
else cout<<"▷ Help2:Search2 Data Block OUT=>\"NULL";
for(long i=0;i<AL_Length;++i)
{
cout.put( AP_Data[i] );
}
/////////////////////////////
cout<<"\""<<endl; return ZERun_OK;
}/*
template<typename THelpObj> ZERun ExecBlockOut ZERun ExecBlockOut
(const TypeChar* AP_Data, ZTypLength AL_Length, THelpObj& AO_HelpObj)*/
protected:
};/*
class ZCLoadDataBlock2 : public ZNsMain::
ZtCLoadDataBlock<ZCLoadDataBlock2, ZCStringBase>*/
public:
};/* };/*
class ZCLoadDataBlock1 : public ZNsMain:: template<typename TDummy=void> class ZtCDummy*/
ZtCLoadDataBlock<ZCLoadDataBlock1, ZCStringBase>*/
class ZCLoadDataBlock2 : public ZNsMain::
ZtCLoadDataBlock<ZCLoadDataBlock2, ZCStringBase>
{
protected:
friend class ZNsMain::ZtCLoadDataBlock<ZCLoadDataBlock2, ZCStringBase>;
/*//////////////////////////////////////////////////////////////////////
■ ZNsMain::ZtCLoadDataBlock<CLoadDataBlock, ZCStringBase> 을 TypeBase
로 typedef 하고 friend class TypeBase 라 하면 g++ 에서는 컴파일이 안
된다.
CLoadDataBlock_test.cpp:26: error:
using typedef-name `std::CLoadDataBlock::TypeBase' after `class'
Visual C++ 2008 에서는 컴파일되는데, 이점은 Visual C++ 쪽이 좀 더 합
리적인 것 같다.
-- 2008-12-10 21:14:00
//////////////////////////////////////////////////////////////////////*/
protected:
ZERun ExecBlockIn(const ZCStringBase& AR_CString)
{
cout<<"▷ Search2 Data Block IN =>\""<<AR_CString<<"\""<<endl; return ZERun_OK;
}/*
ZERun ExecBlockIn(const ZCStringBase& AR_CString)*/
template<typename THelpObj> ZERun ExecBlockIn
(const ZCStringBase& AR_CStringData, THelpObj& AO_HelpObj)
{
cout<<"Help2:Search2 Data Block IN =>\""<<AR_CStringData<<"\""<<endl; return ZERun_OK;
}/*
template<typename THelpObj> ZERun ExecBlockIn
(const ZCStringBase& AR_CStringData, THelpObj& AO_HelpObj)*/
ZERun ExecBlockOut(const char* AP_Data, long AL_Length)
{
if(AL_Length>0)
cout<<"▷ Search2 Data Block OUT=>\"" ;
else cout<<"▷ Search2 Data Block OUT=>\"NULL";
for(long i=0;i<AL_Length;++i)
{
cout.put( AP_Data[i] );
}
/////////////////////////////
cout<<"\""<<endl; return ZERun_OK;
}/*
ZERun ExecBlockOut(const char* AP_Data, long AL_Length)*/
template<typename THelpObj> ZERun ExecBlockOut
(const TypeChar* AP_Data, ZTypLength AL_Length, THelpObj& AO_HelpObj)
{
if(AL_Length>0)
cout<<"▷ Help2:Search2 Data Block OUT=>\"" ;
else cout<<"▷ Help2:Search2 Data Block OUT=>\"NULL";
for(long i=0;i<AL_Length;++i)
{
cout.put( AP_Data[i] );
}
/////////////////////////////
cout<<"\""<<endl; return ZERun_OK;
}/*
template<typename THelpObj> ZERun ExecBlockOut ZERun ExecBlockOut
(const TypeChar* AP_Data, ZTypLength AL_Length, THelpObj& AO_HelpObj)*/
protected:
};/*
class ZCLoadDataBlock2 : public ZNsMain::
ZtCLoadDataBlock<ZCLoadDataBlock2, ZCStringBase>*/
template<typename TDummy=void*> class ZtCExamLoadDataBlock template<typename TDummy=void*> class ZtCExamLoadDataBlock
@ -917,11 +922,13 @@ namespace ZNsMain
static int Main(int AI_ArgCnt=0, const char* APA_ArgVal[]=0) static int Main(int AI_ArgCnt=0, const char* APA_ArgVal[]=0)
{ {
ZNsExam::ZCLoadDataBlock1 VO_CLoadDataBlock1; typedef ZNsMain ::ZtCStringBase<char> ZCStringBase ;
ZNsExam::ZCLoadDataBlock2 VO_CLoadDataBlock2;
ZNsExam::ZtCDummy<>::ZCLoadDataBlock1 VO_CLoadDataBlock1;
ZNsExam::ZtCDummy<>::ZCLoadDataBlock2 VO_CLoadDataBlock2;
ZCHelpObj VO_CHelpObj ; ZCHelpObj VO_CHelpObj ;
///////////////////////////////////////////// /////////////////////////////////////////////////////////
ZCStringBase VO_CStringBase1 ZCStringBase VO_CStringBase1
( (
@ -932,7 +939,7 @@ namespace ZNsMain
( (
"}}" "}}"
); );
///////////////////////////////////////////// /////////////////////////////////////////////////////////
VO_CLoadDataBlock1.GetStartMark()="{{"; VO_CLoadDataBlock1.GetStartMark()="{{";
VO_CLoadDataBlock1.GetCloseMark()="}}"; VO_CLoadDataBlock1.GetCloseMark()="}}";
@ -1547,9 +1554,9 @@ namespace ZNsMain
public : public :
typedef TStringData ZCStringData; typedef TStringData ZCStringData;
public : public :
typedef typename ZCStringData::TypeChar TypeChar ; typedef typename ZCStringData::TypeChar TypeChar ;
typedef typename ZCStringData::TypeLength TypeLength ; typedef typename ZCStringData::TypeLength TypeLength ;
typedef typename ZCStringData::ZCMainChars ZCMainChars ; typedef typename ZCStringData::ZCMainChars ZCMainChars;
protected: protected:
ZCStringData mo_CStrSearch ; // 찾아야 하는 값 ZCStringData mo_CStrSearch ; // 찾아야 하는 값
ZCStringData mo_CStringBuff; ZCStringData mo_CStringBuff;
@ -1814,7 +1821,7 @@ namespace ZNsMain
typename TTypeBase=ZNsIFace:: typename TTypeBase=ZNsIFace::
ZtCChildLoadDataBlockOne<TStringData> ZtCChildLoadDataBlockOne<TStringData>
> >
class ZtCTypeLoadDataBlockOne /////////////////////////////////////////////// class ZtCTypeLoadDataBlockOne ///////////////////////
{ {
public: public:
@ -1823,7 +1830,7 @@ namespace ZNsMain
public ZNsMain::ZtCLoadDataBlockOne public ZNsMain::ZtCLoadDataBlockOne
< <
ZCLoadDataBlock, TStringData ZCLoadDataBlock, TStringData
/*//////////*/ > /*##########*/ > /*######################################*/
{ {
public: public:
typedef TStringData ZCStringData; typedef TStringData ZCStringData;
@ -1831,13 +1838,8 @@ namespace ZNsMain
typedef typename ZCStringData::TypeChar TypeChar ; typedef typename ZCStringData::TypeChar TypeChar ;
typedef typename ZCStringData::TypeLength TypeLength ; typedef typename ZCStringData::TypeLength TypeLength ;
public: public:
};/* };
class ZCLoadDataBlock : /*########################################################*/
public TTypeBase,
public ZNsMain::ZtCLoadDataBlockOne
<
ZCLoadDataBlock, TStringData
////////////// > */
typedef TStringData ZCStringData; typedef TStringData ZCStringData;
typedef typename ZCStringData::ZCMainChars ZCMainChars ; typedef typename ZCStringData::ZCMainChars ZCMainChars ;
@ -1847,10 +1849,11 @@ namespace ZNsMain
public: public:
};/* };/*
template< typename TStringData, template< typename TStringData ,
typename TTypeBase=ZNsIFace::ZtCChildLoadDataBlockOne<TStringData> typename TTypeBase=ZNsIFace::
ZtCChildLoadDataBlockOne<TStringData>
> >
class ZtCTypeLoadDataBlockOne /////////////////////////////////////////////*/ class ZtCTypeLoadDataBlockOne /////////////////////*/
}/* }/*
namespace ZNsType*/ namespace ZNsType*/