commit 2025-10-13 10:55 add ZCLinkPointEx ZCppMain/ZtCObjList.H
This commit is contained in:
@ -5681,6 +5681,7 @@ namespace ZNsMain
|
||||
typedef TMoveObj TypeMoveObj ;
|
||||
typedef ZCLink TypeLink ;
|
||||
typedef ZCLinkPoint TypeLinkPoint ;
|
||||
typedef ZCLinkPoint TypeIter ;
|
||||
typedef ZCLinkRange TypeLinkRange ;
|
||||
/*************************************************************************/
|
||||
typedef ZCLink* IterEasy ; // 가장 쉽게 쓸 수 있는 반복자.
|
||||
@ -5695,6 +5696,7 @@ namespace ZNsMain
|
||||
typedef const TypeThis TypeThisC ;
|
||||
typedef const TypeList TypeListC ;
|
||||
typedef const TypeData TypeDataC ;
|
||||
typedef const TypeIter TypeIterC ;
|
||||
typedef const ZCLink TypeLinkC ;
|
||||
typedef const ZCLink ZCLinkC ;
|
||||
typedef const ZCLinkOpt ZCLinkOptC ;
|
||||
@ -5799,26 +5801,26 @@ namespace ZNsMain
|
||||
const ZCLink* GetNextPrevPtr(TypeSize AL_FarNum) const*/
|
||||
|
||||
|
||||
operator TypeData& (){return mo_DataObjt;}
|
||||
operator TypeData (){return mo_DataObjt;}
|
||||
TypeData& GetData (){return mo_DataObjt;}
|
||||
TypeData& operator* (){return mo_DataObjt;}
|
||||
TypeData& operator()(){return mo_DataObjt;}
|
||||
operator TypeData& () {return mo_DataObjt;}
|
||||
operator TypeData () {return mo_DataObjt;}
|
||||
TypeData & GetData () {return mo_DataObjt;}
|
||||
TypeData & operator* () {return mo_DataObjt;}
|
||||
TypeData & operator()() {return mo_DataObjt;}
|
||||
|
||||
operator const TypeData& () const{return mo_DataObjt;}
|
||||
const TypeData& GetData () const{return mo_DataObjt;}
|
||||
const TypeData& operator* () const{return mo_DataObjt;}
|
||||
const TypeData& operator()() const{return mo_DataObjt;}
|
||||
operator TypeDataC&() const{return mo_DataObjt;}
|
||||
TypeDataC& GetData () const{return mo_DataObjt;}
|
||||
TypeDataC& operator* () const{return mo_DataObjt;}
|
||||
TypeDataC& operator()() const{return mo_DataObjt;}
|
||||
|
||||
|
||||
ZCLink& operator+(TypeSize AL_Distance)
|
||||
ZCLink & operator+(TypeSize AL_Distance)
|
||||
{ return *GetNextPrevPtr( AL_Distance); }
|
||||
ZCLink& operator-(TypeSize AL_Distance)
|
||||
ZCLink & operator-(TypeSize AL_Distance)
|
||||
{ return *GetNextPrevPtr(-AL_Distance); }
|
||||
|
||||
const ZCLink& operator+(TypeSize AL_Distance) const
|
||||
ZCLinkC& operator+(TypeSize AL_Distance) const
|
||||
{ return *GetNextPrevPtr( AL_Distance); }
|
||||
const ZCLink& operator-(TypeSize AL_Distance) const
|
||||
ZCLinkC& operator-(TypeSize AL_Distance) const
|
||||
{ return *GetNextPrevPtr(-AL_Distance); }
|
||||
|
||||
public:
|
||||
@ -5845,12 +5847,35 @@ namespace ZNsMain
|
||||
mp_CurrLink(rhs.mp_CurrLink),
|
||||
ml_CurrPos (rhs.ml_CurrPos )
|
||||
{}
|
||||
public:
|
||||
public :
|
||||
|
||||
static ZCLinkPoint MakeTailPoint(TypeList& AR_TypeList)
|
||||
{
|
||||
ZCLinkPoint VO_ZCLinkPoint(AR_TypeList);
|
||||
|
||||
VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink;
|
||||
VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize;
|
||||
|
||||
return VO_ZCLinkPoint; /****************************/
|
||||
}/*
|
||||
static ZCLinkPoint MakeTailPoint(TypeList& AR_TypeList)*/
|
||||
static ZCLinkPoint MakeTailPoint(TypeIterC& AR_TypeIter)
|
||||
{
|
||||
ZCLinkPoint VO_ZCLinkPoint(AR_TypeIter);
|
||||
|
||||
VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
|
||||
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
|
||||
|
||||
return VO_ZCLinkPoint; /****************************/
|
||||
}/*
|
||||
static ZCLinkPoint MakeTailPoint(TypeIterC& AR_TypeIter)*/
|
||||
|
||||
public :
|
||||
|
||||
TypeList & GetList() {return mr_CurrList;}
|
||||
TypeLink & GetLink() {return *mp_CurrLink;}
|
||||
|
||||
TypeThisC& GetList() const{return mr_CurrList;}
|
||||
TypeListC& GetList() const{return mr_CurrList;}
|
||||
TypeLinkC& GetLink() const{return *mp_CurrLink;}
|
||||
/***************************************************/
|
||||
TypeSize GetPos () const{return ml_CurrPos ;}
|
||||
@ -5874,27 +5899,46 @@ namespace ZNsMain
|
||||
operator TypeLinkC& () const{return *mp_CurrLink;}
|
||||
|
||||
|
||||
bool operator == (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos == rhs.ml_CurrPos; }
|
||||
bool operator != (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos != rhs.ml_CurrPos; }
|
||||
bool operator > (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos > rhs.ml_CurrPos; }
|
||||
bool operator >= (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos >= rhs.ml_CurrPos; }
|
||||
bool operator < (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos < rhs.ml_CurrPos; }
|
||||
bool operator <= (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos <= rhs.ml_CurrPos; }
|
||||
|
||||
bool operator == (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos == AL_Size; }
|
||||
bool operator != (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos != AL_Size; }
|
||||
bool operator > (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos > AL_Size; }
|
||||
bool operator >= (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos >= AL_Size; }
|
||||
bool operator < (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos < AL_Size; }
|
||||
bool operator <= (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos <= AL_Size; }
|
||||
|
||||
|
||||
const ZCLinkPoint& operator++() const
|
||||
{
|
||||
if(IsEmpty()){return *this;}
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink;
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink ;
|
||||
|
||||
if(++ml_CurrPos>mr_CurrList.size())
|
||||
{ ml_CurrPos -= mr_CurrList.size(); }
|
||||
return *this; /*******************/
|
||||
++ml_CurrPos; return *this ;
|
||||
}/*
|
||||
const ZCLinkPoint& operator++() const*/
|
||||
|
||||
const ZCLinkPoint& operator--() const
|
||||
{
|
||||
if(IsEmpty()){return *this;}
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink;
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink ;
|
||||
|
||||
if(--ml_CurrPos<1)
|
||||
{ ml_CurrPos += mr_CurrList.size(); }
|
||||
return *this;
|
||||
--ml_CurrPos; return *this ;
|
||||
}/*
|
||||
const ZCLinkPoint& operator--() const*/
|
||||
|
||||
@ -5902,13 +5946,9 @@ namespace ZNsMain
|
||||
{
|
||||
ZCLinkPoint VO_NowPoint(*this);
|
||||
|
||||
if(IsEmpty()){return VO_NowPoint;}
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink;
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink ;
|
||||
|
||||
if(++ml_CurrPos>mr_CurrList.size())
|
||||
{ ml_CurrPos -= mr_CurrList.size(); }
|
||||
return VO_NowPoint; /*************/
|
||||
++ml_CurrPos ; return VO_NowPoint ;
|
||||
}/*
|
||||
ZCLinkPoint operator++(int) const*/
|
||||
|
||||
@ -5916,13 +5956,9 @@ namespace ZNsMain
|
||||
{
|
||||
ZCLinkPoint VO_NowPoint(*this);
|
||||
|
||||
if(IsEmpty()){return VO_NowPoint;}
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink;
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink ;
|
||||
|
||||
if(--ml_CurrPos<1)
|
||||
{ ml_CurrPos += mr_CurrList.size(); }
|
||||
return VO_NowPoint;
|
||||
--ml_CurrPos; return VO_NowPoint ;
|
||||
}/*
|
||||
ZCLinkPoint operator--(int) const*/
|
||||
|
||||
@ -5932,26 +5968,18 @@ namespace ZNsMain
|
||||
if(IsEmpty()){return *this;}
|
||||
|
||||
mp_CurrLink = &((*mp_CurrLink)+AL_Distance) ;
|
||||
ml_CurrPos += 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; /**********************/
|
||||
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);
|
||||
ml_CurrPos -= 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; /***********************/
|
||||
return *this; /*::::::::::::::::::::::::::*/
|
||||
}/*
|
||||
const ZCLinkPoint& operator-=(TypeSize AL_Distance) const*/
|
||||
|
||||
@ -5960,6 +5988,117 @@ namespace ZNsMain
|
||||
class ZCLinkPoint*/
|
||||
|
||||
|
||||
class ZCLinkPointEx : public ZCLinkPoint
|
||||
{
|
||||
public:
|
||||
ZCLinkPointEx(TypeList& AR_TypeList): ZCLinkPoint(AR_TypeList){}
|
||||
ZCLinkPointEx(const ZCLinkPoint& rhs): ZCLinkPoint(rhs ){}
|
||||
ZCLinkPointEx(const ZCLinkPointEx& rhs): ZCLinkPoint(rhs ){}
|
||||
public:
|
||||
|
||||
static ZCLinkPointEx MakeTailPoint(const ZCLinkPointEx& AR_TypeIter)
|
||||
{
|
||||
ZCLinkPointEx VO_ZCLinkPoint(AR_TypeIter);
|
||||
|
||||
if(!AR_TypeIter.IsEmpty()) /****************************/
|
||||
{
|
||||
VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
|
||||
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
|
||||
}
|
||||
return VO_ZCLinkPoint; /********************************/
|
||||
}/*
|
||||
static ZCLinkPointEx MakeTailPoint(const ZCLinkPointEx& AR_TypeIter)*/
|
||||
|
||||
public:
|
||||
|
||||
ZCLinkPointEx& operator= (const ZCLinkPointEx& rhs){ return *this; }
|
||||
|
||||
const ZCLinkPointEx& operator++() const
|
||||
{
|
||||
if(this->IsEmpty()){return *this;}
|
||||
|
||||
this->mp_CurrLink = this->mp_CurrLink->mp_NextLink ;
|
||||
|
||||
if(++this->ml_CurrPos>this->mr_CurrList.size())
|
||||
{ this->ml_CurrPos -= this->mr_CurrList.size(); }
|
||||
return *this; /*******************************/
|
||||
}/*
|
||||
const ZCLinkPointEx& operator++() const*/
|
||||
|
||||
const ZCLinkPointEx& operator--() const
|
||||
{
|
||||
if(this->IsEmpty()){return *this;}
|
||||
|
||||
this->mp_CurrLink = this->mp_CurrLink->mp_PrevLink ;
|
||||
|
||||
if(--this->ml_CurrPos<1)
|
||||
{ this->ml_CurrPos += this->mr_CurrList.size(); }
|
||||
return *this; /********/
|
||||
}/*
|
||||
const ZCLinkPointEx& operator--() const*/
|
||||
|
||||
ZCLinkPointEx operator++(int) const
|
||||
{
|
||||
ZCLinkPointEx VO_NowPoint(*this);
|
||||
|
||||
if(this->IsEmpty()){return VO_NowPoint;}
|
||||
|
||||
this->mp_CurrLink = this->mp_CurrLink->mp_NextLink ;
|
||||
|
||||
if(++this->ml_CurrPos>this->mr_CurrList.size())
|
||||
{ this->ml_CurrPos -= this->mr_CurrList.size(); }
|
||||
return VO_NowPoint; /*************************/
|
||||
}/*
|
||||
ZCLinkPointEx operator++(int) const*/
|
||||
|
||||
ZCLinkPointEx operator--(int) const
|
||||
{
|
||||
ZCLinkPointEx VO_NowPoint(*this);
|
||||
|
||||
if(this->IsEmpty()){return VO_NowPoint;}
|
||||
|
||||
this->mp_CurrLink = this->mp_CurrLink->mp_PrevLink ;
|
||||
|
||||
if(--this->ml_CurrPos<1)
|
||||
{ this->ml_CurrPos += this->mr_CurrList.size(); }
|
||||
return VO_NowPoint;
|
||||
}/*
|
||||
ZCLinkPointEx operator--(int) const*/
|
||||
|
||||
|
||||
const ZCLinkPointEx& operator+=(TypeSize AL_Distance) const
|
||||
{
|
||||
if(this->IsEmpty()){return *this;}
|
||||
|
||||
this->mp_CurrLink = &((*this->mp_CurrLink)+AL_Distance) ;
|
||||
|
||||
if(this->ml_CurrPos+=AL_Distance > this->mr_CurrList.size())
|
||||
{ this->ml_CurrPos %= this->mr_CurrList.size(); }
|
||||
else if(this->ml_CurrPos<1) // AL_Distance<0
|
||||
{ while(this->ml_CurrPos+= this->mr_CurrList.size()<1){} }
|
||||
return *this; /****************************/
|
||||
}/*
|
||||
const ZCLinkPointEx& operator+=(TypeSize AL_Distance) const*/
|
||||
|
||||
const ZCLinkPointEx& operator-=(TypeSize AL_Distance) const
|
||||
{
|
||||
if(this->IsEmpty()){return *this;}
|
||||
|
||||
this->mp_CurrLink = &((*this->mp_CurrLink)-AL_Distance);
|
||||
|
||||
if(this->ml_CurrPos-=AL_Distance > this->mr_CurrList.size())
|
||||
{ this->ml_CurrPos %= this->mr_CurrList.size(); }
|
||||
else if(this->ml_CurrPos<1) // AL_Distance>=0
|
||||
{ while(this->ml_CurrPos+= this->mr_CurrList.size()<1){} }
|
||||
return *this; /*****************************/
|
||||
}/*
|
||||
const ZCLinkPointEx& operator-=(TypeSize AL_Distance) const*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCLinkPointEx*/
|
||||
|
||||
|
||||
public :
|
||||
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
|
||||
private :
|
||||
@ -8202,7 +8341,7 @@ namespace ZNsMain
|
||||
{ return *ARR_Iterator ;}
|
||||
|
||||
|
||||
TypeData & GetDataInIter( ZCLink* AP_CLink , TypeSize AI_FarNum)
|
||||
TypeData & GetDataInIter( TypeLink* AP_CLink , TypeSize AI_FarNum)
|
||||
{return **(AP_CLink->GetNextPrevPtr(AI_FarNum)) ; }
|
||||
TypeData & GetDataInIter( IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum)
|
||||
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID , AI_FarNum); }
|
||||
@ -8217,8 +8356,10 @@ namespace ZNsMain
|
||||
{ return GetDataInIter((ZCLinkC*)ARR_Iterator , AI_FarNum); }
|
||||
|
||||
|
||||
iterator begin() {return ZCLinkPoint(*this); }
|
||||
iteratorC begin() const {return ZCLinkPoint(*this); }
|
||||
iterator begin () { return ZCLinkPoint(*this); }
|
||||
iteratorC begin () const{ return ZCLinkPoint(*this); }
|
||||
iterator end () { return ZCLinkPoint::MakeTailPoint(*this); }
|
||||
iteratorC end () const{ return ZCLinkPoint::MakeTailPoint(*this); }
|
||||
|
||||
|
||||
IterEasy ItHEasy() {return GetHeadIterEasy ();}
|
||||
@ -8260,11 +8401,11 @@ namespace ZNsMain
|
||||
/********************************************************************************************************************************/
|
||||
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(iterator ARR_Iterator , TypeSize AI_FarNum) {return GetDataInIter(ARR_Iterator , AI_FarNum);}
|
||||
TypeData & ItD(iterator& ARR_Iterator , TypeSize AI_FarNum) {return GetDataInIter(ARR_Iterator , AI_FarNum);}
|
||||
|
||||
TypeDataC& ItD(IterEasyC AP_CLink , TypeSize AI_FarNum) const {return GetDataInIter(AP_CLink , AI_FarNum);}
|
||||
TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const {return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
||||
TypeDataC& ItD(iteratorC ARR_Iterator , TypeSize AI_FarNum) const {return GetDataInIter(ARR_Iterator , AI_FarNum);}
|
||||
TypeDataC& ItD(iteratorC& ARR_Iterator , TypeSize AI_FarNum) const {return GetDataInIter(ARR_Iterator , AI_FarNum);}
|
||||
|
||||
public :
|
||||
};/*
|
||||
|
@ -813,6 +813,7 @@ namespace ZNsMain
|
||||
public:
|
||||
typedef ZCLink* IterEasy ; // 가장 간단하게 쓰일 수 있는 반복자.
|
||||
typedef ZCLinkPoint iterator ; // 다양한 기능을 가진 반복자.
|
||||
typedef ZCLinkPoint TypeIter ;
|
||||
public:
|
||||
typedef ZtCObjOpt<ZCLink > ZCLinkOpt;
|
||||
typedef ZtCObjOpt<TypeData> ZCDataOpt;
|
||||
@ -821,6 +822,7 @@ namespace ZNsMain
|
||||
typedef const TypeData TypeDataC ;
|
||||
typedef const TypeLink TypeLinkC ;
|
||||
typedef const TypeThis TypeThisC ;
|
||||
typedef const TypeIter TypeIterC ;
|
||||
typedef const IterEasy IterEasyC ;
|
||||
typedef const iterator iteratorC ;
|
||||
typedef const ZCLink ZCLinkC ;
|
||||
@ -1039,11 +1041,11 @@ namespace ZNsMain
|
||||
|
||||
class ZCLinkPoint
|
||||
{
|
||||
private:
|
||||
protected:
|
||||
mutable TypeLink* mp_CurrLink; // 사실상 mp_CurrLink!=0
|
||||
mutable TypeSize ml_CurrPos ;
|
||||
/*****/ TypeList& mr_CurrList;
|
||||
public:
|
||||
public :
|
||||
ZCLinkPoint(TypeList& AR_TypeList) :
|
||||
mr_CurrList(AR_TypeList)
|
||||
{
|
||||
@ -1055,7 +1057,30 @@ namespace ZNsMain
|
||||
mp_CurrLink(rhs.mp_CurrLink),
|
||||
ml_CurrPos (rhs.ml_CurrPos )
|
||||
{}
|
||||
public:
|
||||
public :
|
||||
|
||||
static ZCLinkPoint MakeTailPoint(TypeList& AR_TypeList)
|
||||
{
|
||||
ZCLinkPoint VO_ZCLinkPoint(AR_TypeList);
|
||||
|
||||
VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink;
|
||||
VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize;
|
||||
|
||||
return VO_ZCLinkPoint; /****************************/
|
||||
}/*
|
||||
static ZCLinkPoint MakeTailPoint(TypeList& AR_TypeList)*/
|
||||
static ZCLinkPoint MakeTailPoint(TypeIterC& AR_TypeIter)
|
||||
{
|
||||
ZCLinkPoint VO_ZCLinkPoint(AR_TypeIter);
|
||||
|
||||
VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
|
||||
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
|
||||
|
||||
return VO_ZCLinkPoint; /****************************/
|
||||
}/*
|
||||
static ZCLinkPoint MakeTailPoint(TypeIterC& AR_TypeIter)*/
|
||||
|
||||
public :
|
||||
|
||||
TypeList & GetList() {return mr_CurrList;}
|
||||
TypeLink & GetLink() {return *mp_CurrLink;}
|
||||
@ -1084,27 +1109,46 @@ namespace ZNsMain
|
||||
operator TypeLinkC& () const{return *mp_CurrLink;}
|
||||
|
||||
|
||||
bool operator == (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos == rhs.ml_CurrPos; }
|
||||
bool operator != (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos != rhs.ml_CurrPos; }
|
||||
bool operator > (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos > rhs.ml_CurrPos; }
|
||||
bool operator >= (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos >= rhs.ml_CurrPos; }
|
||||
bool operator < (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos < rhs.ml_CurrPos; }
|
||||
bool operator <= (const ZCLinkPoint& rhs) const
|
||||
{ return ml_CurrPos <= rhs.ml_CurrPos; }
|
||||
|
||||
bool operator == (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos == AL_Size; }
|
||||
bool operator != (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos != AL_Size; }
|
||||
bool operator > (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos > AL_Size; }
|
||||
bool operator >= (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos >= AL_Size; }
|
||||
bool operator < (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos < AL_Size; }
|
||||
bool operator <= (TypeSize AL_Size) const
|
||||
{ return ml_CurrPos <= AL_Size; }
|
||||
|
||||
|
||||
const ZCLinkPoint& operator++() const
|
||||
{
|
||||
if(IsEmpty()){*this;}
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink;
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink ;
|
||||
|
||||
if(++ml_CurrPos>mr_CurrList.size())
|
||||
{ ml_CurrPos -= mr_CurrList.size(); }
|
||||
return *this; /*******************/
|
||||
++ml_CurrPos; return *this ;
|
||||
}/*
|
||||
const ZCLinkPoint& operator++() const*/
|
||||
|
||||
const ZCLinkPoint& operator--() const
|
||||
{
|
||||
if(IsEmpty()){return *this;}
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink;
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink ;
|
||||
|
||||
if(--ml_CurrPos<1)
|
||||
{ ml_CurrPos += mr_CurrList.size(); }
|
||||
return *this;
|
||||
--ml_CurrPos; return *this ;
|
||||
}/*
|
||||
const ZCLinkPoint& operator--() const*/
|
||||
|
||||
@ -1112,13 +1156,9 @@ namespace ZNsMain
|
||||
{
|
||||
ZCLinkPoint VO_NowPoint(*this);
|
||||
|
||||
if(IsEmpty()){return VO_NowPoint;}
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink;
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink ;
|
||||
|
||||
if(++ml_CurrPos>mr_CurrList.size())
|
||||
{ ml_CurrPos -= mr_CurrList.size(); }
|
||||
return VO_NowPoint; /*************/
|
||||
++ml_CurrPos ; return VO_NowPoint ;
|
||||
}/*
|
||||
ZCLinkPoint operator++(int) const*/
|
||||
|
||||
@ -1126,13 +1166,9 @@ namespace ZNsMain
|
||||
{
|
||||
ZCLinkPoint VO_NowPoint(*this);
|
||||
|
||||
if(IsEmpty()){return VO_NowPoint;}
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink;
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink ;
|
||||
|
||||
if(--ml_CurrPos<1)
|
||||
{ ml_CurrPos += mr_CurrList.size(); }
|
||||
return VO_NowPoint;
|
||||
--ml_CurrPos; return VO_NowPoint ;
|
||||
}/*
|
||||
ZCLinkPoint operator--(int) const*/
|
||||
|
||||
@ -1142,26 +1178,18 @@ namespace ZNsMain
|
||||
if(IsEmpty()){return *this;}
|
||||
|
||||
mp_CurrLink = &((*mp_CurrLink)+AL_Distance) ;
|
||||
ml_CurrPos += 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; /**********************/
|
||||
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);
|
||||
ml_CurrPos -= 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; /***********************/
|
||||
return *this; /*::::::::::::::::::::::::::*/
|
||||
}/*
|
||||
const ZCLinkPoint& operator-=(TypeSize AL_Distance) const*/
|
||||
|
||||
@ -1170,6 +1198,117 @@ namespace ZNsMain
|
||||
class ZCLinkPoint*/
|
||||
|
||||
|
||||
class ZCLinkPointEx : public ZCLinkPoint
|
||||
{
|
||||
public:
|
||||
ZCLinkPointEx(TypeList& AR_TypeList): ZCLinkPoint(AR_TypeList){}
|
||||
ZCLinkPointEx(const ZCLinkPoint& rhs): ZCLinkPoint(rhs ){}
|
||||
ZCLinkPointEx(const ZCLinkPointEx& rhs): ZCLinkPoint(rhs ){}
|
||||
public:
|
||||
|
||||
static ZCLinkPointEx MakeTailPoint(const ZCLinkPointEx& AR_TypeIter)
|
||||
{
|
||||
ZCLinkPointEx VO_ZCLinkPoint(AR_TypeIter);
|
||||
|
||||
if(!AR_TypeIter.IsEmpty()) /****************************/
|
||||
{
|
||||
VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
|
||||
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
|
||||
}
|
||||
return VO_ZCLinkPoint; /********************************/
|
||||
}/*
|
||||
static ZCLinkPointEx MakeTailPoint(const ZCLinkPointEx& AR_TypeIter)*/
|
||||
|
||||
public:
|
||||
|
||||
ZCLinkPointEx& operator= (const ZCLinkPointEx& rhs){ return *this; }
|
||||
|
||||
const ZCLinkPointEx& operator++() const
|
||||
{
|
||||
if(this->IsEmpty()){return *this;}
|
||||
|
||||
this->mp_CurrLink = this->mp_CurrLink->mp_NextLink ;
|
||||
|
||||
if(++this->ml_CurrPos>this->mr_CurrList.size())
|
||||
{ this->ml_CurrPos -= this->mr_CurrList.size(); }
|
||||
return *this; /*******************************/
|
||||
}/*
|
||||
const ZCLinkPointEx& operator++() const*/
|
||||
|
||||
const ZCLinkPointEx& operator--() const
|
||||
{
|
||||
if(this->IsEmpty()){return *this;}
|
||||
|
||||
this->mp_CurrLink = this->mp_CurrLink->mp_PrevLink ;
|
||||
|
||||
if(--this->ml_CurrPos<1)
|
||||
{ this->ml_CurrPos += this->mr_CurrList.size(); }
|
||||
return *this; /********/
|
||||
}/*
|
||||
const ZCLinkPointEx& operator--() const*/
|
||||
|
||||
ZCLinkPointEx operator++(int) const
|
||||
{
|
||||
ZCLinkPointEx VO_NowPoint(*this);
|
||||
|
||||
if(this->IsEmpty()){return VO_NowPoint;}
|
||||
|
||||
this->mp_CurrLink = this->mp_CurrLink->mp_NextLink ;
|
||||
|
||||
if(++this->ml_CurrPos>this->mr_CurrList.size())
|
||||
{ this->ml_CurrPos -= this->mr_CurrList.size(); }
|
||||
return VO_NowPoint; /*************************/
|
||||
}/*
|
||||
ZCLinkPointEx operator++(int) const*/
|
||||
|
||||
ZCLinkPointEx operator--(int) const
|
||||
{
|
||||
ZCLinkPointEx VO_NowPoint(*this);
|
||||
|
||||
if(this->IsEmpty()){return VO_NowPoint;}
|
||||
|
||||
this->mp_CurrLink = this->mp_CurrLink->mp_PrevLink ;
|
||||
|
||||
if(--this->ml_CurrPos<1)
|
||||
{ this->ml_CurrPos += this->mr_CurrList.size(); }
|
||||
return VO_NowPoint;
|
||||
}/*
|
||||
ZCLinkPointEx operator--(int) const*/
|
||||
|
||||
|
||||
const ZCLinkPointEx& operator+=(TypeSize AL_Distance) const
|
||||
{
|
||||
if(this->IsEmpty()){return *this;}
|
||||
|
||||
this->mp_CurrLink = &((*this->mp_CurrLink)+AL_Distance) ;
|
||||
|
||||
if(this->ml_CurrPos+=AL_Distance > this->mr_CurrList.size())
|
||||
{ this->ml_CurrPos %= this->mr_CurrList.size(); }
|
||||
else if(this->ml_CurrPos<1) // AL_Distance<0
|
||||
{ while(this->ml_CurrPos+= this->mr_CurrList.size()<1){} }
|
||||
return *this; /****************************/
|
||||
}/*
|
||||
const ZCLinkPointEx& operator+=(TypeSize AL_Distance) const*/
|
||||
|
||||
const ZCLinkPointEx& operator-=(TypeSize AL_Distance) const
|
||||
{
|
||||
if(this->IsEmpty()){return *this;}
|
||||
|
||||
this->mp_CurrLink = &((*this->mp_CurrLink)-AL_Distance);
|
||||
|
||||
if(this->ml_CurrPos-=AL_Distance > this->mr_CurrList.size())
|
||||
{ this->ml_CurrPos %= this->mr_CurrList.size(); }
|
||||
else if(this->ml_CurrPos<1) // AL_Distance>=0
|
||||
{ while(this->ml_CurrPos+= this->mr_CurrList.size()<1){} }
|
||||
return *this; /*****************************/
|
||||
}/*
|
||||
const ZCLinkPointEx& operator-=(TypeSize AL_Distance) const*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCLinkPointEx*/
|
||||
|
||||
|
||||
public :
|
||||
/******************************************************************/
|
||||
protected:
|
||||
@ -2847,8 +2986,10 @@ namespace ZNsMain
|
||||
{ return GetDataInIter((ZCLinkC*)ARR_Iterator , AI_FarNum); }
|
||||
|
||||
|
||||
iterator begin() { return ZCLinkPoint(*this); }
|
||||
iteratorC begin() const { return ZCLinkPoint(*this); }
|
||||
iterator begin () { return ZCLinkPoint(*this); }
|
||||
iteratorC begin () const{ return ZCLinkPoint(*this); }
|
||||
iterator end () { return ZCLinkPoint::MakeTailPoint(*this); }
|
||||
iteratorC end () const{ return ZCLinkPoint::MakeTailPoint(*this); }
|
||||
|
||||
|
||||
IterEasy ItHEasy() {return GetHeadIterEasy (); }
|
||||
@ -2889,11 +3030,13 @@ namespace ZNsMain
|
||||
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(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum){return GetDataInIter(ARRI_IterEasyID, 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(iterator& ARR_Iterator , TypeSize AI_FarNum) {return GetDataInIter(ARR_Iterator , AI_FarNum);}
|
||||
|
||||
TypeDataC& ItD(IterEasyC AP_CLink , TypeSize AI_FarNum) const{return GetDataInIter(AP_CLink , AI_FarNum);}
|
||||
TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
||||
TypeDataC& ItD(iteratorC& ARR_Iterator , TypeSize AI_FarNum) const{return GetDataInIter(ARR_Iterator , AI_FarNum);}
|
||||
|
||||
|
||||
|
||||
|
@ -357,6 +357,32 @@ namespace ZNsMain
|
||||
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
|
||||
|
||||
|
||||
VO_ListOfStr11.Rotate();
|
||||
cout<<"# list11 Rotate() ################"<<endl;
|
||||
VO_ListOfStr11.IterElemLink(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
|
||||
cout<<"*****************************************************"<<endl;
|
||||
|
||||
cout<<"# list11 IterElemLinkRev() ################"<<endl;
|
||||
VO_ListOfStr11.IterElemLinkRev(&ShowNode1_3, ZftMCP(VI_CallCnt=0));
|
||||
cout<<"*****************************************************"<<endl;
|
||||
|
||||
|
||||
typedef CStringList1::iterator iterator1 ;
|
||||
typedef CStringList1::ZCLinkPointEx iteratorEx1;
|
||||
|
||||
iterator1 VO_Iter1 = VO_ListOfStr11.end();
|
||||
iteratorEx1 VO_IterEx1 = VO_ListOfStr11.end();
|
||||
int VI_LoopCnt = 0;
|
||||
|
||||
while(VO_Iter1>0)
|
||||
{
|
||||
cout<<"(by iter)"<<++VI_LoopCnt<<" : "<<*VO_Iter1<<endl;
|
||||
|
||||
--VO_Iter1;
|
||||
}/*
|
||||
while(VO_Iter1>0)*/
|
||||
|
||||
|
||||
return 0;
|
||||
}/*
|
||||
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
|
||||
@ -412,8 +438,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
|
||||
|
||||
■ Linux 컴파일
|
||||
|
||||
g++ -std=c++98 -o ZtCObjList_000.exe ZtCObjList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation
|
||||
g++ -std=c++98 -o ZtCObjList_000_D.exe ZtCObjList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -D_DEBUG
|
||||
g++ -std=c++98 -o ZtCObjList_000.exe ZtCObjList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -Wno-reorder
|
||||
g++ -std=c++98 -o ZtCObjList_000_D.exe ZtCObjList_000.cpp -I../ -Wall -Wno-unused-function -Wno-misleading-indentation -Wno-reorder -D_DEBUG
|
||||
|
||||
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
|
||||
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
|
||||
|
Reference in New Issue
Block a user