commit 2025-09-11 13:31 edit codes for ZtCList in ZCppMain/ZMainHead.H

This commit is contained in:
2025-09-11 13:31:10 +09:00
parent 0c07b0e497
commit 4c40e76abd
2 changed files with 59 additions and 10 deletions

View File

@ -4930,6 +4930,16 @@ namespace ZNsMain
}/* }/*
ZtCList()*/ ZtCList()*/
ZtCList(const ZtCList& rhs)
{
mp_HeadLink = 0 ;
mp_TailLink = 0 ;
ml_LinkCnt = 0 ;
*this = (rhs);
}/*
ZtCList(const ZtCList& rhs)*/
~ZtCList() ~ZtCList()
{ {
DeleteAll(); DeleteAll();
@ -4937,6 +4947,28 @@ namespace ZNsMain
~ZtCList()*/ ~ZtCList()*/
ZtCList& operator=(const ZtCList& rhs)
{
if(this==&rhs) return *this;
this->DeleteAll();
{
ZCLink* VP_NowLink = rhs.mp_HeadLink ;
__for0(TypeSize, i, rhs.size())
{
this->AddHead(VP_NowLink->mo_Data) ;
VP_NowLink = VP_NowLink->mp_NextLink;
}/*
__for0(TypeSize, i, rhs.size())*/
}
rhs. DeleteAll();
}/*
ZtCList& operator=(const ZtCList& rhs)*/
void DeleteAll() void DeleteAll()
{ {
ZCLink* VP_NowLink = mp_HeadLink; ZCLink* VP_NowLink = mp_HeadLink;

View File

@ -231,6 +231,15 @@ namespace ZNsMain
TypeSize ml_Size ; TypeSize ml_Size ;
protected: protected:
void OnDelete(ZCLink* AP_CutLink)
{
if(TypeInit::EUseFini<1) return;
TypeInit::OnFini(AP_CutLink->mo_Data, *this) ;
}
/*############################################################*/
void OnDelete /*//////////////////////////////////////////////*/ void OnDelete /*//////////////////////////////////////////////*/
( (
ZCLink* AP_CutHead, TypeSize AI_CutHeadPos, ZCLink* AP_CutHead, TypeSize AI_CutHeadPos,
@ -238,9 +247,6 @@ namespace ZNsMain
) )
/*############################################################*/ /*############################################################*/
{ {
// 상속클래스에서 추가된 멤버 데이타가 링크의 삭제시 변해야
// 하는 값이라면, 이 함수를 overload 하여 값을 조종한다.
if(TypeInit::EUseFini<1) return; if(TypeInit::EUseFini<1) return;
TypeSize VL_LoopCnt = AI_CutTailPos-AI_CutHeadPos+1 ; TypeSize VL_LoopCnt = AI_CutTailPos-AI_CutHeadPos+1 ;
@ -343,6 +349,19 @@ namespace ZNsMain
if(AO_CObjList.ml_Size<1) return; if(AO_CObjList.ml_Size<1) return;
AO_CObjList.OnDelete ////////////////////////
(
AO_CObjList.mp_HeadLink , 1 ,
AO_CObjList.mp_HeadLink->mp_PrevLink, AO_CObjList.ml_Size
);
/*/////////////////////////////////////////*/
this->OnInsert //////////////////////////////
(
this->ml_Size+1, AO_CObjList.ml_Size, AO_CObjList.mp_HeadLink
);
/*/////////////////////////////////////////*/
if(AP_LinkStd==0) if(AP_LinkStd==0)
{ {
if(ml_Size==0) if(ml_Size==0)
@ -381,9 +400,7 @@ namespace ZNsMain
protected: ZCLink* CutLink(ZCLink* AP_CutLink) protected: ZCLink* CutLink(ZCLink* AP_CutLink)
{ {
// 삭제하려는 링크의 위치값을 알 수 없으므로 모든 링크를 삭제한다는 신호를 보낸다. OnDelete(AP_CutLink);
OnDelete(mp_HeadLink, 1, mp_HeadLink->mp_PrevLink, ml_Size);
if(AP_CutLink==mp_HeadLink) if(AP_CutLink==mp_HeadLink)
{ {