commit 2025-10-12 18:51 add iterator class in ZCppMain/ZtCObjList.H
This commit is contained in:
@ -5682,11 +5682,17 @@ namespace ZNsMain
|
|||||||
typedef ZCLink TypeLink ;
|
typedef ZCLink TypeLink ;
|
||||||
typedef ZCLinkPoint TypeLinkPoint ;
|
typedef ZCLinkPoint TypeLinkPoint ;
|
||||||
typedef ZCLinkRange TypeLinkRange ;
|
typedef ZCLinkRange TypeLinkRange ;
|
||||||
|
/*************************************************************************/
|
||||||
typedef ZCLink* IterEasy ; // 가장 쉽게 쓸 수 있는 반복자.
|
typedef ZCLink* IterEasy ; // 가장 쉽게 쓸 수 있는 반복자.
|
||||||
typedef TypeLinkPoint iterator ; // 다양한 기능을 가진 반복자.
|
typedef ZCLinkPoint iterator ; // 다양한 기능을 가진 반복자.
|
||||||
public:
|
/*************************************************************************/
|
||||||
typedef ZtCObjOpt<ZCLink > ZCLinkOpt;
|
typedef const TypeData TypeDataC ;
|
||||||
typedef ZtCObjOpt<TypeData> ZCDataOpt;
|
typedef const ZCLink TypeLinkC ;
|
||||||
|
typedef const iterator iteratorC ;
|
||||||
|
typedef const IterEasy IterEasyC ;
|
||||||
|
/*************************************************************************/
|
||||||
|
typedef ZtCObjOpt<ZCLink > ZCLinkOpt ;
|
||||||
|
typedef ZtCObjOpt<TypeData> ZCDataOpt ;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef ZNsType::ZtCTypeNowCRTP ///////////////////////////////////////
|
typedef ZNsType::ZtCTypeNowCRTP ///////////////////////////////////////
|
||||||
@ -5818,9 +5824,9 @@ namespace ZNsMain
|
|||||||
class ZCLinkPoint
|
class ZCLinkPoint
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
TypeLink* mp_CurrLink; // 사실상 mp_CurrLink!=0
|
mutable TypeLink* mp_CurrLink; // 사실상 mp_CurrLink!=0
|
||||||
TypeSize ml_CurrPos ;
|
mutable TypeSize ml_CurrPos ;
|
||||||
TypeList& mr_CurrList;
|
/*****/ TypeList& mr_CurrList;
|
||||||
public:
|
public:
|
||||||
ZCLinkPoint(TypeList& AR_TypeList) :
|
ZCLinkPoint(TypeList& AR_TypeList) :
|
||||||
mr_CurrList(AR_TypeList)
|
mr_CurrList(AR_TypeList)
|
||||||
@ -5851,7 +5857,10 @@ namespace ZNsMain
|
|||||||
|
|
||||||
ZCLinkPoint& operator= (const ZCLinkPoint& rhs){ return *this; }
|
ZCLinkPoint& operator= (const ZCLinkPoint& rhs){ return *this; }
|
||||||
|
|
||||||
ZCLinkPoint& operator++()
|
/***/ TypeData& operator*() {return **mp_CurrLink;}
|
||||||
|
const TypeData& operator*() const{return **mp_CurrLink;}
|
||||||
|
|
||||||
|
ZCLinkPoint& operator++() const
|
||||||
{
|
{
|
||||||
if(IsEmpty()){return *this;}
|
if(IsEmpty()){return *this;}
|
||||||
|
|
||||||
@ -5861,9 +5870,9 @@ namespace ZNsMain
|
|||||||
{ ml_CurrPos -= mr_CurrList.size(); }
|
{ ml_CurrPos -= mr_CurrList.size(); }
|
||||||
return *this; /*******************/
|
return *this; /*******************/
|
||||||
}/*
|
}/*
|
||||||
ZCLinkPoint& operator++()*/
|
ZCLinkPoint& operator++() const*/
|
||||||
|
|
||||||
ZCLinkPoint& operator--()
|
ZCLinkPoint& operator--() const
|
||||||
{
|
{
|
||||||
if(IsEmpty()){return *this;}
|
if(IsEmpty()){return *this;}
|
||||||
|
|
||||||
@ -5873,9 +5882,9 @@ namespace ZNsMain
|
|||||||
{ ml_CurrPos += mr_CurrList.size(); }
|
{ ml_CurrPos += mr_CurrList.size(); }
|
||||||
return *this;
|
return *this;
|
||||||
}/*
|
}/*
|
||||||
ZCLinkPoint& operator--()*/
|
ZCLinkPoint& operator--() const*/
|
||||||
|
|
||||||
ZCLinkPoint operator++(int)
|
ZCLinkPoint operator++(int) const
|
||||||
{
|
{
|
||||||
ZCLinkPoint VO_NowPoint(*this);
|
ZCLinkPoint VO_NowPoint(*this);
|
||||||
|
|
||||||
@ -5887,9 +5896,9 @@ namespace ZNsMain
|
|||||||
{ ml_CurrPos -= mr_CurrList.size(); }
|
{ ml_CurrPos -= mr_CurrList.size(); }
|
||||||
return VO_NowPoint; /*************/
|
return VO_NowPoint; /*************/
|
||||||
}/*
|
}/*
|
||||||
ZCLinkPoint operator++(int)*/
|
ZCLinkPoint operator++(int) const*/
|
||||||
|
|
||||||
ZCLinkPoint operator--(int)
|
ZCLinkPoint operator--(int) const
|
||||||
{
|
{
|
||||||
ZCLinkPoint VO_NowPoint(*this);
|
ZCLinkPoint VO_NowPoint(*this);
|
||||||
|
|
||||||
@ -5901,10 +5910,10 @@ namespace ZNsMain
|
|||||||
{ ml_CurrPos += mr_CurrList.size(); }
|
{ ml_CurrPos += mr_CurrList.size(); }
|
||||||
return VO_NowPoint;
|
return VO_NowPoint;
|
||||||
}/*
|
}/*
|
||||||
ZCLinkPoint operator--(int)*/
|
ZCLinkPoint operator--(int) const*/
|
||||||
|
|
||||||
|
|
||||||
ZCLinkPoint& operator+=(TypeSize AL_Distance)
|
ZCLinkPoint& operator+=(TypeSize AL_Distance) const
|
||||||
{
|
{
|
||||||
if(IsEmpty()){return *this;}
|
if(IsEmpty()){return *this;}
|
||||||
|
|
||||||
@ -5916,9 +5925,9 @@ namespace ZNsMain
|
|||||||
{ while(ml_CurrPos+= mr_CurrList.size()<1){} }
|
{ while(ml_CurrPos+= mr_CurrList.size()<1){} }
|
||||||
return *this; /**********************/
|
return *this; /**********************/
|
||||||
}/*
|
}/*
|
||||||
ZCLinkPoint& operator+=(TypeSize AL_Distance)*/
|
ZCLinkPoint& operator+=(TypeSize AL_Distance) const*/
|
||||||
|
|
||||||
ZCLinkPoint& operator-=(TypeSize AL_Distance)
|
ZCLinkPoint& operator-=(TypeSize AL_Distance) const
|
||||||
{
|
{
|
||||||
if(IsEmpty()){return *this;}
|
if(IsEmpty()){return *this;}
|
||||||
|
|
||||||
@ -5930,261 +5939,13 @@ namespace ZNsMain
|
|||||||
{ while(ml_CurrPos+= mr_CurrList.size()<1){} }
|
{ while(ml_CurrPos+= mr_CurrList.size()<1){} }
|
||||||
return *this; /***********************/
|
return *this; /***********************/
|
||||||
}/*
|
}/*
|
||||||
ZCLinkPoint& operator-=(TypeSize AL_Distance)*/
|
ZCLinkPoint& operator-=(TypeSize AL_Distance) const*/
|
||||||
|
|
||||||
|
|
||||||
ZCLinkPoint& MoveAfter(ZCLinkPoint& rhs, bool AB_Forward=true)
|
|
||||||
{
|
|
||||||
if(IsEmpty()){return *this;}
|
|
||||||
|
|
||||||
ZCLink* VP_HereLink = /////////////////
|
|
||||||
(
|
|
||||||
AB_Forward
|
|
||||||
? mp_CurrLink->mp_NextLink
|
|
||||||
: mp_CurrLink->mp_PrevLink
|
|
||||||
) ;
|
|
||||||
///////////////////////////////////////
|
|
||||||
|
|
||||||
if(&mr_CurrList!=&rhs.mr_CurrList)
|
|
||||||
{
|
|
||||||
mr_CurrList.SendOutAfter /********/
|
|
||||||
(
|
|
||||||
*mp_CurrLink ,
|
|
||||||
rhs.mr_CurrList ,
|
|
||||||
ZCLinkOpt(*rhs.mp_CurrLink)
|
|
||||||
);
|
|
||||||
/*********************************/
|
|
||||||
|
|
||||||
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
|
|
||||||
}/*
|
|
||||||
if(&mr_CurrList!=&rhs.mr_CurrList)*/
|
|
||||||
|
|
||||||
|
|
||||||
// &mr_CurrList == &rhs.mr_CurrList
|
|
||||||
|
|
||||||
else if(rhs.mp_CurrLink==mp_CurrLink)
|
|
||||||
{
|
|
||||||
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
|
|
||||||
}/*
|
|
||||||
else if(rhs.mp_CurrLink==mp_CurrLink)*/
|
|
||||||
|
|
||||||
else if(rhs.mp_CurrLink->mp_NextLink==mp_CurrLink)
|
|
||||||
{
|
|
||||||
// 이미 rhs 의 뒤에 *this 가 있는 경우.
|
|
||||||
|
|
||||||
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
|
|
||||||
}/*
|
|
||||||
else if(rhs.mp_CurrLink->mp_NextLink==mp_CurrLink)*/
|
|
||||||
|
|
||||||
else if(mp_CurrLink->mp_NextLink==rhs.mp_CurrLink)
|
|
||||||
{
|
|
||||||
// *this 뒤에 rhs 가 있어서 위치를 맞바꾸는 경우.
|
|
||||||
|
|
||||||
mr_CurrList.SwapLinkNext( *mp_CurrLink ) ;
|
|
||||||
|
|
||||||
if(--rhs.ml_CurrPos<1)
|
|
||||||
{ rhs.ml_CurrPos += rhs.mr_CurrList.size(); }
|
|
||||||
|
|
||||||
if(AB_Forward)
|
|
||||||
{
|
|
||||||
++ml_CurrPos; VP_HereLink = mp_CurrLink;
|
|
||||||
}
|
|
||||||
else{ --ml_CurrPos; }
|
|
||||||
}/*
|
|
||||||
else if(mp_CurrLink->mp_NextLink==rhs.mp_CurrLink)*/
|
|
||||||
|
|
||||||
else //////////////////////////////////////////
|
|
||||||
{
|
|
||||||
if(ml_CurrPos<rhs.ml_CurrPos)
|
|
||||||
{ --rhs.ml_CurrPos; }
|
|
||||||
|
|
||||||
mr_CurrList.SendOutAfter /****************/
|
|
||||||
(
|
|
||||||
*mp_CurrLink, mr_CurrList, ZCLinkOpt(*mp_CurrLink)
|
|
||||||
);
|
|
||||||
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
|
|
||||||
}
|
|
||||||
rhs.mp_CurrLink = VP_HereLink ; return *this ;
|
|
||||||
}/*
|
|
||||||
ZCLinkPoint& MoveAfter (ZCLinkPoint& rhs, bool AB_Forward=true)*/
|
|
||||||
|
|
||||||
ZCLinkPoint& MoveBefore(ZCLinkPoint& rhs, bool AB_Forward=true)
|
|
||||||
{
|
|
||||||
if(IsEmpty()){return *this;}
|
|
||||||
|
|
||||||
ZCLink* VP_HereLink = /////////////////
|
|
||||||
(
|
|
||||||
AB_Forward
|
|
||||||
? mp_CurrLink->mp_NextLink
|
|
||||||
: mp_CurrLink->mp_PrevLink
|
|
||||||
) ;
|
|
||||||
///////////////////////////////////////
|
|
||||||
|
|
||||||
if(&mr_CurrList!=&rhs.mr_CurrList)
|
|
||||||
{
|
|
||||||
mr_CurrList.SendOutBefore /*******/
|
|
||||||
(
|
|
||||||
*mp_CurrLink ,
|
|
||||||
rhs.mr_CurrList ,
|
|
||||||
ZCLinkOpt(*rhs.mp_CurrLink)
|
|
||||||
);
|
|
||||||
/*********************************/
|
|
||||||
|
|
||||||
if(!AB_Forward)
|
|
||||||
{ml_CurrPos = ml_CurrPos-1;}
|
|
||||||
|
|
||||||
++rhs.ml_CurrPos ;
|
|
||||||
}/*
|
|
||||||
if(&mr_CurrList!=&rhs.mr_CurrList)*/
|
|
||||||
|
|
||||||
|
|
||||||
// &mr_CurrList == &rhs.mr_CurrList
|
|
||||||
|
|
||||||
else if(rhs.mp_CurrLink==mp_CurrLink)
|
|
||||||
{
|
|
||||||
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
|
|
||||||
}/*
|
|
||||||
else if(rhs.mp_CurrLink==mp_CurrLink)*/
|
|
||||||
|
|
||||||
else if(rhs.mp_CurrLink->mp_PrevLink==mp_CurrLink)
|
|
||||||
{
|
|
||||||
// 이미 rhs 의 앞에 *this 가 있는 경우.
|
|
||||||
|
|
||||||
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
|
|
||||||
}/*
|
|
||||||
else if(rhs.mp_CurrLink->mp_PrevLink==mp_CurrLink)*/
|
|
||||||
|
|
||||||
else if(mp_CurrLink->mp_PrevLink==rhs.mp_CurrLink)
|
|
||||||
{
|
|
||||||
// *this 앞에 rhs 가 있어서 위치를 맞바꾸는 경우.
|
|
||||||
|
|
||||||
rhs.mr_CurrList.SwapLinkNext(*rhs.mp_CurrLink) ;
|
|
||||||
|
|
||||||
if(++rhs.ml_CurrPos>rhs.mr_CurrList.size())
|
|
||||||
{ rhs.ml_CurrPos -= rhs.mr_CurrList.size(); }
|
|
||||||
|
|
||||||
if(AB_Forward){ ++ml_CurrPos; } else
|
|
||||||
{ --ml_CurrPos; VP_HereLink = mp_CurrLink; }
|
|
||||||
}/*
|
|
||||||
else if(mp_CurrLink->mp_PrevLink==rhs.mp_CurrLink)*/
|
|
||||||
|
|
||||||
else //////////////////////////////////////////
|
|
||||||
{
|
|
||||||
if(ml_CurrPos>rhs.ml_CurrPos)
|
|
||||||
{ ++rhs.ml_CurrPos; }
|
|
||||||
|
|
||||||
mr_CurrList.SendOutBefore /***************/
|
|
||||||
(
|
|
||||||
*mp_CurrLink, mr_CurrList, ZCLinkOpt(*mp_CurrLink)
|
|
||||||
);
|
|
||||||
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
|
|
||||||
}
|
|
||||||
rhs.mp_CurrLink = VP_HereLink ; return *this ;
|
|
||||||
}/*
|
|
||||||
ZCLinkPoint& MoveBefore(ZCLinkPoint& rhs, bool AB_Forward=true)*/
|
|
||||||
|
|
||||||
|
|
||||||
ZCLinkPoint& MoveHead(TypeList& AR_RhsList, bool AB_Forward=true)
|
|
||||||
{
|
|
||||||
if(IsEmpty()){return *this;}
|
|
||||||
|
|
||||||
ZCLink* VP_HereLink = /////////////////
|
|
||||||
(
|
|
||||||
AB_Forward
|
|
||||||
? mp_CurrLink->mp_NextLink
|
|
||||||
: mp_CurrLink->mp_PrevLink
|
|
||||||
) ;
|
|
||||||
///////////////////////////////////////
|
|
||||||
|
|
||||||
if(&mr_CurrList!=&AR_RhsList)
|
|
||||||
{
|
|
||||||
mr_CurrList.SendOutAfter /********/
|
|
||||||
(
|
|
||||||
*mp_CurrLink, AR_RhsList, ZCLinkOpt(0)
|
|
||||||
);
|
|
||||||
/*********************************/
|
|
||||||
|
|
||||||
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
|
|
||||||
}/*
|
|
||||||
if(&mr_CurrList!=&rhs.mr_CurrList)*/
|
|
||||||
|
|
||||||
|
|
||||||
// &mr_CurrList == &rhs.mr_CurrList
|
|
||||||
|
|
||||||
else if(mr_CurrList.mp_HeadLink==mp_CurrLink)
|
|
||||||
{
|
|
||||||
// *this 가 이미 머리인 경우.
|
|
||||||
|
|
||||||
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
|
|
||||||
}/*
|
|
||||||
else if(rhs.mp_CurrLink->mp_NextLink==mp_CurrLink)*/
|
|
||||||
|
|
||||||
else //////////////////////////////////////////
|
|
||||||
{
|
|
||||||
mr_CurrList.SendOutAfter /****************/
|
|
||||||
(
|
|
||||||
*mp_CurrLink, mr_CurrList, ZCLinkOpt(*mp_CurrLink)
|
|
||||||
);
|
|
||||||
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
|
|
||||||
}
|
|
||||||
mp_CurrLink = VP_HereLink ; return *this ;
|
|
||||||
}/*
|
|
||||||
ZCLinkPoint& MoveHead(TypeList& AR_RhsList, bool AB_Forward=true)*/
|
|
||||||
|
|
||||||
|
|
||||||
ZCLinkPoint& MoveTail(TypeList& AR_RhsList, bool AB_Forward=true)
|
|
||||||
{
|
|
||||||
if(IsEmpty()){return *this;}
|
|
||||||
|
|
||||||
ZCLink* VP_HereLink = /////////////////
|
|
||||||
(
|
|
||||||
AB_Forward
|
|
||||||
? mp_CurrLink->mp_NextLink
|
|
||||||
: mp_CurrLink->mp_PrevLink
|
|
||||||
) ;
|
|
||||||
///////////////////////////////////////
|
|
||||||
|
|
||||||
if(&mr_CurrList!=&AR_RhsList)
|
|
||||||
{
|
|
||||||
mr_CurrList.SendOutBefore /*******/
|
|
||||||
(
|
|
||||||
*mp_CurrLink, AR_RhsList, ZCLinkOpt(0)
|
|
||||||
);
|
|
||||||
/*********************************/
|
|
||||||
|
|
||||||
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
|
|
||||||
}/*
|
|
||||||
if(&mr_CurrList!=&rhs.mr_CurrList)*/
|
|
||||||
|
|
||||||
|
|
||||||
// &mr_CurrList == &rhs.mr_CurrList
|
|
||||||
|
|
||||||
else if(AR_RhsList.mp_TailLink==mp_CurrLink)
|
|
||||||
{
|
|
||||||
// 이미 *this 가 꼬리인 경우.
|
|
||||||
|
|
||||||
if(AB_Forward){ml_CurrPos=1;}else{--ml_CurrPos;}
|
|
||||||
}/*
|
|
||||||
else if(AR_RhsList.mp_TailLink==mp_CurrLink)*/
|
|
||||||
|
|
||||||
else //////////////////////////////////////////
|
|
||||||
{
|
|
||||||
mr_CurrList.SendOutAfter /****************/
|
|
||||||
(
|
|
||||||
*mp_CurrLink, mr_CurrList, ZCLinkOpt(*mp_CurrLink)
|
|
||||||
);
|
|
||||||
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
|
|
||||||
}
|
|
||||||
mp_CurrLink = VP_HereLink ; return *this ;
|
|
||||||
}/*
|
|
||||||
ZCLinkPoint& MoveTail(TypeList& AR_RhsList, bool AB_Forward=true)*/
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
};/*
|
};/*
|
||||||
class ZCLinkPoint*/
|
class ZCLinkPoint*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public :
|
public :
|
||||||
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
|
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
|
||||||
private :
|
private :
|
||||||
@ -8419,103 +8180,109 @@ namespace ZNsMain
|
|||||||
IterEasyIDc GetHeadIterEasyIDc() const{return (IterEasyIDc)GetHeadLinkPtr();}
|
IterEasyIDc GetHeadIterEasyIDc() const{return (IterEasyIDc)GetHeadLinkPtr();}
|
||||||
IterEasyIDc GetTailIterEasyIDc() const{return (IterEasyIDc)GetTailLinkPtr();}
|
IterEasyIDc GetTailIterEasyIDc() const{return (IterEasyIDc)GetTailLinkPtr();}
|
||||||
|
|
||||||
void MoveNextIter(ZCLink*& APR_CLink ) const
|
void MoveNextIter(ZCLink* & APR_CLink ) const
|
||||||
{
|
{ APR_CLink=APR_CLink->GetNextPtr();
|
||||||
APR_CLink=APR_CLink->GetNextPtr();
|
|
||||||
}
|
}
|
||||||
void MoveNextIter(IterEasyID& ARRI_IterEasyID) const
|
void MoveNextIter(IterEasyID & ARRI_IterEasyID ) const
|
||||||
{
|
{ MoveNextIter((ZCLink*&)(ARRI_IterEasyID));
|
||||||
MoveNextIter((ZCLink*&)(ARRI_IterEasyID));
|
|
||||||
}
|
}
|
||||||
void MoveNextIter(const ZCLink*& APR_CLink ) const
|
void MoveNextIter(TypeLinkC* & APR_CLink ) const
|
||||||
{
|
{ APR_CLink=APR_CLink->GetNextPtr();
|
||||||
APR_CLink=APR_CLink->GetNextPtr();
|
|
||||||
}
|
}
|
||||||
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID) const
|
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID ) const
|
||||||
{
|
{ MoveNextIter((TypeLinkC*&)(ARRI_IterEasyID));
|
||||||
MoveNextIter((const ZCLink*&)(ARRI_IterEasyID));
|
|
||||||
}/*
|
|
||||||
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID) const*/
|
|
||||||
|
|
||||||
|
|
||||||
void MovePrevIter(ZCLink*& APR_CLink ) const
|
|
||||||
{
|
|
||||||
APR_CLink=APR_CLink->GetPrevPtr();
|
|
||||||
}
|
}
|
||||||
void MovePrevIter(IterEasyID& ARRI_IterEasyID) const
|
void MoveNextIter(iterator & ARR_Iterator ) const{++ARR_Iterator;}
|
||||||
{
|
void MoveNextIter(iteratorC & ARR_Iterator ) const{++ARR_Iterator;}
|
||||||
MovePrevIter((ZCLink*&)(ARRI_IterEasyID));
|
|
||||||
|
|
||||||
|
void MovePrevIter(ZCLink* & APR_CLink ) const
|
||||||
|
{ APR_CLink=APR_CLink->GetPrevPtr();
|
||||||
}
|
}
|
||||||
void MovePrevIter(const ZCLink*& APR_CLink ) const
|
void MovePrevIter(IterEasyID & ARRI_IterEasyID ) const
|
||||||
{
|
{ MovePrevIter((ZCLink*&)(ARRI_IterEasyID));
|
||||||
APR_CLink=APR_CLink->GetPrevPtr();
|
|
||||||
}
|
}
|
||||||
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID) const
|
void MovePrevIter(TypeLinkC* & APR_CLink ) const
|
||||||
{
|
{ APR_CLink=APR_CLink->GetPrevPtr();
|
||||||
MovePrevIter((const ZCLink*&)(ARRI_IterEasyID));
|
}
|
||||||
}/*
|
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID ) const
|
||||||
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID) const*/
|
{ MovePrevIter((TypeLinkC*&)(ARRI_IterEasyID));
|
||||||
|
}
|
||||||
|
void MovePrevIter(iterator & ARR_Iterator ) const{--ARR_Iterator;}
|
||||||
|
void MovePrevIter(iteratorC & ARR_Iterator ) const{--ARR_Iterator;}
|
||||||
|
|
||||||
|
|
||||||
TypeData& GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
|
TypeData & GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
|
||||||
TypeData& GetDataInIter(IterEasyID ARRI_IterEasyID)
|
TypeData & GetDataInIter(IterEasyID ARRI_IterEasyID )
|
||||||
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID); }
|
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID ); }
|
||||||
|
TypeData & GetDataInIter(iterator& ARR_Iterator ){return *ARR_Iterator;}
|
||||||
|
|
||||||
const TypeData& GetDataInIter(const ZCLink* AP_CLink ) const
|
TypeDataC& GetDataInIter(TypeLinkC* AP_CLink ) const
|
||||||
{ return **AP_CLink ; }
|
{ return **AP_CLink ;}
|
||||||
const TypeData& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const
|
TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID ) const
|
||||||
{ return GetDataInIter((const ZCLink*)ARRI_IterEasyID); }
|
{ return GetDataInIter((TypeLinkC*)ARRI_IterEasyID); }
|
||||||
|
TypeDataC& GetDataInIter(iteratorC& ARR_Iterator )
|
||||||
|
{ return *ARR_Iterator;}
|
||||||
|
|
||||||
|
|
||||||
TypeData& GetDataInIter( ZCLink* AP_CLink , TypeSize AI_FarNum)
|
TypeData & GetDataInIter( ZCLink* AP_CLink , TypeSize AI_FarNum)
|
||||||
{return **(AP_CLink->GetNextPrevPtr(AI_FarNum)) ; }
|
{return **(AP_CLink->GetNextPrevPtr(AI_FarNum)) ; }
|
||||||
TypeData& GetDataInIter( IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum)
|
TypeData & GetDataInIter( IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum)
|
||||||
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID, AI_FarNum); }
|
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID, AI_FarNum); }
|
||||||
|
|
||||||
const TypeData& GetDataInIter( const ZCLink* AP_CLink , TypeSize AI_FarNum) const
|
TypeDataC& GetDataInIter( TypeLinkC* AP_CLink , TypeSize AI_FarNum) const
|
||||||
{return **(AP_CLink->GetNextPrePtr(AI_FarNum)) ; }
|
{return **(AP_CLink->GetNextPrePtr(AI_FarNum)) ; }
|
||||||
const TypeData& GetDataInIter( IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const
|
TypeDataC& GetDataInIter( IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const
|
||||||
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID, AI_FarNum); }
|
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID, AI_FarNum); }
|
||||||
|
|
||||||
|
|
||||||
|
iterator begin() {return ZCLinkPoint(*this); }
|
||||||
|
iteratorC begin() const {return ZCLinkPoint(*this); }
|
||||||
|
|
||||||
IterEasy ItHEasy(){return GetHeadIterEasy ();}
|
|
||||||
IterEasy ItTEasy(){return GetTailIterEasy ();}
|
IterEasy ItHEasy() {return GetHeadIterEasy ();}
|
||||||
IterEasyID ItHID (){return GetHeadIterEasyID();}
|
IterEasy ItTEasy() {return GetTailIterEasy ();}
|
||||||
IterEasyID ItTID (){return GetTailIterEasyID();}
|
IterEasyID ItHID () {return GetHeadIterEasyID ();}
|
||||||
|
IterEasyID ItTID () {return GetTailIterEasyID ();}
|
||||||
|
|
||||||
IterEasyIDc ItHIDc () const{return GetHeadIterEasyIDc();}
|
IterEasyIDc ItHIDc () const{return GetHeadIterEasyIDc();}
|
||||||
IterEasyIDc ItTIDc () const{return GetTailIterEasyIDc();}
|
IterEasyIDc ItTIDc () const{return GetTailIterEasyIDc();}
|
||||||
|
|
||||||
const IterEasy ItHEasy() const{return GetHeadIterEasy ();}
|
IterEasyC ItHEasy() const{return GetHeadIterEasy ();}
|
||||||
const IterEasy ItTEasy() const{return GetTailIterEasy ();}
|
IterEasyC ItTEasy() const{return GetTailIterEasy ();}
|
||||||
const IterEasyID ItHID () const{return GetHeadIterEasyID ();}
|
IterEasyIDc ItHID () const{return GetHeadIterEasyID ();}
|
||||||
const IterEasyID ItTID () const{return GetTailIterEasyID ();}
|
IterEasyIDc ItTID () const{return GetTailIterEasyID ();}
|
||||||
|
|
||||||
void ItNext(ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
|
void ItNext(ZCLink* & APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
|
||||||
void ItNext(IterEasyID& ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));}
|
void ItNext(IterEasyID & ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));}
|
||||||
void ItNext(const ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
|
void ItNext(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
|
||||||
|
void ItNext(iterator & ARR_Iterator ) const{++ARR_Iterator;}
|
||||||
|
void ItNext(iteratorC & ARR_Iterator ) const{++ARR_Iterator;}
|
||||||
void ItNext(IterEasyIDc& ARRI_IterEasyID) const
|
void ItNext(IterEasyIDc& ARRI_IterEasyID) const
|
||||||
{ ItNext((const ZCLink*&)(ARRI_IterEasyID)); }
|
{ ItNext((TypeLinkC*&)(ARRI_IterEasyID)); }
|
||||||
|
|
||||||
void ItPrev(ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
void ItPrev(ZCLink* & APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
||||||
void ItPrev(IterEasyID& ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));}
|
void ItPrev(IterEasyID & ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));}
|
||||||
void ItPrev(const ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
void ItPrev(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
||||||
|
void ItPrev(iterator & ARR_Iterator ) const{--ARR_Iterator;}
|
||||||
|
void ItPrev(iteratorC & ARR_Iterator ) const{--ARR_Iterator;}
|
||||||
void ItPrev(IterEasyIDc& ARRI_IterEasyID) const
|
void ItPrev(IterEasyIDc& ARRI_IterEasyID) const
|
||||||
{ ItPrev((const ZCLink*&)(ARRI_IterEasyID)); }
|
{ ItPrev((TypeLinkC*&)(ARRI_IterEasyID)); }
|
||||||
|
|
||||||
TypeData& ItD(IterEasy AP_CLink ){return GetDataInIter(AP_CLink );}
|
TypeData & ItD(IterEasy AP_CLink ) {return GetDataInIter(AP_CLink );}
|
||||||
TypeData& ItD(IterEasyID ARRI_IterEasyID){return GetDataInIter(ARRI_IterEasyID);}
|
TypeData & ItD(IterEasyID ARRI_IterEasyID) {return GetDataInIter(ARRI_IterEasyID);}
|
||||||
|
TypeData & ItD(iterator & ARR_Iterator ) {return GetDataInIter(ARR_Iterator );}
|
||||||
|
|
||||||
const TypeData& ItD(const IterEasy AP_CLink ) const{return GetDataInIter(AP_CLink );}
|
TypeDataC& ItD(IterEasyC AP_CLink ) const {return GetDataInIter(AP_CLink );}
|
||||||
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID);}
|
TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID) const {return GetDataInIter(ARRI_IterEasyID);}
|
||||||
|
TypeDataC& ItD(iteratorC& ARR_Iterator ) const {return GetDataInIter(ARR_Iterator );}
|
||||||
|
|
||||||
|
|
||||||
TypeData& ItD(IterEasy AP_CLink , TypeSize AI_FarNum){return GetDataInIter(AP_CLink , AI_FarNum);}
|
TypeData & ItD(IterEasy AP_CLink , TypeSize AI_FarNum) {return GetDataInIter(AP_CLink , AI_FarNum);}
|
||||||
TypeData& ItD(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum){return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
TypeData & ItD(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) {return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
||||||
|
|
||||||
const TypeData& ItD(const IterEasy AP_CLink , TypeSize AI_FarNum) const{return GetDataInIter(AP_CLink , AI_FarNum);}
|
TypeDataC& ItD(IterEasyC AP_CLink , TypeSize AI_FarNum) const {return GetDataInIter(AP_CLink , AI_FarNum);}
|
||||||
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID , TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const {return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
||||||
|
|
||||||
public :
|
public :
|
||||||
};/*
|
};/*
|
||||||
|
@ -2139,7 +2139,7 @@ namespace ZNsMain
|
|||||||
TypeThis& MoveLinkTail(ZCLink& AR_MoveLink) ::::::::::::::::::::::*/
|
TypeThis& MoveLinkTail(ZCLink& AR_MoveLink) ::::::::::::::::::::::*/
|
||||||
|
|
||||||
|
|
||||||
ZtCBaseList& SendRangeIn ////////////////////////////////////////////////
|
TypeThis& SendRangeIn ///////////////////////////////////////////////////
|
||||||
(
|
(
|
||||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||||
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt, bool AB_After
|
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt, bool AB_After
|
||||||
@ -2151,7 +2151,7 @@ namespace ZNsMain
|
|||||||
if(AI_CutSize < 1 ){return *this;}
|
if(AI_CutSize < 1 ){return *this;}
|
||||||
if(AI_CutSize >= size()){return *this;}
|
if(AI_CutSize >= size()){return *this;}
|
||||||
|
|
||||||
ZtCBaseList VO_Saver; CutLinkRangeOut /***********/
|
TypeThis VO_Saver; CutLinkRangeOut /**************/
|
||||||
(
|
(
|
||||||
AR_CutHead , AR_CutTail , AI_CutSize,
|
AR_CutHead , AR_CutTail , AI_CutSize,
|
||||||
RR(VO_Saver), AO_LinkOpt.Raw(), AB_After
|
RR(VO_Saver), AO_LinkOpt.Raw(), AB_After
|
||||||
@ -2164,7 +2164,7 @@ namespace ZNsMain
|
|||||||
}
|
}
|
||||||
/*#####################################################################*/
|
/*#####################################################################*/
|
||||||
|
|
||||||
ZtCBaseList& SendRangeInAfter ///////////////////////////////////////////
|
TypeThis& SendRangeInAfter //////////////////////////////////////////////
|
||||||
(
|
(
|
||||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||||
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt
|
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt
|
||||||
@ -2175,7 +2175,7 @@ namespace ZNsMain
|
|||||||
( AR_CutHead, AR_CutTail, AI_CutSize, AO_LinkOpt, true );
|
( AR_CutHead, AR_CutTail, AI_CutSize, AO_LinkOpt, true );
|
||||||
}
|
}
|
||||||
/*#####################################################################*/
|
/*#####################################################################*/
|
||||||
ZtCBaseList& SendRangeInBefore //////////////////////////////////////////
|
TypeThis& SendRangeInBefore /////////////////////////////////////////////
|
||||||
(
|
(
|
||||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||||
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt
|
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt
|
||||||
@ -2187,7 +2187,7 @@ namespace ZNsMain
|
|||||||
}
|
}
|
||||||
/*#####################################################################*/
|
/*#####################################################################*/
|
||||||
|
|
||||||
ZtCBaseList& SendRangeInHead ////////////////////////////////////////////
|
TypeThis& SendRangeInHead ///////////////////////////////////////////////
|
||||||
(
|
(
|
||||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||||
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt
|
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt
|
||||||
@ -2198,7 +2198,7 @@ namespace ZNsMain
|
|||||||
( AR_CutHead, AR_CutTail, AI_CutSize, ZCLinkOpt(0), true );
|
( AR_CutHead, AR_CutTail, AI_CutSize, ZCLinkOpt(0), true );
|
||||||
}
|
}
|
||||||
/*#####################################################################*/
|
/*#####################################################################*/
|
||||||
ZtCBaseList& SendRangeInTail ////////////////////////////////////////////
|
TypeThis& SendRangeInTail ///////////////////////////////////////////////
|
||||||
(
|
(
|
||||||
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
ZCLink& AR_CutHead, ZCLink& AR_CutTail,
|
||||||
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt
|
TypeSize AI_CutSize, ZCLinkOpt AO_LinkOpt
|
||||||
|
@ -802,16 +802,22 @@ namespace ZNsMain
|
|||||||
typedef TTypCAlloc TypeAlloc ;
|
typedef TTypCAlloc TypeAlloc ;
|
||||||
typedef TTypeInit TypeInit ;
|
typedef TTypeInit TypeInit ;
|
||||||
typedef TTypSize TypeSize ;
|
typedef TTypSize TypeSize ;
|
||||||
typedef TMoveObj TypeMoveObj;
|
typedef TMoveObj TypeMoveObj ;
|
||||||
public:
|
public:
|
||||||
typedef ZtCObjList TypeThis ;
|
typedef ZtCObjList TypeThis ;
|
||||||
public:
|
public:
|
||||||
class ZCIterator;
|
class ZCLink; class ZCLinkPoint ;
|
||||||
class ZCLink ;
|
|
||||||
public:
|
public:
|
||||||
typedef ZCLink* IterEasy; // 가장 대표적으로 쓰일 수 있는 반복자.
|
typedef ZCLink TypeLink ;
|
||||||
typedef ZCIterator iterator;
|
typedef TypeThis TypeList ;
|
||||||
typedef const ZCIterator const_iterator;
|
public:
|
||||||
|
typedef ZCLink* IterEasy ; // 가장 대표적으로 쓰일 수 있는 반복자.
|
||||||
|
typedef ZCLinkPoint iterator ;
|
||||||
|
public:
|
||||||
|
typedef const IterEasy IterEasyC ;
|
||||||
|
typedef const TypeData TypeDataC ;
|
||||||
|
typedef const TypeLink TypeLinkC ;
|
||||||
|
typedef const iterator iteratorC ;
|
||||||
public:
|
public:
|
||||||
typedef typename TFeeeHeap::
|
typedef typename TFeeeHeap::
|
||||||
template ZtCBody<ZtCObjList> ZCFreeHeap;
|
template ZtCBody<ZtCObjList> ZCFreeHeap;
|
||||||
@ -1026,6 +1032,131 @@ namespace ZNsMain
|
|||||||
class ZCLink*/
|
class ZCLink*/
|
||||||
|
|
||||||
|
|
||||||
|
class ZCLinkPoint
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
mutable TypeLink* mp_CurrLink; // 사실상 mp_CurrLink!=0
|
||||||
|
mutable TypeSize ml_CurrPos ;
|
||||||
|
/*****/ TypeList& mr_CurrList;
|
||||||
|
public:
|
||||||
|
ZCLinkPoint(TypeList& AR_TypeList) :
|
||||||
|
mr_CurrList(AR_TypeList)
|
||||||
|
{
|
||||||
|
mp_CurrLink = AR_TypeList.HeadPtr();
|
||||||
|
ml_CurrPos = 1 ;
|
||||||
|
}
|
||||||
|
ZCLinkPoint(const ZCLinkPoint& rhs) :
|
||||||
|
mr_CurrList(rhs.mr_CurrList),
|
||||||
|
mp_CurrLink(rhs.mp_CurrLink),
|
||||||
|
ml_CurrPos (rhs.ml_CurrPos )
|
||||||
|
{}
|
||||||
|
public:
|
||||||
|
|
||||||
|
TypeList& GetList(){return mr_CurrList;}
|
||||||
|
TypeLink& GetLink(){return *mp_CurrLink;}
|
||||||
|
/***************************************************/
|
||||||
|
TypeSize GetPos () const{ return ml_CurrPos; }
|
||||||
|
/***************************************************/
|
||||||
|
|
||||||
|
const TypeList& GetList() const{return mr_CurrList;}
|
||||||
|
const TypeLink& GetLink() const{return *mp_CurrLink;}
|
||||||
|
|
||||||
|
|
||||||
|
bool IsValid() const{return mr_CurrList.size()>0;}
|
||||||
|
bool IsEmpty() const{return mr_CurrList.size()<1;}
|
||||||
|
|
||||||
|
|
||||||
|
ZCLinkPoint& operator= (const ZCLinkPoint& rhs){ return *this; }
|
||||||
|
|
||||||
|
TypeData & operator*() {return **mp_CurrLink;}
|
||||||
|
TypeDataC& operator*() const{return **mp_CurrLink;}
|
||||||
|
|
||||||
|
const ZCLinkPoint& operator++() const
|
||||||
|
{
|
||||||
|
if(IsEmpty()){*this;}
|
||||||
|
|
||||||
|
mp_CurrLink = mp_CurrLink->mp_NextLink ;
|
||||||
|
|
||||||
|
if(++ml_CurrPos>mr_CurrList.size())
|
||||||
|
{ ml_CurrPos -= mr_CurrList.size(); }
|
||||||
|
return *this; /*******************/
|
||||||
|
}/*
|
||||||
|
const ZCLinkPoint& operator++() const*/
|
||||||
|
|
||||||
|
const ZCLinkPoint& operator--() const
|
||||||
|
{
|
||||||
|
if(IsEmpty()){return *this;}
|
||||||
|
|
||||||
|
mp_CurrLink = mp_CurrLink->mp_PrevLink ;
|
||||||
|
|
||||||
|
if(--ml_CurrPos<1)
|
||||||
|
{ ml_CurrPos += mr_CurrList.size(); }
|
||||||
|
return *this;
|
||||||
|
}/*
|
||||||
|
const ZCLinkPoint& operator--() const*/
|
||||||
|
|
||||||
|
ZCLinkPoint operator++(int) const
|
||||||
|
{
|
||||||
|
ZCLinkPoint VO_NowPoint(*this);
|
||||||
|
|
||||||
|
if(IsEmpty()){return VO_NowPoint;}
|
||||||
|
|
||||||
|
mp_CurrLink = mp_CurrLink->mp_NextLink ;
|
||||||
|
|
||||||
|
if(++ml_CurrPos>mr_CurrList.size())
|
||||||
|
{ ml_CurrPos -= mr_CurrList.size(); }
|
||||||
|
return VO_NowPoint; /*************/
|
||||||
|
}/*
|
||||||
|
ZCLinkPoint operator++(int) const*/
|
||||||
|
|
||||||
|
ZCLinkPoint operator--(int) const
|
||||||
|
{
|
||||||
|
ZCLinkPoint VO_NowPoint(*this);
|
||||||
|
|
||||||
|
if(IsEmpty()){return VO_NowPoint;}
|
||||||
|
|
||||||
|
mp_CurrLink = mp_CurrLink->mp_PrevLink ;
|
||||||
|
|
||||||
|
if(--ml_CurrPos<1)
|
||||||
|
{ ml_CurrPos += mr_CurrList.size(); }
|
||||||
|
return VO_NowPoint;
|
||||||
|
}/*
|
||||||
|
ZCLinkPoint operator--(int) const*/
|
||||||
|
|
||||||
|
|
||||||
|
const ZCLinkPoint& operator+=(TypeSize AL_Distance) const
|
||||||
|
{
|
||||||
|
if(IsEmpty()){return *this;}
|
||||||
|
|
||||||
|
mp_CurrLink = &((*mp_CurrLink)+AL_Distance) ;
|
||||||
|
|
||||||
|
if(ml_CurrPos+=AL_Distance > mr_CurrList.size())
|
||||||
|
{ ml_CurrPos %= mr_CurrList.size(); }
|
||||||
|
else if(ml_CurrPos<1) // AL_Distance<0
|
||||||
|
{ while(ml_CurrPos+= mr_CurrList.size()<1){} }
|
||||||
|
return *this; /**********************/
|
||||||
|
}/*
|
||||||
|
const ZCLinkPoint& operator+=(TypeSize AL_Distance) const*/
|
||||||
|
|
||||||
|
const ZCLinkPoint& operator-=(TypeSize AL_Distance) const
|
||||||
|
{
|
||||||
|
if(IsEmpty()){return *this;}
|
||||||
|
|
||||||
|
mp_CurrLink = &((*mp_CurrLink)-AL_Distance);
|
||||||
|
|
||||||
|
if(ml_CurrPos-=AL_Distance > mr_CurrList.size())
|
||||||
|
{ ml_CurrPos %= mr_CurrList.size(); }
|
||||||
|
else if(ml_CurrPos<1) // AL_Distance>=0
|
||||||
|
{ while(ml_CurrPos+= mr_CurrList.size()<1){} }
|
||||||
|
return *this; /***********************/
|
||||||
|
}/*
|
||||||
|
const ZCLinkPoint& operator-=(TypeSize AL_Distance) const*/
|
||||||
|
|
||||||
|
public:
|
||||||
|
};/*
|
||||||
|
class ZCLinkPoint*/
|
||||||
|
|
||||||
|
|
||||||
public :
|
public :
|
||||||
/******************************************************************/
|
/******************************************************************/
|
||||||
protected:
|
protected:
|
||||||
@ -2646,64 +2777,62 @@ namespace ZNsMain
|
|||||||
IterEasyIDc GetTailIterEasyIDc() const{return (IterEasyIDc)GetTailLinkPtr();}
|
IterEasyIDc GetTailIterEasyIDc() const{return (IterEasyIDc)GetTailLinkPtr();}
|
||||||
|
|
||||||
void MoveNextIter(ZCLink*& APR_CLink ) const
|
void MoveNextIter(ZCLink*& APR_CLink ) const
|
||||||
{
|
{ APR_CLink=APR_CLink->GetNextPtr();
|
||||||
APR_CLink=APR_CLink->GetNextPtr();
|
|
||||||
}
|
}
|
||||||
void MoveNextIter(IterEasyID& ARRI_IterEasyID) const
|
void MoveNextIter(IterEasyID& ARRI_IterEasyID ) const
|
||||||
{
|
{ MoveNextIter((ZCLink*&)(ARRI_IterEasyID));
|
||||||
MoveNextIter((ZCLink*&)(ARRI_IterEasyID));
|
|
||||||
}
|
}
|
||||||
void MoveNextIter(const ZCLink*& APR_CLink ) const
|
void MoveNextIter(TypeLinkC*& APR_CLink ) const
|
||||||
{
|
{ APR_CLink=APR_CLink->GetNextPtr();
|
||||||
APR_CLink=APR_CLink->GetNextPtr();
|
|
||||||
}
|
}
|
||||||
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID) const
|
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID ) const
|
||||||
{
|
{ MoveNextIter((TypeLinkC*&)(ARRI_IterEasyID));
|
||||||
MoveNextIter((const ZCLink*&)(ARRI_IterEasyID));
|
}
|
||||||
}/*
|
void MoveNextIter(iterator& ARR_Iterator ) const{++ARR_Iterator;}
|
||||||
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID) const*/
|
void MoveNextIter(iteratorC& ARR_Iterator ) const{++ARR_Iterator;}
|
||||||
|
|
||||||
|
|
||||||
void MovePrevIter(ZCLink*& APR_CLink ) const
|
void MovePrevIter(ZCLink*& APR_CLink ) const
|
||||||
{
|
{ APR_CLink=APR_CLink->GetPrevPtr();
|
||||||
APR_CLink=APR_CLink->GetPrevPtr();
|
|
||||||
}
|
}
|
||||||
void MovePrevIter(IterEasyID& ARRI_IterEasyID) const
|
void MovePrevIter(IterEasyID& ARRI_IterEasyID) const
|
||||||
{
|
{ MovePrevIter((ZCLink*&)(ARRI_IterEasyID));
|
||||||
MovePrevIter((ZCLink*&)(ARRI_IterEasyID));
|
|
||||||
}
|
}
|
||||||
void MovePrevIter(const ZCLink*& APR_CLink ) const
|
void MovePrevIter(TypeLinkC*& APR_CLink ) const
|
||||||
{
|
{ APR_CLink=APR_CLink->GetPrevPtr();
|
||||||
APR_CLink=APR_CLink->GetPrevPtr();
|
|
||||||
}
|
}
|
||||||
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID) const
|
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID) const
|
||||||
{
|
{ MovePrevIter((TypeLinkC*&)(ARRI_IterEasyID));
|
||||||
MovePrevIter((const ZCLink*&)(ARRI_IterEasyID));
|
}
|
||||||
}/*
|
void MovePrevIter(iterator& ARR_Iterator ) const{--ARR_Iterator;}
|
||||||
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID) const*/
|
void MovePrevIter(iteratorC& ARR_Iterator ) const{--ARR_Iterator;}
|
||||||
|
|
||||||
|
|
||||||
TypeData& GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
|
TypeData & GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
|
||||||
TypeData& GetDataInIter(IterEasyID ARRI_IterEasyID)
|
TypeData & GetDataInIter(iterator AR_Iterator ){return *AR_Iterator;}
|
||||||
|
TypeData & GetDataInIter(IterEasyID ARRI_IterEasyID)
|
||||||
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID); }
|
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID); }
|
||||||
|
|
||||||
const TypeData& GetDataInIter(const ZCLink* AP_CLink ) const
|
TypeDataC& GetDataInIter(TypeLinkC* AP_CLink ) const
|
||||||
{ return **AP_CLink ; }
|
{ return **AP_CLink ; }
|
||||||
const TypeData& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const
|
TypeDataC& GetDataInIter(iteratorC AR_Iterator ) const{return *AR_Iterator;}
|
||||||
{ return GetDataInIter((const ZCLink*)ARRI_IterEasyID); }
|
TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const
|
||||||
|
{ return GetDataInIter((TypeLinkC*)ARRI_IterEasyID); }
|
||||||
|
|
||||||
|
|
||||||
TypeData& GetDataInIter( ZCLink* AP_CLink , TypeSize AI_FarNum)
|
TypeData& GetDataInIter(TypeLink* AP_CLink , TypeSize AI_FarNum)
|
||||||
{return **(AP_CLink->GetNextPrevPtr(AI_FarNum)) ; }
|
{return **(AP_CLink->GetNextPrevPtr(AI_FarNum)) ; }
|
||||||
TypeData& GetDataInIter( IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum)
|
TypeData& GetDataInIter(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum)
|
||||||
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID, AI_FarNum); }
|
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID , AI_FarNum); }
|
||||||
|
|
||||||
const TypeData& GetDataInIter( const ZCLink* AP_CLink , TypeSize AI_FarNum) const
|
TypeDataC& GetDataInIter(TypeLinkC* AP_CLink , TypeSize AI_FarNum) const
|
||||||
{return **(AP_CLink->GetNextPrePtr(AI_FarNum)) ; }
|
{return **(AP_CLink->GetNextPrePtr(AI_FarNum)) ; }
|
||||||
const TypeData& GetDataInIter( IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const
|
TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const
|
||||||
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID, AI_FarNum); }
|
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID , AI_FarNum); }
|
||||||
|
|
||||||
|
|
||||||
|
iterator begin() { return ZCLinkPoint(*this); }
|
||||||
|
iteratorC begin() const{ return ZCLinkPoint(*this); }
|
||||||
|
|
||||||
|
|
||||||
IterEasy ItHEasy(){return GetHeadIterEasy ();}
|
IterEasy ItHEasy(){return GetHeadIterEasy ();}
|
||||||
IterEasy ItTEasy(){return GetTailIterEasy ();}
|
IterEasy ItTEasy(){return GetTailIterEasy ();}
|
||||||
@ -2713,35 +2842,41 @@ namespace ZNsMain
|
|||||||
IterEasyIDc ItHIDc () const{return GetHeadIterEasyIDc();}
|
IterEasyIDc ItHIDc () const{return GetHeadIterEasyIDc();}
|
||||||
IterEasyIDc ItTIDc () const{return GetTailIterEasyIDc();}
|
IterEasyIDc ItTIDc () const{return GetTailIterEasyIDc();}
|
||||||
|
|
||||||
const IterEasy ItHEasy() const{return GetHeadIterEasy ();}
|
IterEasyC ItHEasy() const{return GetHeadIterEasy ();}
|
||||||
const IterEasy ItTEasy() const{return GetTailIterEasy ();}
|
IterEasyC ItTEasy() const{return GetTailIterEasy ();}
|
||||||
const IterEasyID ItHID () const{return GetHeadIterEasyID ();}
|
IterEasyIDc ItHID () const{return GetHeadIterEasyID ();}
|
||||||
const IterEasyID ItTID () const{return GetTailIterEasyID ();}
|
IterEasyIDc ItTID () const{return GetTailIterEasyID ();}
|
||||||
|
|
||||||
void ItNext(ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
|
void ItNext(TypeLink* & APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
|
||||||
void ItNext(IterEasyID& ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));}
|
void ItNext(iterator & ARR_Iterator ) const{++ARR_Iterator;}
|
||||||
void ItNext(const ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
|
void ItNext(IterEasyID & ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));}
|
||||||
|
void ItNext(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
|
||||||
|
void ItNext(iteratorC & ARR_Iterator ) const{++ARR_Iterator;}
|
||||||
void ItNext(IterEasyIDc& ARRI_IterEasyID) const
|
void ItNext(IterEasyIDc& ARRI_IterEasyID) const
|
||||||
{ ItNext((const ZCLink*&)(ARRI_IterEasyID)); }
|
{ ItNext((TypeLinkC*&)(ARRI_IterEasyID)); }
|
||||||
|
|
||||||
void ItPrev(ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
void ItPrev(ZCLink* & APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
||||||
void ItPrev(IterEasyID& ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));}
|
void ItPrev(iterator & ARR_Iterator ) const{--ARR_Iterator;}
|
||||||
void ItPrev(const ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
void ItPrev(IterEasyID & ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));}
|
||||||
|
void ItPrev(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
||||||
|
void ItPrev(iteratorC & ARR_Iterator ) const{--ARR_Iterator;}
|
||||||
void ItPrev(IterEasyIDc& ARRI_IterEasyID) const
|
void ItPrev(IterEasyIDc& ARRI_IterEasyID) const
|
||||||
{ ItPrev((const ZCLink*&)(ARRI_IterEasyID)); }
|
{ ItPrev((TypeLinkC*&)(ARRI_IterEasyID)); }
|
||||||
|
|
||||||
TypeData& ItD(IterEasy AP_CLink ){return GetDataInIter(AP_CLink );}
|
TypeData & ItD(IterEasy AP_CLink ) {return GetDataInIter(AP_CLink );}
|
||||||
TypeData& ItD(IterEasyID ARRI_IterEasyID){return GetDataInIter(ARRI_IterEasyID);}
|
TypeData & ItD(IterEasyID ARRI_IterEasyID) {return GetDataInIter(ARRI_IterEasyID);}
|
||||||
|
TypeData & ItD(iterator ARR_Iterator ) {return GetDataInIter(ARR_Iterator );}
|
||||||
|
|
||||||
const TypeData& ItD(const IterEasy AP_CLink ) const{return GetDataInIter(AP_CLink );}
|
TypeDataC& ItD(IterEasyC AP_CLink ) const{return GetDataInIter(AP_CLink );}
|
||||||
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID);}
|
TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID);}
|
||||||
|
TypeDataC& ItD(iteratorC ARR_Iterator ) const{return GetDataInIter(ARR_Iterator );}
|
||||||
|
|
||||||
|
|
||||||
TypeData& ItD(IterEasy AP_CLink , TypeSize AI_FarNum){return GetDataInIter(AP_CLink , AI_FarNum);}
|
TypeData & ItD(IterEasy AP_CLink , TypeSize AI_FarNum){return GetDataInIter(AP_CLink , AI_FarNum);}
|
||||||
TypeData& ItD(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum){return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
TypeData & ItD(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum){return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
||||||
|
|
||||||
const TypeData& ItD(const IterEasy AP_CLink , TypeSize AI_FarNum) const{return GetDataInIter(AP_CLink , AI_FarNum);}
|
TypeDataC& ItD(IterEasyC AP_CLink , TypeSize AI_FarNum) const{return GetDataInIter(AP_CLink , AI_FarNum);}
|
||||||
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID , TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID , TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -7175,7 +7175,9 @@ namespace ZNsMain
|
|||||||
typedef ZtCStringBase
|
typedef ZtCStringBase
|
||||||
<TTypCh, TAlloc, TAllocSize, TTypeString> ZCStringBase;
|
<TTypCh, TAlloc, TAllocSize, TTypeString> ZCStringBase;
|
||||||
typedef typename ZCStringBase::ZCStringList ZCStringList;
|
typedef typename ZCStringBase::ZCStringList ZCStringList;
|
||||||
|
typedef typename ZCStringBase::ZCCharView ZCCharView ;
|
||||||
typedef typename ZCStringBase::TypeLength TypeLength ;
|
typedef typename ZCStringBase::TypeLength TypeLength ;
|
||||||
|
typedef typename ZCStringBase::TypeLength TypeSize ;
|
||||||
protected:
|
protected:
|
||||||
typedef ZtCStringEx ZCStringEx ;
|
typedef ZtCStringEx ZCStringEx ;
|
||||||
protected:
|
protected:
|
||||||
@ -7219,6 +7221,13 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
ZtCStringEx(const TypeChar* APC_Data)*/
|
ZtCStringEx(const TypeChar* APC_Data)*/
|
||||||
|
|
||||||
|
ZtCStringEx(const ZCCharView& AR_View) : TypeBase(AR_View)
|
||||||
|
{
|
||||||
|
ml_ListBuffAllByte=0;
|
||||||
|
}/*
|
||||||
|
ZtCStringEx(const ZCCharView& AR_View)*/
|
||||||
|
|
||||||
|
|
||||||
ZCStringEx& operator=(const ZtCStringEx& rhs)
|
ZCStringEx& operator=(const ZtCStringEx& rhs)
|
||||||
{
|
{
|
||||||
if(this==&rhs) return *this;
|
if(this==&rhs) return *this;
|
||||||
|
@ -674,7 +674,7 @@ namespace ZNsMain
|
|||||||
TypeSize VL_DataCnt= mo_CDataList .size();
|
TypeSize VL_DataCnt= mo_CDataList .size();
|
||||||
TypeSize VL_NodeCnt=((ZCNodeList&)mo_CNodeList).size();
|
TypeSize VL_NodeCnt=((ZCNodeList&)mo_CNodeList).size();
|
||||||
|
|
||||||
IterOfData VO_iter_Data( mo_CDataList.begin());
|
IterOfData VO_iter_Data( mo_CDataList .begin());
|
||||||
IterOfNode VO_iter_Node(((ZCNodeList&)mo_CNodeList).begin());
|
IterOfNode VO_iter_Node(((ZCNodeList&)mo_CNodeList).begin());
|
||||||
|
|
||||||
if(AR_CViewClass.OnDataStart(AI_StartDepth)==ZNsMain::ZNsEnum::ZERun_NO)
|
if(AR_CViewClass.OnDataStart(AI_StartDepth)==ZNsMain::ZNsEnum::ZERun_NO)
|
||||||
|
Reference in New Issue
Block a user