From 5e550363ee32b3a0293a647b0402c165135a44d8 Mon Sep 17 00:00:00 2001 From: sauron Date: Fri, 17 Oct 2025 12:26:22 +0900 Subject: [PATCH] commit 2025-10-17 12:26 add ZtCTypeChain in ZCppMain/ZMainHead.H --- ZCppMain/ZMainHead.H | 141 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 131 insertions(+), 10 deletions(-) diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index 7fe9928..a3fde0a 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -1624,7 +1624,7 @@ namespace ZNsMain 지금은 template 인수가 Type13 까지 있다. 그러면 Type12 까지 전문화할 수 있는 것이다. -- 2025-09-07 12:55 - ■ 이젠 ZtStTuple 형태도 가능하다. ZftMakeTuple() 도 추가. - -2025-09-05 21:01 + 이젠 ZtStTuple 형태도 가능하다. ZftMakeTuple() 도 추가. - -2025-09-05 21:01 ■ RVO(Return Value Optimization) 로 인해 아래가 가능하다. -- 2025-09-06 21:23 @@ -3226,6 +3226,127 @@ namespace ZNsMain + template< typename TTypeNow, typename TTypeNextChain + > + class ZtCTypeChain /////////////////////////////////// + { + public : + typedef TTypeNow TypeData ; + typedef ZtCTypeChain TypeChainNow ; + typedef TTypeNextChain TypeChainNext ; + /************************************************************/ + typedef typename TypeChainNext::TypeData TypeNext ; + /************************************************************/ + enum{ZETypeNo = TypeChainNext::ZETypeNo+1}; + enum{ZEBoolNext = 1 }; + public: + + template class ZtCIterChain + { + public: + static void IterHead(TViewChain AO_CView) + { + AO_CView.template OnMeetType(); + + if(TypeChainNow::ZEBoolNext>0) + { + TypeChainNext::template + ZtCIterChain::IterHead(AO_CView); + }/* + if(TypeChainNow::ZEBoolNext>0)*/ + }/* + static void IterHead(TViewChain AO_CView)*/ + static void IterTail(TViewChain AO_CView) + { + if(TypeChainNow::ZEBoolNext>0) + { + TypeChainNext::template + ZtCIterChain::IterTail(AO_CView); + }/* + if(TypeChainNow::ZEBoolNext>0)*/ + + AO_CView.template OnMeetType(); + }/* + static void IterTail(TViewChain AO_CView)*/ + public: + };/* + template class ZtCIterChain*/ + + public: + };/* + template< typename TTypeNow, typename TTypeNextChain + > + class ZtCTypeChain /////////////////////////////////*/ + + + template class ZtCTypeChain + { + public : + /************************************************************/ + typedef ZtCTypeChain ZCTypeChain; + /************************************************************/ + public : + typedef TTypeNow TypeData; + public : + typedef typename ZCTypeChain TypeChainNow ; + typedef typename ZCTypeChain TypeChainNext; + typedef typename ZCEmpty TypeNext ; + public : + enum{ZETypeNo = 1}; + enum{ZEBoolNext = 0}; + public: + + template class ZtCIterChain + { + public: + static void IterHead(TViewChain AO_CView) + { AO_CView.template OnMeetType(); } + static void IterTail(TViewChain AO_CView) + { AO_CView.template OnMeetType(); } + public: + };/* + template class ZtCIterChain*/ + };/* + template class ZtCTypeChain*/ + + + template + void ZftIterTmplChainHead(TTypeView AO_View) + { + AO_View.template OnMeetType(); + + if(TTmplChain::ZEBoolNext>0) + { + typedef typename + TTmplChain::TypeChainNext TypeChainNext; + + ZftIterTmplChainHead(AO_View); + }/* + if(TTmplChain::ZEBoolNext>0)*/ + }/* + template + void ZftIterTmplChainHead(TTypeView AO_View) + */ + template + void ZftIterTmplChainTail(TTypeView AO_View) + { + AO_View.template OnMeetType(); + + if(TTmplChain::ZEBoolNext>0) + { + typedef typename + TTmplChain::TypeChainNext TypeChainNext; + + ZftIterTmplChainTail(AO_View); + }/* + if(TTmplChain::ZEBoolNext>0)*/ + }/* + template + void ZftIterTmplChainTail(TTypeView AO_View) + */ + + + namespace ZNsTmplChain { @@ -5764,9 +5885,9 @@ namespace ZNsMain /*++++++++++++++++++++++++++++++++++++++++++++++*/ template<> string & ZftMakeStr - (string& ARR_SaveCStr, const ZtCChars& AR_View); + (string& ARR_SaveCStr, const ZtCChars& AO_View); template<> wstring& ZftMakeStr - (wstring& ARR_SaveCStr, const ZtCChars& AR_View); + (wstring& ARR_SaveCStr, const ZtCChars& AO_View); @@ -9272,10 +9393,10 @@ namespace ZNsMain - template<> string& ZftMakeStr(string& ARR_SaveCStr, const ZCCharView& AR_View) - { ARR_SaveCStr.append(AR_View.data(), AR_View.size()); return ARR_SaveCStr; } - template<> wstring& ZftMakeStr(wstring& ARR_SaveCStr, const ZCCharViewW& AR_View) - { ARR_SaveCStr.append(AR_View.data(), AR_View.size()); return ARR_SaveCStr; } + template<> string& ZftMakeStr(string& ARR_SaveCStr, const ZCCharView& AO_View) + { ARR_SaveCStr.append(AO_View.data(), AO_View.size()); return ARR_SaveCStr; } + template<> wstring& ZftMakeStr(wstring& ARR_SaveCStr, const ZCCharViewW& AO_View) + { ARR_SaveCStr.append(AO_View.data(), AO_View.size()); return ARR_SaveCStr; } /*////////////////////////////////////////////////////////////////////////////////////// @@ -9562,11 +9683,11 @@ namespace ZNsMain }/* ZCSngtLogData& operator()(const char* APC_LogData)*/ - ZCSngtLogData& operator()(const ZCCharView& AR_View) + ZCSngtLogData& operator()(const ZCCharView& AO_View) { - ZCSngtLogData::Log(AR_View.data(), AR_View.size()); return *this; + ZCSngtLogData::Log(AO_View.data(), AO_View.size()); return *this; }/* - ZCSngtLogData& operator()(const ZCCharView& AR_View)*/ + ZCSngtLogData& operator()(const ZCCharView& AO_View)*/ ZCSngtLogData& operator()(int AI_LogData){ GetSngtView().Log(AI_LogData); return *this; } ZCSngtLogData& operator()(long AL_LogData){ GetSngtView().Log(AL_LogData); return *this; }