commit 2025-09-12 14:54 add ZIFreeHeap in ZCppMain/ZMainHead.H
This commit is contained in:
@ -3765,6 +3765,57 @@ namespace ZNsMain
|
|||||||
class ZCFreeAllocBase*/
|
class ZCFreeAllocBase*/
|
||||||
|
|
||||||
|
|
||||||
|
namespace ZNsIFace
|
||||||
|
{
|
||||||
|
|
||||||
|
// 자료 구조에서 자유 기억 공간을 구현하는 interface
|
||||||
|
|
||||||
|
class ZIFreeHeap
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
template
|
||||||
|
<typename TTypeLink, typename TTypSize=ZTypLong>
|
||||||
|
class ZtIMain
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void RecvFreeIn(TTypeLink* AP_CutLink){}
|
||||||
|
void RecvFreeIn ////////////////////////
|
||||||
|
(
|
||||||
|
TTypeLink* AP_CutHead ,
|
||||||
|
TTypeLink* AP_CutTail ,
|
||||||
|
TTypSize AL_CutCnt
|
||||||
|
)
|
||||||
|
{ } ////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
TTypeLink* SendFreeOut(){}
|
||||||
|
void SendFreeOut /////////////////
|
||||||
|
(
|
||||||
|
TTypeLink*& APR_NewHead ,
|
||||||
|
TTypeLink*& APR_NewTail ,
|
||||||
|
TTypSize AL_NeedCnt
|
||||||
|
)
|
||||||
|
{ } ////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
void DeleteHeap(){}
|
||||||
|
|
||||||
|
public:
|
||||||
|
};/*
|
||||||
|
template
|
||||||
|
<typename TTypeLink, typename TTypSize=ZTypLong>
|
||||||
|
class ZtIMain */
|
||||||
|
|
||||||
|
public:
|
||||||
|
};/*
|
||||||
|
class ZIFreeHeap*/
|
||||||
|
|
||||||
|
|
||||||
|
}/*
|
||||||
|
namespace ZNsIFace*/
|
||||||
|
|
||||||
|
|
||||||
// 자유 기억 공간을 총괄하는 단방향 연결 리스트
|
// 자유 기억 공간을 총괄하는 단방향 연결 리스트
|
||||||
|
|
||||||
class ZCHeapAllocList
|
class ZCHeapAllocList
|
||||||
@ -3993,7 +4044,8 @@ namespace ZNsMain
|
|||||||
TypeData& mr_TypeData;
|
TypeData& mr_TypeData;
|
||||||
public :
|
public :
|
||||||
|
|
||||||
ZtCObjPtr(TType& AR_CData) : mr_TypeData(AR_CData){}
|
ZtCObjPtr(TType& AR_CData) : mr_TypeData(AR_CData ){}
|
||||||
|
ZtCObjPtr(ZtCObjPtr& AR_Rhs ) : mr_TypeData(AR_Rhs.mr_TypeData){}
|
||||||
|
|
||||||
TypeData* operator->(){return &mr_TypeData;}
|
TypeData* operator->(){return &mr_TypeData;}
|
||||||
TypeData& operator* (){return mr_TypeData;}
|
TypeData& operator* (){return mr_TypeData;}
|
||||||
|
@ -58,6 +58,7 @@ namespace ZNsMain
|
|||||||
typedef const ZCIterator const_iterator;
|
typedef const ZCIterator const_iterator;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
class ZCLink : public TypeAlloc
|
class ZCLink : public TypeAlloc
|
||||||
{
|
{
|
||||||
public :
|
public :
|
||||||
@ -748,7 +749,7 @@ namespace ZNsMain
|
|||||||
}
|
}
|
||||||
else if(ml_Size<=rhs.ml_Size)
|
else if(ml_Size<=rhs.ml_Size)
|
||||||
{
|
{
|
||||||
AddDefault(rhs.ml_Size-ml_Size,ml_Size+1);
|
AddDefault(rhs.ml_Size-ml_Size, ml_Size+1);
|
||||||
|
|
||||||
ZCLink* pRhsLink=rhs.mp_HeadLink;
|
ZCLink* pRhsLink=rhs.mp_HeadLink;
|
||||||
ZCLink* pLhsLink= mp_HeadLink;
|
ZCLink* pLhsLink= mp_HeadLink;
|
||||||
@ -1034,27 +1035,27 @@ namespace ZNsMain
|
|||||||
|
|
||||||
ZtCObjList& DeleteAll()
|
ZtCObjList& DeleteAll()
|
||||||
{
|
{
|
||||||
if(mp_HeadLink!=0)
|
if(mp_HeadLink==0) return *this;
|
||||||
|
|
||||||
|
OnDelete /*============================*/
|
||||||
|
(
|
||||||
|
mp_HeadLink , 1 ,
|
||||||
|
mp_HeadLink->mp_PrevLink, ml_Size
|
||||||
|
);
|
||||||
|
/*=====================================*/
|
||||||
|
|
||||||
|
ZCLink* VP_DelLink=0 ;
|
||||||
|
|
||||||
|
do ///////////////////
|
||||||
{
|
{
|
||||||
OnDelete(
|
VP_DelLink =mp_HeadLink ;
|
||||||
mp_HeadLink, 1, mp_HeadLink->mp_PrevLink, ml_Size);
|
mp_HeadLink=mp_HeadLink->mp_NextLink ;
|
||||||
|
|
||||||
ZCLink* VP_DelLink=0;
|
delete VP_DelLink;
|
||||||
|
}
|
||||||
|
while(--ml_Size>0);
|
||||||
|
|
||||||
do ////
|
mp_HeadLink =0; return *this;
|
||||||
{
|
|
||||||
VP_DelLink =mp_HeadLink;
|
|
||||||
mp_HeadLink=mp_HeadLink->mp_NextLink ;
|
|
||||||
|
|
||||||
delete VP_DelLink;
|
|
||||||
}
|
|
||||||
while(--ml_Size>0);
|
|
||||||
|
|
||||||
mp_HeadLink =0;
|
|
||||||
}/*
|
|
||||||
if(mp_HeadLink!=0)*/
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}/*
|
}/*
|
||||||
ZtCObjList& DeleteAll()*/
|
ZtCObjList& DeleteAll()*/
|
||||||
|
|
||||||
@ -1168,7 +1169,7 @@ namespace ZNsMain
|
|||||||
{
|
{
|
||||||
if(AL_DefaultSize<1 || AL_AddPos<1 || AL_AddPos>ml_Size+1)
|
if(AL_DefaultSize<1 || AL_AddPos<1 || AL_AddPos>ml_Size+1)
|
||||||
return 0;
|
return 0;
|
||||||
//////////////////////////////////////////////////////////
|
/*======================================================*/
|
||||||
|
|
||||||
ZtCObjList VO_StoreList; MakeDefault(
|
ZtCObjList VO_StoreList; MakeDefault(
|
||||||
AL_DefaultSize, VO_StoreList);
|
AL_DefaultSize, VO_StoreList);
|
||||||
|
Reference in New Issue
Block a user