commit 2025-08-26 00:11 ZtCObjectNew => ZtCObjNew, ZtCObjectPtr to ZtCObjPtr in ZCppMain/ZMainHead.H

This commit is contained in:
2025-08-26 00:11:43 +09:00
parent 71ec922958
commit 471fa75bc4

View File

@ -2896,23 +2896,23 @@ namespace ZNsMain
크면 포인터로 넘겨야 하는데, 이러면 어느 object 의 포인터인지 알 크면 포인터로 넘겨야 하는데, 이러면 어느 object 의 포인터인지 알
수 있지만 그 object 에 속한 enum 형이나 typedef 선언 및 기타 자료 수 있지만 그 object 에 속한 enum 형이나 typedef 선언 및 기타 자료
형은 알 수 없다. 그래서 object 의 포인터를 포장하는 클래스 템플릿 형은 알 수 없다. 그래서 object 의 포인터를 포장하는 클래스 템플릿
ZtCObjectPtr<> 을 설계한다. ZtCObjPtr<> 을 설계한다.
■ typedef ZtCStringBase<char > CStringBase; ■ typedef ZtCStringBase<char > CStringBase;
typedef ZtCObjectPtr <CStringBase> CObjectPtr ; typedef ZtCObjPtr <CStringBase> CObjectPtr ;
라는 선언이 있으면 CStringBase::TTypeChar 에 접근할 때에는 라는 선언이 있으면 CStringBase::TypeChar 에 접근할 때에는
CObjectPtr::TypeData::TTypeChar 로 하면 된다. CObjectPtr::TypeData::TypeChar 로 하면 된다.
■ 포인터 자료형에 대하여 ZtCObjectPtr<> 대신 더 간단하게 ■ 포인터 자료형에 대하여 ZtCObjPtr<> 대신 더 간단하게
ZtCTypeData<> 를 사용해도 된다. 이 편이 오히려 낳을 것 같다. ZtCTypeData<> 를 사용해도 된다. 이 편이 오히려 낳을 것 같다.
-- 2010-01-24 22:25:00 -- 2010-01-24 22:25:00
//////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////*/
template<typename TType> class ZtCObjectPtr template<typename TType> class ZtCObjPtr
{ {
public : public :
typedef TType TypeData; typedef TType TypeData;
@ -2920,7 +2920,7 @@ namespace ZNsMain
TType& mr_TypeData; TType& mr_TypeData;
public : public :
ZtCObjectPtr(TType& AR_CData) : mr_TypeData(AR_CData){} ZtCObjPtr(TType& AR_CData) : mr_TypeData(AR_CData){}
TypeData* operator->(){return &mr_TypeData;} TypeData* operator->(){return &mr_TypeData;}
TypeData& operator* (){return mr_TypeData;} TypeData& operator* (){return mr_TypeData;}
@ -2928,7 +2928,7 @@ namespace ZNsMain
public : public :
};/* };/*
template<typename TType> class ZtCObjectPtr */ template<typename TType> class ZtCObjPtr */
/*/////////////////////////////////////////////////////////// /*///////////////////////////////////////////////////////////
@ -2941,7 +2941,7 @@ namespace ZNsMain
template< typename TType, typename TAllocClass=ZCAllocClass template< typename TType, typename TAllocClass=ZCAllocClass
> >
class ZtCObjectNew : public TAllocClass ///////////////////// class ZtCObjNew : public TAllocClass ////////////////////////
{ {
public : public :
typedef TType TypeData ; typedef TType TypeData ;
@ -2961,7 +2961,7 @@ namespace ZNsMain
StTypeRefCnt* mp_StTypeRefCnt; StTypeRefCnt* mp_StTypeRefCnt;
public : public :
ZtCObjectNew() ZtCObjNew()
{ {
mp_StTypeRefCnt = (StTypeRefCnt*) mp_StTypeRefCnt = (StTypeRefCnt*)
this->ZCAllocator::NewMem(sizeof(StTypeRefCnt)); this->ZCAllocator::NewMem(sizeof(StTypeRefCnt));
@ -2969,9 +2969,9 @@ namespace ZNsMain
new(&mp_StTypeRefCnt->MO_TypeData) TypeData; new(&mp_StTypeRefCnt->MO_TypeData) TypeData;
}/* }/*
ZtCObjectNew()*/ ZtCObjNew()*/
ZtCObjectNew(const TypeData& AR_TypeData) ZtCObjNew(const TypeData& AR_TypeData)
{ {
mp_StTypeRefCnt = (StTypeRefCnt*) mp_StTypeRefCnt = (StTypeRefCnt*)
this->ZCAllocator::NewMem(sizeof(StTypeRefCnt)); this->ZCAllocator::NewMem(sizeof(StTypeRefCnt));
@ -2979,10 +2979,10 @@ namespace ZNsMain
new(&mp_StTypeRefCnt->MO_TypeData) TypeData(AR_TypeData); new(&mp_StTypeRefCnt->MO_TypeData) TypeData(AR_TypeData);
}/* }/*
ZtCObjectNew(const TypeData& AR_TypeData)*/ ZtCObjNew(const TypeData& AR_TypeData)*/
template<typename TTypeArg1, typename TTypeArg2> template<typename TTypeArg1, typename TTypeArg2>
ZtCObjectNew(TTypeArg1& ArTTypeArg1, TTypeArg2& ArTTypeArg2) ZtCObjNew(TTypeArg1& ArTTypeArg1, TTypeArg2& ArTTypeArg2)
{ {
mp_StTypeRefCnt = (StTypeRefCnt*) mp_StTypeRefCnt = (StTypeRefCnt*)
this->ZCAllocator::NewMem(sizeof(StTypeRefCnt)); this->ZCAllocator::NewMem(sizeof(StTypeRefCnt));
@ -2992,22 +2992,23 @@ namespace ZNsMain
TypeData(ArTTypeArg1, ArTTypeArg2); TypeData(ArTTypeArg1, ArTTypeArg2);
}/* }/*
template<typename TTypeArg1, typename TTypeArg2> template<typename TTypeArg1, typename TTypeArg2>
ZtCObjectNew(TTypeArg1& ArTTypeArg1, TTypeArg2& ArTTypeArg2))*/ ZtCObjNew(TTypeArg1& ArTTypeArg1, TTypeArg2& ArTTypeArg2))*/
ZtCObjectNew(const ZtCObjectNew& rhs) ZtCObjNew(const ZtCObjNew& rhs)
{ {
mp_StTypeRefCnt = rhs.mp_StTypeRefCnt; ++mp_StTypeRefCnt->MI_RefCount; mp_StTypeRefCnt = rhs.mp_StTypeRefCnt ;
++mp_StTypeRefCnt->MI_RefCount ;
}/* }/*
ZtCObjectNew(const ZtCObjectNew& rhs)*/ ZtCObjNew(const ZtCObjNew& rhs)*/
~ZtCObjectNew() ~ZtCObjNew()
{ {
if(--mp_StTypeRefCnt->MI_RefCount <= 0) if(--mp_StTypeRefCnt->MI_RefCount <= 0)
this->ZCAllocator::DeleteMem(mp_StTypeRefCnt); this->ZCAllocator::DeleteMem(mp_StTypeRefCnt);
}/* }/*
~ZtCObjectNew()*/ ~ZtCObjNew()*/
ZtCObjectNew& operator=(const ZtCObjectNew& rhs) ZtCObjNew& operator=(const ZtCObjNew& rhs)
{ {
if(this==&rhs || mp_StTypeRefCnt==rhs.mp_StTypeRefCnt) if(this==&rhs || mp_StTypeRefCnt==rhs.mp_StTypeRefCnt)
{ return *this; } { return *this; }
@ -3026,15 +3027,15 @@ namespace ZNsMain
return *this; ///////////////////////// return *this; /////////////////////////
#endif #endif
}/* }/*
ZtCObjectNew& operator=(const ZtCObjectNew& rhs)*/ ZtCObjNew& operator=(const ZtCObjNew& rhs)*/
ZtCObjectNew& operator=(const TypeData& AR_TypeData) ZtCObjNew& operator=(const TypeData& AR_TypeData)
{ {
if(&mp_StTypeRefCnt->MO_TypeData==&AR_TypeData) return *this; if(&mp_StTypeRefCnt->MO_TypeData==&AR_TypeData) return *this;
mp_StTypeRefCnt->MO_TypeData = AR_TypeData; return *this; mp_StTypeRefCnt->MO_TypeData = AR_TypeData; return *this;
}/* }/*
ZtCObjectNew& operator=(const TypeData& AR_TypeData)*/ ZtCObjNew& operator=(const TypeData& AR_TypeData)*/
TypeData& operator* (){return mp_StTypeRefCnt->MO_TypeData;} TypeData& operator* (){return mp_StTypeRefCnt->MO_TypeData;}
TypeData* operator->(){return &mp_StTypeRefCnt->MO_TypeData;} TypeData* operator->(){return &mp_StTypeRefCnt->MO_TypeData;}
@ -3048,7 +3049,7 @@ namespace ZNsMain
};/* };/*
template< typename TType, typename TAllocClass=ZCAllocClass template< typename TType, typename TAllocClass=ZCAllocClass
> >
class ZtCObjectNew : public TAllocClass ///////////////////*/ class ZtCObjNew : public TAllocClass //////////////////////*/
#ifdef _DEBUG #ifdef _DEBUG
@ -4393,7 +4394,7 @@ namespace ZNsCPP */
-- 2013-07-09 23:44:00 -- 2013-07-09 23:44:00
new 나 new[] 로 생성되는 일이 아예 없어야겠다. 즉 ZtCObjectNew<> 나 CArray_T<> 등의 클래스 를 사용해야 한다. new 나 new[] 로 생성되는 일이 아예 없어야겠다. 즉 ZtCObjNew<> 나 CArray_T<> 등의 클래스 를 사용해야 한다.
-- 2013-07-11 01:26:00 -- 2013-07-11 01:26:00