commit 2025-08-31 01:34 refine class ZtCMoveObj in ZCppMain/ZtCStringEx.H
This commit is contained in:
@ -29,23 +29,26 @@ namespace ZNsMain
|
||||
template<typename TypeObjList> class ZtCSortObjList;
|
||||
|
||||
|
||||
template< typename TType ,
|
||||
typename TTypCArg =const TType&,
|
||||
typename TTypCAlloc=ZCAllocator ,
|
||||
typename TTypCInit =ZCInit ,
|
||||
typename TTypSize =ZTypLong
|
||||
template< typename TType ,
|
||||
typename TTypCArg = const TType&,
|
||||
typename TTypCAlloc = ZCAllocator ,
|
||||
typename TTypCInit = ZCInit ,
|
||||
typename TTypSize = ZTypLong ,
|
||||
typename TMoveObj = ZNsMain::
|
||||
ZtCMoveObj<TType, TTypCArg, true>
|
||||
>
|
||||
class ZtCObjList ////////////////////////////
|
||||
class ZtCObjList //////////////////////////////
|
||||
{
|
||||
public:
|
||||
template<typename TypeObjList> friend class ZtCSortObjList;
|
||||
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 TTypCArg TypeArg ;
|
||||
typedef TTypCAlloc TypeAlloc ;
|
||||
//typedef TTypCInit TypeInit ;
|
||||
typedef TTypSize TypeSize ;
|
||||
typedef TMoveObj TypeMoveObj;
|
||||
public:
|
||||
class ZCIterator;
|
||||
class ZCLink ;
|
||||
@ -61,7 +64,7 @@ namespace ZNsMain
|
||||
template<typename TypeObjList> friend class ZtCSortObjList;
|
||||
/*##########################*/ friend class ZtCObjList ;
|
||||
private:
|
||||
TypeData mo_Type ;
|
||||
TypeData mo_Data ;
|
||||
ZCLink* mp_NextLink;
|
||||
ZCLink* mp_PrevLink;
|
||||
private:
|
||||
@ -85,34 +88,42 @@ namespace ZNsMain
|
||||
|
||||
ZCLink()
|
||||
{
|
||||
mp_NextLink=0;
|
||||
mp_PrevLink=0;
|
||||
mp_NextLink =0 ;
|
||||
mp_PrevLink =0 ;
|
||||
}/*
|
||||
ZCLink()*/
|
||||
|
||||
ZCLink(TypeArg AR_Type):mo_Type(AR_Type)
|
||||
ZCLink(TypeArg AR_Type)
|
||||
{
|
||||
mp_NextLink=0;
|
||||
mp_PrevLink=0;
|
||||
mp_NextLink = 0 ;
|
||||
mp_PrevLink = 0 ;
|
||||
mo_Data = AR_Type ;
|
||||
}/*
|
||||
ZCLink(TypeArg AR_Type)*/
|
||||
|
||||
ZCLink(const ZCLink& rhs):mo_Type(rhs.mo_Type)
|
||||
ZCLink(const ZCLink& rhs)
|
||||
{
|
||||
mp_NextLink=0;
|
||||
mp_PrevLink=0;
|
||||
mp_NextLink =0 ;
|
||||
mp_PrevLink =0 ;
|
||||
mo_Data = rhs.mo_Data ;
|
||||
}/*
|
||||
ZCLink(const ZCLink& rhs)*/
|
||||
|
||||
ZCLink& operator=(const ZCLink& rhs)
|
||||
{
|
||||
mo_Data = rhs.mo_Data; return *this;
|
||||
}/*
|
||||
ZCLink& operator=(const ZCLink& rhs)*/
|
||||
|
||||
operator Type& (){return mo_Type;}
|
||||
operator Type (){return mo_Type;}
|
||||
Type& GetData (){return mo_Type;}
|
||||
Type& operator*(){return mo_Type;}
|
||||
|
||||
operator const Type& () const{return mo_Type;}
|
||||
const Type& GetData () const{return mo_Type;}
|
||||
const Type& operator*() const{return mo_Type;}
|
||||
operator Type& (){return mo_Data;}
|
||||
operator Type (){return mo_Data;}
|
||||
Type& GetData (){return mo_Data;}
|
||||
Type& operator*(){return mo_Data;}
|
||||
|
||||
operator const Type& () const{return mo_Data;}
|
||||
const Type& GetData () const{return mo_Data;}
|
||||
const Type& operator*() const{return mo_Data;}
|
||||
|
||||
|
||||
ZCLink* GetNextPrevPtr(TypeSize AL_FarNum) // AL_FarNum 은 0 이거나 음수일 수 있다.
|
||||
@ -617,7 +628,7 @@ namespace ZNsMain
|
||||
|
||||
if(AL_FarNum>0)
|
||||
{
|
||||
APR_HeadLink=
|
||||
APR_HeadLink =
|
||||
new ZCLink(AP_CopyLink->GetData());
|
||||
|
||||
ZCLink* VP_TempLink=APR_HeadLink;
|
||||
@ -1136,6 +1147,18 @@ namespace ZNsMain
|
||||
|
||||
ZtCObjList& AddHead(TypeArg AR_Type)
|
||||
{
|
||||
#if(_CODE_NEW_)
|
||||
if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
|
||||
{
|
||||
ZCLink* VP_NewNode = new ZCLink;
|
||||
|
||||
TypeMoveObj::Exec(VP_NewNode->mo_Data, AR_Type);
|
||||
|
||||
JoinAfter(VP_NewNode, 0, 0); return *this;
|
||||
}
|
||||
////////////////////////////////////////////////////
|
||||
#endif
|
||||
|
||||
JoinAfter(new ZCLink(AR_Type), 0, 0); return *this;
|
||||
}/*
|
||||
ZtCObjList& AddHead(TypeArg AR_Type)*/
|
||||
@ -1153,6 +1176,18 @@ namespace ZNsMain
|
||||
|
||||
ZtCObjList& AddTail(TypeArg AR_Type)
|
||||
{
|
||||
#if(_CODE_NEW_)
|
||||
if(TypeMoveObj::ZEUseMoveObj>0) ////////////////////
|
||||
{
|
||||
ZCLink* VP_NewNode = new ZCLink;
|
||||
|
||||
TypeMoveObj::Exec(VP_NewNode->mo_Data, AR_Type);
|
||||
|
||||
JoinAfter(VP_NewNode, GetTailLinkPtr(), 0); return *this;
|
||||
}
|
||||
////////////////////////////////////////////////////
|
||||
#endif
|
||||
|
||||
JoinAfter(new ZCLink(AR_Type), GetTailLinkPtr(), ml_Size); return *this;
|
||||
}/*
|
||||
ZtCObjList& AddTail(TypeArg AR_Type)*/
|
||||
@ -1517,7 +1552,7 @@ namespace ZNsMain
|
||||
|
||||
__for0(TypeSize, i, ml_Size)
|
||||
{
|
||||
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)(VP_LoopLink->mo_Type);
|
||||
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)(VP_LoopLink->mo_Data);
|
||||
|
||||
/* 위 코드로 인해서, AO_Functor 이 함수일 때 뿐이 아니라, operator()
|
||||
연산자를 가진 object 포인터일 때도 사용할 수 있게 되었다. */
|
||||
@ -1561,7 +1596,7 @@ namespace ZNsMain
|
||||
{
|
||||
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
|
||||
(
|
||||
VP_LoopLink->mo_Type, ZCCheckRef::PassData(AO_TypeHelp)
|
||||
VP_LoopLink->mo_Data, ZCCheckRef::PassData(AO_TypeHelp)
|
||||
);
|
||||
////////////////////////////////////////////
|
||||
|
||||
@ -1618,7 +1653,7 @@ namespace ZNsMain
|
||||
{
|
||||
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
|
||||
(
|
||||
VP_LoopLink->mo_Type
|
||||
VP_LoopLink->mo_Data
|
||||
, ZCCheckRef1::PassData(AO_TypeHelp1)
|
||||
, ZCCheckRef2::PassData(AO_TypeHelp2)
|
||||
);
|
||||
@ -1650,7 +1685,7 @@ namespace ZNsMain
|
||||
__for0(TypeSize, i, ml_Size)
|
||||
{
|
||||
ZtCTypeData<TFunctor>::GetObjRef
|
||||
(AO_Functor)(VP_LoopLink->mo_Type, AR_TypeHelp);
|
||||
(AO_Functor)(VP_LoopLink->mo_Data, AR_TypeHelp);
|
||||
|
||||
VP_LoopLink = VP_LoopLink->mp_NextLink ;
|
||||
}/*
|
||||
@ -1675,7 +1710,7 @@ namespace ZNsMain
|
||||
__for0(TypeSize, i, ml_Size)
|
||||
{
|
||||
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
|
||||
( VP_LoopLink->mo_Type, AR_TypeHelp1, AR_TypeHelp2 );
|
||||
( VP_LoopLink->mo_Data, AR_TypeHelp1, AR_TypeHelp2 );
|
||||
|
||||
VP_LoopLink = VP_LoopLink->mp_NextLink ;
|
||||
}/*
|
||||
@ -2124,13 +2159,15 @@ namespace ZNsMain
|
||||
|
||||
public:
|
||||
};/*
|
||||
template< typename TType ,
|
||||
typename TTypCArg =const TType&,
|
||||
typename TTypCAlloc=ZCAllocator ,
|
||||
typename TTypCInit =ZCInit ,
|
||||
typename TTypSize =ZTypLong
|
||||
template< typename TType ,
|
||||
typename TTypCArg = const TType&,
|
||||
typename TTypCAlloc = ZCAllocator ,
|
||||
typename TTypCInit = ZCInit ,
|
||||
typename TTypSize = ZTypLong ,
|
||||
typename TMoveObj = ZNsMain::
|
||||
ZtCMoveObj<TType, TTypArg, true>
|
||||
>
|
||||
class ZtCObjList //////////////////////////*/
|
||||
class ZtCObjList ////////////////////////////*/
|
||||
|
||||
|
||||
/*/////////////////////////////////////////////////////////////////////////////
|
||||
|
Reference in New Issue
Block a user