From 53ecc0c554a7090ff7aa30d46b22aec2c0fef91f Mon Sep 17 00:00:00 2001 From: sauron Date: Sat, 25 Oct 2025 08:29:42 +0900 Subject: [PATCH] commit 2025-10-25 08:29 add ZtCPrint & ZtCObjtChain::IterElement() in ZCppMain/ZMainHead.H --- ZCppMain/ZMainHead.H | 104 ++++++++++++++++++++++++++++++++++++++---- ZCppMainTest/c++_test_006.cpp | 4 +- 2 files changed, 99 insertions(+), 9 deletions(-) diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index e48a57e..741946a 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -815,18 +815,48 @@ namespace ZNsMain - template void ZftPrint(const TDataNow& AR_Data) + template int ZftPrint(const TDataNow& AR_Data) { - cout<=100 + cout<<"# typename TDataNow : "< void ZftPrint + std::cout< int ZftPrint(const TDataNow& AR_Data)*/ + + template int ZftPrint (const TDataNow1& AR_Data1, const TDataNow2& AR_Data2) { - cout< int operator () + (const TDataNow& AR_Data){ ZftPrint(AR_Data); return 0; } + template int OnPrevIter + (const TDataNow& AR_Data){ ZftPrint(", ") ; return 0; } + public: + }; + /*/////////////////////////////////////////////////////////////////////////////*/ + + + + int ZfInitZero(){ return 0; } + /*/////////////////////////////////////////////////////////////////////////////// + + ■ int ZfInitZero() + + 템플릿 인자 중에서, 0 으로 초기화하는 functor 가 필요할 때 사용하는 함수. + + ZtCObjtInitChain 에서 사용될 수 있다. -- 2025-10-25 08:27 + + ///////////////////////////////////////////////////////////////////////////////*/ @@ -3733,6 +3763,7 @@ namespace ZNsMain -- 2025-10-22 19:41 + ZtCTypeByNo 를 만들고 ZtCObjtChain 에 아래 멤버도 추가하고 template typename ZtCTypeByNo @@ -4005,6 +4036,38 @@ namespace ZNsMain template void IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp) */ + + template void IterElement(TViewChain AO_CView) + { + ZtCTypeData:: + GetObjRef(AO_CView).operator()(*this); + + if(TypeChainNow::ZEBoolNext>0) + { + ZtCTypeData:: + GetObjRef(AO_CView).OnPrevIter(*this); + + this->TypeChainNext::IterElement(AO_CView); + }/* + if(TypeChainNow::ZEBoolNext>0)*/ + }/* + template void IterElement(TViewChain AO_CView)*/ + template void IterElemRev(TViewChain AO_CView) + { + if(TypeChainNow::ZEBoolNext>0) + { + this->TypeChainNext::IterElemRev(AO_CView); + + ZtCTypeData:: + GetObjRef(AO_CView).OnPrevIter(*this); + }/* + if(TypeChainNow::ZEBoolNext>0)*/ + + ZtCTypeData:: + GetObjRef(AO_CView).operator()(*this); + }/* + template void IterElemRev(TViewChain AO_CView)*/ + public: };/* template ############################################################ @@ -4128,6 +4191,20 @@ namespace ZNsMain template void IterTail(TViewChain AO_CView, TTypeHelp AO_TypeHelp) */ + + template void IterElement(TViewChain AO_CView) + { + ZtCTypeData:: + GetObjRef(AO_CView).operator()(*this); + }/* + template void IterElement(TViewChain AO_CView)*/ + template void IterElemRev(TViewChain AO_CView) + { + ZtCTypeData:: + GetObjRef(AO_CView).operator()(*this); + }/* + template void IterElemRev(TViewChain AO_CView)*/ + public: };/* template ############################################################ @@ -4135,6 +4212,17 @@ namespace ZNsMain class ZtCObjtChain /////////////////////////////*/ + + template int ZftPrint /*:::::::*/ + ( const ZtCObjtChain& AR_CChain ) + /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ + { + return ZftPrint(*AR_CChain); + } + /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/ + + + template std::ostream& operator<< ( std::ostream& AR_COStream, const ZtCObjtChain diff --git a/ZCppMainTest/c++_test_006.cpp b/ZCppMainTest/c++_test_006.cpp index ea1fef1..57e8924 100644 --- a/ZCppMainTest/c++_test_006.cpp +++ b/ZCppMainTest/c++_test_006.cpp @@ -224,7 +224,9 @@ namespace ZNsMain *VO_ZCObjtChain.GetChainByNo<2>()=(1.8); *VO_ZCObjtChain.GetChainByNo<3>()=(9999); VO_ZCObjtChain.IterHead(ZftMCP(VO_ZCTypeView)); - cout<<"#VO_ZCObjtChain = "<