From bf89d8c83ebc67ca9e53855657dae1f8262fe583 Mon Sep 17 00:00:00 2001 From: sauron Date: Tue, 9 Sep 2025 14:15:21 +0900 Subject: [PATCH] commit 2025-09-09 14:15 add template parameter 'TMoveObj' in ZtCList & ZtCSimList --- ZCppMain/ZMainHead.H | 81 ++++++++++++++++++-------- ZCppMain/ZtCSimList.H | 153 ++++++++++++++------------------------------------ 2 files changed, 99 insertions(+), 135 deletions(-) diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index cc79fec..7ebcd8e 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -660,7 +660,7 @@ namespace ZNsMain typedef class ZCIterEasy{} IterEasy, *IterEasyID ; - typedef const IterEasyID* IterEasyIDc; + typedef const IterEasyID IterEasyIDc; /*/////////////////////////////////////////////////////////////////////////////// @@ -3959,12 +3959,12 @@ namespace ZNsMain //////////////////////////////////////////////////////////////////*/ template - + class ZtCObjPtr { public : typedef TType TypeData ; - typedef TTypeArg TypeArg ; + typedef TTypArgu TypeArg ; protected: TypeData& mr_TypeData; public : @@ -3983,11 +3983,11 @@ namespace ZNsMain }/* ZtCObjPtr& operator=(const ZtCObjPtr& rhs)*/ - ZtCObjPtr& operator=(TTypeArg AO_ArguData) + ZtCObjPtr& operator=(TTypArgu AO_ArguData) { mr_TypeData = AO_ArguData; return *this; }/* - ZtCObjPtr& operator=(TTypeArg AO_ArguData)*/ + ZtCObjPtr& operator=(TTypArgu AO_ArguData)*/ public : };/* @@ -4732,21 +4732,24 @@ namespace ZNsMain template /////////////////////////////////////////////// < typename TType , - typename TTypeArg = const TType&, + typename TTypArgu = const TType&, typename TTypCAlloc = ZCAllocator , - typename TTypSize = ZTypLong + typename TTypSize = ZTypLong , + typename TMoveObj = ZNsMain:: + ZtCMoveObj > class ZtCList /*######################################*/ { public: class ZCLink; public: - typedef TType TypeData; - typedef TTypeArg TypeArg ; - typedef TTypCAlloc TypeAlloc; - typedef TTypSize TypeSize; - typedef ZCLink* IterEasy; // 가장 대표적으로 쓰일 수 있는 반복자. - typedef ZCLink* iterator; + typedef TType TypeData ; + typedef TTypArgu TypeArg ; + typedef TTypCAlloc TypeAlloc ; + typedef TTypSize TypeSize ; + typedef TMoveObj TypeMoveObj ; + typedef ZCLink* IterEasy ; // 가장 대표적으로 쓰일 수 있는 반복자. + typedef ZCLink* iterator ; public: @@ -4932,15 +4935,45 @@ namespace ZNsMain void DeleteAll()*/ - TypeData& AddHead( /*++++++++++++*/ ) - { return AddHeadLink(new ZCLink )->mo_Data; } - TypeData& AddHead(TypeArg AO_ArgData) - { return AddHeadLink(new ZCLink(AO_ArgData))->mo_Data; } + TypeData& AddHead() + { return AddHeadLink(new ZCLink)->mo_Data; } + TypeData& AddTail() + { return AddTailLink(new ZCLink)->mo_Data; } - TypeData& AddTail( /*++++++++++++*/ ) - { return AddTailLink(new ZCLink )->mo_Data; } - TypeData& AddTail(TypeArg AO_ArgData) - { return AddTailLink(new ZCLink(AO_ArgData))->mo_Data; } + + TypeData& AddHead(TypeArg AO_ArgData) /*########################*/ + { + #if(_CODE_NEW_) + if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// + { + ZCLink* VP_NewNode = new ZCLink(AO_ArgData); + + TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData); + + return AddHeadLink(VP_NewNode)->mo_Data; + } + //////////////////////////////////////////////////// + #endif + return AddHeadLink(new ZCLink(AO_ArgData))->mo_Data; + }/* + TypeData& AddHead(TypeArg AO_ArgData) ##########################*/ + + TypeData& AddTail(TypeArg AO_ArgData) /*########################*/ + { + #if(_CODE_NEW_) + if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// + { + ZCLink* VP_NewNode = new ZCLink(AO_ArgData); + + TypeMoveObj::Exec(VP_NewNode->mo_Data, AO_ArgData); + + return AddTailLink(VP_NewNode)->mo_Data; + } + //////////////////////////////////////////////////// + #endif + return AddTailLink(new ZCLink(AO_ArgData))->mo_Data; + }/* + TypeData& AddTail(TypeArg AO_ArgData) ##########################*/ void DeleteHead() @@ -5212,9 +5245,11 @@ namespace ZNsMain template /////////////////////////////////////////////// < typename TType , - typename TTypeArg = const TType&, + typename TTypArgu = const TType&, typename TTypCAlloc = ZCAllocator , - typename TTypSize = ZTypLong + typename TTypSize = ZTypLong , + typename TMoveObj = ZNsMain:: + ZtCMoveObj > class ZtCList /*######################################*/ diff --git a/ZCppMain/ZtCSimList.H b/ZCppMain/ZtCSimList.H index 217551c..45f380f 100644 --- a/ZCppMain/ZtCSimList.H +++ b/ZCppMain/ZtCSimList.H @@ -16,20 +16,23 @@ namespace ZNsMain template /*#######################################*/ < typename TType , - typename TTypCArg =const TType&, + typename TTypArgu =const TType&, typename TTypCAlloc=ZCAllocator , typename TTypCInit =ZCInit , - typename TTypSize =ZTypLong + typename TTypSize =ZTypLong , + typename TMoveObj = ZNsMain:: + ZtCMoveObj > class ZtCSimList /*###############################*/ { public: - typedef TType Type ; - typedef TType TypeData ; - typedef TTypCArg TypeArg ; - typedef TTypCAlloc TypeAlloc; - typedef TTypCInit TypeInit ; - typedef TTypSize TypeSize ; + typedef TType Type ; + typedef TType TypeData ; + typedef TTypArgu TypeArg ; + typedef TTypCAlloc TypeAlloc ; + typedef TTypCInit TypeInit ; + typedef TTypSize TypeSize ; + typedef TMoveObj TypeMoveObj; public: @@ -1219,7 +1222,15 @@ namespace ZNsMain void AddHead(TypeArg AR_Type) { ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink() ; - VP_AddLink->mo_Type= AR_Type ; + + #if(_CODE_NEW_) + if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// + { + TypeMoveObj::Exec(VP_AddLink->mo_Type, AR_Type); + } + else /////////////////////////////////////////////// + #endif + VP_AddLink->mo_Type= AR_Type ; if(++ml_Size==1) // ml_Size==0 { @@ -1259,7 +1270,15 @@ namespace ZNsMain void AddTail(TypeArg AR_Type) { ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink(); - VP_AddLink->mo_Type= AR_Type ; + + #if(_CODE_NEW_) + if(TypeMoveObj::ZEUseMoveObj>0) //////////////////// + { + TypeMoveObj::Exec(VP_AddLink->mo_Type, AR_Type); + } + else /////////////////////////////////////////////// + #endif + VP_AddLink->mo_Type= AR_Type ; if(++ml_Size==1) // ml_Size==0 { @@ -2299,109 +2318,19 @@ namespace ZNsMain }/* const TType& ItD(const IterEasyID APPI_IterEasyID) const*/ - /* - public:*/ + public: };/* - class ZtCSimList*/ - - - //////////////////////////////////////////////////////////// - - /****************** end class ZtCSimList ******************/ - - //////////////////////////////////////////////////////////// - - - namespace ZNsExam - { - - template class ZtCExamSimList - { - public: - - - class CHelpObj - { - public: - - CHelpObj() - { - } - - CHelpObj(const CHelpObj& rhs) - { - cout<<"* CHelpObj(const CHelpObj& rhs)"< CObjList; - - CHelpObj VO_CHelpObj; - CObjList VO_CObjList; - - VO_CObjList.AddTail(10); - VO_CObjList.AddTail(20); - VO_CObjList.AddTail(30); - VO_CObjList.AddTail(40); - - cout< class ZtCExamSimList*/ - - }/* - namespace ZNsExam*/ + template ########################################### + < + typename TType , + typename TTypArgu =const TType&, + typename TTypCAlloc=ZCAllocator , + typename TTypCInit =ZCInit , + typename TTypSize =ZTypLong , + typename TMoveObj = ZNsMain:: + ZtCMoveObj + > + class ZtCSimList #################################*/ }/* namespace ZNsMain*/