From 8b2d3706525ed835c0d48133ba54ce7f97c65a56 Mon Sep 17 00:00:00 2001 From: sauron Date: Mon, 8 Mar 2021 20:27:36 +0900 Subject: [PATCH] edit ZtCArray.H --- ZCppMain/ZtCArray.H | 29 ++++++++++++++++++++----- ZCppMain/ZtCObjList.H | 59 +++++++++++++++++++++++++++++++++++++++++++++++++-- ZCppMain/test.cpp | 6 +++--- 3 files changed, 84 insertions(+), 10 deletions(-) diff --git a/ZCppMain/ZtCArray.H b/ZCppMain/ZtCArray.H index 4678a6c..30ce318 100644 --- a/ZCppMain/ZtCArray.H +++ b/ZCppMain/ZtCArray.H @@ -444,23 +444,35 @@ namespace ZNsMain 의 형태로 호출할 게 아니라, ZNsMain::ZtCObjectPtr<> 을 사용하여, - myClass myClass_Obj; ZNsMain::ZtCObjectPtr myCObjPtr(myClass_Obj); + myClass myClass_Obj; + + ZNsMain::ZtCObjectPtr myCObjPtr(myClass_Obj); 나 - IterElement(myFunctor_obj, ZNsMain::ZtCObjectPtr(myClass_Obj)); + IterElement(myFunctor_obj, + ZNsMain::ZtCObjectPtr(myClass_Obj)); 형태를 사용하면 좋을 것 같다. -- 2014-06-16 23:11:00 /////////////////////////////////////////////////////////////////////////////*/ + typedef ZNsMain:: + ZtCTypeData ZCTypeHelp; + + Type* VP_TypeArr = mp_TypeArr; __for0(TypeSize, i, ml_UseSize) { - ZNsMain::ZtCTypeData:: - GetObjRef(AO_Functor)(*VP_TypeArr, AO_TypeHelp); ++VP_TypeArr; + ZNsMain::ZtCTypeData::GetObjRef(AO_Functor) + ( + *VP_TypeArr, ZCTypeHelp::GetObjRef(AO_TypeHelp) + ); + ///////////////////////////////////////////////////// + + ++VP_TypeArr; }/* __for0(TypeSize, i, ml_UseSize)*/ }/* @@ -490,13 +502,20 @@ namespace ZNsMain /////////////////////////////////////////////////////////////////////////////*/ + typedef ZNsMain::ZtCTypeData ZCTypeHelp1; + typedef ZNsMain::ZtCTypeData ZCTypeHelp2; + Type* VP_TypeArr = mp_TypeArr; __for0(TypeSize, i, ml_UseSize) { ZNsMain::ZtCTypeData::GetObjRef(AO_Functor) - (*VP_TypeArr, AO_TypeHelp1, AO_TypeHelp2); + ( + *VP_TypeArr + , ZCTypeHelp1::GetObjRef(AO_TypeHelp1) + , ZCTypeHelp2::GetObjRef(AO_TypeHelp2) + ); ++VP_TypeArr; /////////////////////////////////////// }/* diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 7170470..0c21f47 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -1526,12 +1526,18 @@ namespace ZNsMain /////////////////////////////////////////////////////////////////////////////*/ + typedef ZNsMain:: + ZtCTypeData ZCTypeHelp; + + ZCLink* VP_LoopLink=mp_HeadLink; __for0(int, i, ml_Size) { - ZtCTypeData:: - GetObjRef(AO_Functor)(VP_LoopLink->mo_Type, AO_TypeHelp); + ZtCTypeData::GetObjRef(AO_Functor) + ( + VP_LoopLink->mo_Type, ZCTypeHelp::GetObjRef(AO_TypeHelp) + ); /* 위 코드로 인해서, AO_Functor 이 함수일 때 뿐이 아니라, operator() 연산자를 가진 object 포인터일 때도 사용할 수 있게 되었다. */ @@ -1544,6 +1550,55 @@ namespace ZNsMain void IterElement(TFunctor AO_Functor, TTypeHelp AO_TypeHelp) */ + template + void IterElement(TFunctor AO_Functor, + TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2) + { + /*///////////////////////////////////////////////////////////////////////////// + + ■ TTypeHelp 가 class 일 경우, 크기가 커서 참조로 넘어가야 한다면, + + IterElement(myFunctor_obj, myClass_Obj); + + 의 형태로 호출할 게 아니라, ZtCObjectPtr<> 을 사용하여, + + myClass myClass_Obj; ZtCObjectPtr myCObjPtr(myClass_Obj); + + 나 + + IterElement(myFunctor_obj, ZtCObjectPtr(myClass_Obj)); + + 형태를 사용하면 좋을 것 같다. -- 2014-06-16 23:11:00 + + /////////////////////////////////////////////////////////////////////////////*/ + + typedef ZNsMain::ZtCTypeData ZCTypeHelp1; + typedef ZNsMain::ZtCTypeData ZCTypeHelp2; + + + ZCLink* VP_LoopLink=mp_HeadLink; + + __for0(int, i, ml_Size) + { + ZtCTypeData::GetObjRef(AO_Functor) + ( + VP_LoopLink->mo_Type + , ZCTypeHelp1::GetObjRef(AO_TypeHelp1) + , ZCTypeHelp2::GetObjRef(AO_TypeHelp2) + ); + + /* 위 코드로 인해서, AO_Functor 이 함수일 때 뿐이 아니라, operator() + 연산자를 가진 object 포인터일 때도 사용할 수 있게 되었다. */ + + VP_LoopLink = VP_LoopLink->mp_NextLink ; + }/* + __for0(int, i, ml_Size)*/ + }/* + template + void IterElement(TFunctor AO_Functor, + TTypeHelp1 AO_TypeHelp1, TTypeHelp2 AO_TypeHelp2)*/ + + template void IterElemRef(TFunctor AO_Functor, TTypeHelp& AR_TypeHelp) { diff --git a/ZCppMain/test.cpp b/ZCppMain/test.cpp index 719a5fb..fa15a3b 100644 --- a/ZCppMain/test.cpp +++ b/ZCppMain/test.cpp @@ -77,11 +77,11 @@ int main(int ArgiCnt, char** AppArgu) _FFC_(ZCShowData2) _FFS_(ZCShowData3) - (ZTypInt AiInt, ZCTuple* AP_CTuple) + (ZTypInt AiInt, ZCTuple& AR_CTuple) { - cout<<"# Elem2 : "<< AiInt << ", nth=" << AP_CTuple->_1++ << endl; + cout<<"# Elem2 : "<< AiInt << ", nth=" << AR_CTuple._1++ << endl; }/* - (ZTypInt AiInt, ZCTuple* AP_CTuple)*/ + (ZTypInt AiInt, ZCTuple* AR_CTuple)*/ _FFC_(ZCShowData3)