commit 2025-09-09 14:15 add template parameter 'TMoveObj' in ZtCList & ZtCSimList
This commit is contained in:
@ -660,7 +660,7 @@ namespace ZNsMain
|
|||||||
|
|
||||||
|
|
||||||
typedef class ZCIterEasy{} IterEasy, *IterEasyID ;
|
typedef class ZCIterEasy{} IterEasy, *IterEasyID ;
|
||||||
typedef const IterEasyID* IterEasyIDc;
|
typedef const IterEasyID IterEasyIDc;
|
||||||
|
|
||||||
/*///////////////////////////////////////////////////////////////////////////////
|
/*///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@ -3959,12 +3959,12 @@ namespace ZNsMain
|
|||||||
//////////////////////////////////////////////////////////////////*/
|
//////////////////////////////////////////////////////////////////*/
|
||||||
|
|
||||||
template
|
template
|
||||||
<typename TType, typename TTypeArg=const TType&>
|
<typename TType, typename TTypArgu=const TType&>
|
||||||
class ZtCObjPtr
|
class ZtCObjPtr
|
||||||
{
|
{
|
||||||
public :
|
public :
|
||||||
typedef TType TypeData ;
|
typedef TType TypeData ;
|
||||||
typedef TTypeArg TypeArg ;
|
typedef TTypArgu TypeArg ;
|
||||||
protected:
|
protected:
|
||||||
TypeData& mr_TypeData;
|
TypeData& mr_TypeData;
|
||||||
public :
|
public :
|
||||||
@ -3983,11 +3983,11 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
ZtCObjPtr& operator=(const ZtCObjPtr& rhs)*/
|
ZtCObjPtr& operator=(const ZtCObjPtr& rhs)*/
|
||||||
|
|
||||||
ZtCObjPtr& operator=(TTypeArg AO_ArguData)
|
ZtCObjPtr& operator=(TTypArgu AO_ArguData)
|
||||||
{
|
{
|
||||||
mr_TypeData = AO_ArguData; return *this;
|
mr_TypeData = AO_ArguData; return *this;
|
||||||
}/*
|
}/*
|
||||||
ZtCObjPtr& operator=(TTypeArg AO_ArguData)*/
|
ZtCObjPtr& operator=(TTypArgu AO_ArguData)*/
|
||||||
|
|
||||||
public :
|
public :
|
||||||
};/*
|
};/*
|
||||||
@ -4732,21 +4732,24 @@ namespace ZNsMain
|
|||||||
template ///////////////////////////////////////////////
|
template ///////////////////////////////////////////////
|
||||||
<
|
<
|
||||||
typename TType ,
|
typename TType ,
|
||||||
typename TTypeArg = const TType&,
|
typename TTypArgu = const TType&,
|
||||||
typename TTypCAlloc = ZCAllocator ,
|
typename TTypCAlloc = ZCAllocator ,
|
||||||
typename TTypSize = ZTypLong
|
typename TTypSize = ZTypLong ,
|
||||||
|
typename TMoveObj = ZNsMain::
|
||||||
|
ZtCMoveObj<TType, TTypArgu, true>
|
||||||
>
|
>
|
||||||
class ZtCList /*######################################*/
|
class ZtCList /*######################################*/
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
class ZCLink;
|
class ZCLink;
|
||||||
public:
|
public:
|
||||||
typedef TType TypeData;
|
typedef TType TypeData ;
|
||||||
typedef TTypeArg TypeArg ;
|
typedef TTypArgu TypeArg ;
|
||||||
typedef TTypCAlloc TypeAlloc;
|
typedef TTypCAlloc TypeAlloc ;
|
||||||
typedef TTypSize TypeSize;
|
typedef TTypSize TypeSize ;
|
||||||
typedef ZCLink* IterEasy; // 가장 대표적으로 쓰일 수 있는 반복자.
|
typedef TMoveObj TypeMoveObj ;
|
||||||
typedef ZCLink* iterator;
|
typedef ZCLink* IterEasy ; // 가장 대표적으로 쓰일 수 있는 반복자.
|
||||||
|
typedef ZCLink* iterator ;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
@ -4932,15 +4935,45 @@ namespace ZNsMain
|
|||||||
void DeleteAll()*/
|
void DeleteAll()*/
|
||||||
|
|
||||||
|
|
||||||
TypeData& AddHead( /*++++++++++++*/ )
|
TypeData& AddHead()
|
||||||
{ return AddHeadLink(new ZCLink )->mo_Data; }
|
{ return AddHeadLink(new ZCLink)->mo_Data; }
|
||||||
TypeData& AddHead(TypeArg AO_ArgData)
|
TypeData& AddTail()
|
||||||
{ return AddHeadLink(new ZCLink(AO_ArgData))->mo_Data; }
|
{ return AddTailLink(new ZCLink)->mo_Data; }
|
||||||
|
|
||||||
TypeData& AddTail( /*++++++++++++*/ )
|
|
||||||
{ return AddTailLink(new ZCLink )->mo_Data; }
|
TypeData& AddHead(TypeArg AO_ArgData) /*########################*/
|
||||||
TypeData& AddTail(TypeArg AO_ArgData)
|
{
|
||||||
{ return AddTailLink(new ZCLink(AO_ArgData))->mo_Data; }
|
#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()
|
void DeleteHead()
|
||||||
@ -5212,9 +5245,11 @@ namespace ZNsMain
|
|||||||
template ///////////////////////////////////////////////
|
template ///////////////////////////////////////////////
|
||||||
<
|
<
|
||||||
typename TType ,
|
typename TType ,
|
||||||
typename TTypeArg = const TType&,
|
typename TTypArgu = const TType&,
|
||||||
typename TTypCAlloc = ZCAllocator ,
|
typename TTypCAlloc = ZCAllocator ,
|
||||||
typename TTypSize = ZTypLong
|
typename TTypSize = ZTypLong ,
|
||||||
|
typename TMoveObj = ZNsMain::
|
||||||
|
ZtCMoveObj<TType, TTypArgu, true>
|
||||||
>
|
>
|
||||||
class ZtCList /*######################################*/
|
class ZtCList /*######################################*/
|
||||||
|
|
||||||
|
@ -16,20 +16,23 @@ namespace ZNsMain
|
|||||||
template /*#######################################*/
|
template /*#######################################*/
|
||||||
<
|
<
|
||||||
typename TType ,
|
typename TType ,
|
||||||
typename TTypCArg =const TType&,
|
typename TTypArgu =const TType&,
|
||||||
typename TTypCAlloc=ZCAllocator ,
|
typename TTypCAlloc=ZCAllocator ,
|
||||||
typename TTypCInit =ZCInit ,
|
typename TTypCInit =ZCInit ,
|
||||||
typename TTypSize =ZTypLong
|
typename TTypSize =ZTypLong ,
|
||||||
|
typename TMoveObj = ZNsMain::
|
||||||
|
ZtCMoveObj<TType, TTypArgu, true>
|
||||||
>
|
>
|
||||||
class ZtCSimList /*###############################*/
|
class ZtCSimList /*###############################*/
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef TType Type ;
|
typedef TType Type ;
|
||||||
typedef TType TypeData ;
|
typedef TType TypeData ;
|
||||||
typedef TTypCArg TypeArg ;
|
typedef TTypArgu TypeArg ;
|
||||||
typedef TTypCAlloc TypeAlloc;
|
typedef TTypCAlloc TypeAlloc ;
|
||||||
typedef TTypCInit TypeInit ;
|
typedef TTypCInit TypeInit ;
|
||||||
typedef TTypSize TypeSize ;
|
typedef TTypSize TypeSize ;
|
||||||
|
typedef TMoveObj TypeMoveObj;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
@ -1219,6 +1222,14 @@ namespace ZNsMain
|
|||||||
void AddHead(TypeArg AR_Type)
|
void AddHead(TypeArg AR_Type)
|
||||||
{
|
{
|
||||||
ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink() ;
|
ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink() ;
|
||||||
|
|
||||||
|
#if(_CODE_NEW_)
|
||||||
|
if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
|
||||||
|
{
|
||||||
|
TypeMoveObj::Exec(VP_AddLink->mo_Type, AR_Type);
|
||||||
|
}
|
||||||
|
else ///////////////////////////////////////////////
|
||||||
|
#endif
|
||||||
VP_AddLink->mo_Type= AR_Type ;
|
VP_AddLink->mo_Type= AR_Type ;
|
||||||
|
|
||||||
if(++ml_Size==1) // ml_Size==0
|
if(++ml_Size==1) // ml_Size==0
|
||||||
@ -1259,6 +1270,14 @@ namespace ZNsMain
|
|||||||
void AddTail(TypeArg AR_Type)
|
void AddTail(TypeArg AR_Type)
|
||||||
{
|
{
|
||||||
ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink();
|
ZCLink* VP_AddLink = GetCLinkHeap().GetOneLink();
|
||||||
|
|
||||||
|
#if(_CODE_NEW_)
|
||||||
|
if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
|
||||||
|
{
|
||||||
|
TypeMoveObj::Exec(VP_AddLink->mo_Type, AR_Type);
|
||||||
|
}
|
||||||
|
else ///////////////////////////////////////////////
|
||||||
|
#endif
|
||||||
VP_AddLink->mo_Type= AR_Type ;
|
VP_AddLink->mo_Type= AR_Type ;
|
||||||
|
|
||||||
if(++ml_Size==1) // ml_Size==0
|
if(++ml_Size==1) // ml_Size==0
|
||||||
@ -2299,109 +2318,19 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
const TType& ItD(const IterEasyID APPI_IterEasyID) const*/
|
const TType& ItD(const IterEasyID APPI_IterEasyID) const*/
|
||||||
|
|
||||||
/*
|
|
||||||
public:*/
|
|
||||||
};/*
|
|
||||||
class ZtCSimList*/
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
/****************** end class ZtCSimList ******************/
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
namespace ZNsExam
|
|
||||||
{
|
|
||||||
|
|
||||||
template<typename TDummy=void*> class ZtCExamSimList
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
|
|
||||||
class CHelpObj
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
CHelpObj()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CHelpObj(const CHelpObj& rhs)
|
|
||||||
{
|
|
||||||
cout<<"* CHelpObj(const CHelpObj& rhs)"<<endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct StFunctor
|
|
||||||
{
|
|
||||||
static void ShowElement(int ArgiValue){cout<<"#1 Value="<<ArgiValue<<endl;}
|
|
||||||
};
|
|
||||||
struct StFunctor2
|
|
||||||
{
|
|
||||||
static void ShowElement(int ArgiValue, CHelpObj)
|
|
||||||
{cout<<"#2 Value="<<ArgiValue<<", CHelpObj Addr=None"<<" With CHelpObj"<<endl;}
|
|
||||||
};
|
|
||||||
struct StFunctor3
|
|
||||||
{
|
|
||||||
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
|
|
||||||
{cout<<"#3 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref"<<endl;}
|
|
||||||
};
|
|
||||||
struct StFunctor4
|
|
||||||
{
|
|
||||||
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj)
|
|
||||||
{cout<<"#4 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj in Ptr"<<endl;}
|
|
||||||
};
|
|
||||||
struct StFunctor5
|
|
||||||
{
|
|
||||||
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj& AR_CHelpObj2)
|
|
||||||
{cout<<"#5 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Ref 2"<<endl;}
|
|
||||||
};
|
|
||||||
struct StFunctor6
|
|
||||||
{
|
|
||||||
static void ShowElement(int ArgiValue, CHelpObj& AR_CHelpObj, CHelpObj AO_CHelpObj2)
|
|
||||||
{cout<<"#6 Value="<<ArgiValue<<", HelpObj Ptr="<<&AR_CHelpObj<<" With CHelpObj Half Ref"<<endl;}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static int Main(int AI_ArgCnt=0, const char* APP_ArgVal[]=0)
|
|
||||||
{
|
|
||||||
using namespace std ;
|
|
||||||
using namespace ZNsMain;
|
|
||||||
|
|
||||||
typedef ZtCSimList<int> CObjList;
|
|
||||||
|
|
||||||
CHelpObj VO_CHelpObj;
|
|
||||||
CObjList VO_CObjList;
|
|
||||||
|
|
||||||
VO_CObjList.AddTail(10);
|
|
||||||
VO_CObjList.AddTail(20);
|
|
||||||
VO_CObjList.AddTail(30);
|
|
||||||
VO_CObjList.AddTail(40);
|
|
||||||
|
|
||||||
cout<<endl<<"#### Show CSimList Element ####"<<endl<<endl;
|
|
||||||
|
|
||||||
VO_CObjList.IterElement(StFunctor ::ShowElement);
|
|
||||||
VO_CObjList.IterElement(StFunctor2::ShowElement, VO_CHelpObj );
|
|
||||||
VO_CObjList.IterElement(StFunctor3::ShowElement, ZftMCR(VO_CHelpObj) );
|
|
||||||
VO_CObjList.IterElement(StFunctor4::ShowElement, ZftMCP(VO_CHelpObj) );
|
|
||||||
VO_CObjList.IterElement(StFunctor5::ShowElement, ZftMCP(VO_CHelpObj), ZftMCP(VO_CHelpObj) );
|
|
||||||
VO_CObjList.IterElement(StFunctor6::ShowElement, ZftMCP(VO_CHelpObj), VO_CHelpObj );
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}/*
|
|
||||||
static int Main(int AI_ArgCnt=0, const char* APP_ArgVal[]=0)*/
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
};/*
|
};/*
|
||||||
template<typename TDummy=void*> class ZtCExamSimList*/
|
template ###########################################
|
||||||
|
<
|
||||||
}/*
|
typename TType ,
|
||||||
namespace ZNsExam*/
|
typename TTypArgu =const TType&,
|
||||||
|
typename TTypCAlloc=ZCAllocator ,
|
||||||
|
typename TTypCInit =ZCInit ,
|
||||||
|
typename TTypSize =ZTypLong ,
|
||||||
|
typename TMoveObj = ZNsMain::
|
||||||
|
ZtCMoveObj<TType, TTypArgu, true>
|
||||||
|
>
|
||||||
|
class ZtCSimList #################################*/
|
||||||
|
|
||||||
}/*
|
}/*
|
||||||
namespace ZNsMain*/
|
namespace ZNsMain*/
|
||||||
|
Reference in New Issue
Block a user