commit 2025-10-13 19:00 ZCLinkPoint => ZCNodePoint : ZCppMain/ZtCObjList.H

This commit is contained in:
2025-10-13 19:00:57 +09:00
parent 388b87377a
commit 7a3b57f135
4 changed files with 260 additions and 258 deletions

View File

@ -795,8 +795,8 @@ namespace ZNsMain
{
public:
class ZCLink ;
class ZCLinkPoint ;
class ZCLinkPointC ;
class ZCNodePoint ;
class ZCNodePointC ;
public:
template<typename TypeObjList> friend class ZtCSortObjList;
/*********************************************************************/
@ -813,29 +813,29 @@ namespace ZNsMain
typedef ZtCObjList TypeThis ;
typedef ZCLink TypeLink ;
typedef ZCLink TypeNode ; // ZCLinkPoint::GetNode() 의 반환형.
typedef ZCLink TypeNode ; // ZCNodePoint::GetNode() 의 반환형.
typedef TypeThis TypeList ;
typedef ZCLink* IterEasy ; // 가장 간단하게 쓰일 수 있는 반복자.
typedef ZCLinkPoint TypeIter ;
typedef ZCLinkPointC TypeIterC ;
typedef ZCNodePoint TypeIter ;
typedef ZCNodePointC TypeIterC ;
/*********************************************************************/
typedef ZCLinkPoint iterator ; // 다양한 기능을 가진 반복자.
typedef ZCLinkPointC const_iterator;
typedef ZCNodePoint iterator ; // 다양한 기능을 가진 반복자.
typedef ZCNodePointC const_iterator;
/*********************************************************************/
typedef const TypeThis TypeThisC ;
typedef const TypeList TypeListC ;
typedef const TypeData TypeDataC ;
typedef const TypeLink TypeLinkC ;
typedef const TypeNode TypeNodeC ; // ZCLinkPoint::GetNode() const 의 반환형.
typedef const TypeNode TypeNodeC ; // ZCNodePoint::GetNode() const 의 반환형.
typedef const IterEasy IterEasyC ;
typedef const ZCLink ZCLinkC ;
typedef const ZCLinkOpt ZCLinkOptC ;
typedef const ZCDataOpt ZCDataOptC ;
typedef ZCLinkPointC iteratorC ;
typedef ZCNodePointC iteratorC ;
/*********************************************************************/
typedef typename TFeeeHeap::
@ -1048,46 +1048,46 @@ namespace ZNsMain
class ZCLink*/
class ZCLinkPoint
class ZCNodePoint
{
protected:
mutable TypeLink* mp_CurrLink; // 사실상 mp_CurrLink!=0
mutable TypeSize ml_CurrPos ;
/*****/ TypeList& mr_CurrList;
public :
ZCLinkPoint(TypeList& AR_TypeList) :
ZCNodePoint(TypeList& AR_TypeList) :
mr_CurrList(AR_TypeList)
{
mp_CurrLink = AR_TypeList.HeadPtr();
ml_CurrPos = 1 ;
}
ZCLinkPoint(const ZCLinkPoint& rhs) :
ZCNodePoint(const ZCNodePoint& rhs) :
mr_CurrList(rhs.mr_CurrList),
mp_CurrLink(rhs.mp_CurrLink),
ml_CurrPos (rhs.ml_CurrPos )
{}
public :
static ZCLinkPoint MakeTailPoint(TypeList& AR_TypeList)
static ZCNodePoint MakeTailPoint(TypeList& AR_TypeList)
{
ZCLinkPoint VO_ZCLinkPoint(AR_TypeList);
ZCNodePoint 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(const TypeIter& AR_TypeIter)
static ZCNodePoint MakeTailPoint(TypeList& AR_TypeList)*/
static ZCNodePoint MakeTailPoint(const TypeIter& AR_TypeIter)
{
ZCLinkPoint VO_ZCLinkPoint(AR_TypeIter);
ZCNodePoint 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(const TypeIter& AR_TypeIter)*/
static ZCNodePoint MakeTailPoint(const TypeIter& AR_TypeIter)*/
public :
@ -1105,7 +1105,7 @@ namespace ZNsMain
bool IsEmpty() const{return mr_CurrList.size()<1;}
ZCLinkPoint& operator= (const ZCLinkPoint& rhs){ return *this; }
ZCNodePoint& operator= (const ZCNodePoint& rhs){ return *this; }
TypeData & operator*() {return **mp_CurrLink;}
@ -1118,17 +1118,17 @@ namespace ZNsMain
operator TypeLinkC& () const{return *mp_CurrLink;}
bool operator == (const ZCLinkPoint& rhs) const
bool operator == (const ZCNodePoint& rhs) const
{ return ml_CurrPos == rhs.ml_CurrPos; }
bool operator != (const ZCLinkPoint& rhs) const
bool operator != (const ZCNodePoint& rhs) const
{ return ml_CurrPos != rhs.ml_CurrPos; }
bool operator > (const ZCLinkPoint& rhs) const
bool operator > (const ZCNodePoint& rhs) const
{ return ml_CurrPos > rhs.ml_CurrPos; }
bool operator >= (const ZCLinkPoint& rhs) const
bool operator >= (const ZCNodePoint& rhs) const
{ return ml_CurrPos >= rhs.ml_CurrPos; }
bool operator < (const ZCLinkPoint& rhs) const
bool operator < (const ZCNodePoint& rhs) const
{ return ml_CurrPos < rhs.ml_CurrPos; }
bool operator <= (const ZCLinkPoint& rhs) const
bool operator <= (const ZCNodePoint& rhs) const
{ return ml_CurrPos <= rhs.ml_CurrPos; }
bool operator == (TypeSize AL_Size) const
@ -1145,44 +1145,44 @@ namespace ZNsMain
{ return ml_CurrPos <= AL_Size; }
const ZCLinkPoint& operator++() const
const ZCNodePoint& operator++() const
{
mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos; return *this ;
}/*
const ZCLinkPoint& operator++() const*/
const ZCNodePoint& operator++() const*/
const ZCLinkPoint& operator--() const
const ZCNodePoint& operator--() const
{
mp_CurrLink = mp_CurrLink->mp_PrevLink;
--ml_CurrPos; return *this ;
}/*
const ZCLinkPoint& operator--() const*/
const ZCNodePoint& operator--() const*/
ZCLinkPoint operator++(int) const
ZCNodePoint operator++(int) const
{
ZCLinkPoint VO_NowPoint(*this);
ZCNodePoint VO_NowPoint(*this);
mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos ; return VO_NowPoint ;
}/*
ZCLinkPoint operator++(int) const*/
ZCNodePoint operator++(int) const*/
ZCLinkPoint operator--(int) const
ZCNodePoint operator--(int) const
{
ZCLinkPoint VO_NowPoint(*this);
ZCNodePoint VO_NowPoint(*this);
mp_CurrLink = mp_CurrLink->mp_PrevLink;
--ml_CurrPos; return VO_NowPoint ;
}/*
ZCLinkPoint operator--(int) const*/
ZCNodePoint operator--(int) const*/
const ZCLinkPoint& operator+=(TypeSize AL_Distance) const
const ZCNodePoint& operator+=(TypeSize AL_Distance) const
{
if(IsEmpty()){return *this;}
@ -1191,77 +1191,77 @@ namespace ZNsMain
return *this; /*:::::::::::::::::::::::::::*/
}/*
const ZCLinkPoint& operator+=(TypeSize AL_Distance) const*/
const ZCNodePoint& operator+=(TypeSize AL_Distance) const*/
const ZCLinkPoint& operator-=(TypeSize AL_Distance) const
const ZCNodePoint& operator-=(TypeSize AL_Distance) const
{
mp_CurrLink = &((*mp_CurrLink)-AL_Distance);
ml_CurrPos -= AL_Distance ;
return *this; /*::::::::::::::::::::::::::*/
}/*
const ZCLinkPoint& operator-=(TypeSize AL_Distance) const*/
const ZCNodePoint& operator-=(TypeSize AL_Distance) const*/
public:
};/*
class ZCLinkPoint*/
class ZCNodePoint*/
class ZCLinkPointC
class ZCNodePointC
{
protected:
const TypeList& mr_CurrList;
mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0
mutable TypeSize ml_CurrPos ;
public :
ZCLinkPointC(const TypeList& AR_TypeList) :
ZCNodePointC(const TypeList& AR_TypeList) :
mr_CurrList(AR_TypeList)
{
mp_CurrLink = AR_TypeList.HeadPtr();
ml_CurrPos = 1 ;
}
ZCLinkPointC(const ZCLinkPoint & rhs) :
ZCNodePointC(const ZCNodePoint & rhs) :
mr_CurrList( rhs.GetMain()),
mp_CurrLink(&rhs.GetNode()),
ml_CurrPos ( rhs.GetPos ())
{}
ZCLinkPointC(const ZCLinkPointC& rhs) :
ZCNodePointC(const ZCNodePointC& rhs) :
mr_CurrList(rhs.mr_CurrList),
mp_CurrLink(rhs.mp_CurrLink),
ml_CurrPos (rhs.ml_CurrPos )
{}
public :
static ZCLinkPointC MakeTailPoint(const TypeList& AR_TypeList)
static ZCNodePointC MakeTailPoint(const TypeList& AR_TypeList)
{
ZCLinkPointC VO_ZCLinkPoint(AR_TypeList);
ZCNodePointC VO_ZCLinkPoint(AR_TypeList);
VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/
}/*
static ZCLinkPointC MakeTailPoint(const TypeList& AR_TypeList)*/
static ZCLinkPointC MakeTailPoint(const ZCLinkPoint& AR_TypeIter)
static ZCNodePointC MakeTailPoint(const TypeList& AR_TypeList)*/
static ZCNodePointC MakeTailPoint(const ZCNodePoint& AR_TypeIter)
{
ZCLinkPointC VO_ZCLinkPoint(AR_TypeIter);
ZCNodePointC 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 ZCLinkPointC MakeTailPoint(const ZCLinkPoint& AR_TypeIter)*/
static ZCLinkPointC MakeTailPoint(const ZCLinkPointC& AR_TypeIter)
static ZCNodePointC MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/
static ZCNodePointC MakeTailPoint(const ZCNodePointC& AR_TypeIter)
{
ZCLinkPointC VO_ZCLinkPoint(AR_TypeIter);
ZCNodePointC 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 ZCLinkPointC MakeTailPoint(const ZCLinkPointC& AR_TypeIter)*/
static ZCNodePointC MakeTailPoint(const ZCNodePointC& AR_TypeIter)*/
public :
@ -1276,7 +1276,7 @@ namespace ZNsMain
bool IsEmpty() const{return mr_CurrList.size()<1;}
ZCLinkPointC& operator= (const ZCLinkPointC& rhs){ return *this; }
ZCNodePointC& operator= (const ZCNodePointC& rhs){ return *this; }
TypeDataC& operator*() const{return **mp_CurrLink;}
@ -1284,17 +1284,17 @@ namespace ZNsMain
operator TypeLinkC& () const{return *mp_CurrLink;}
bool operator == (const ZCLinkPointC& rhs) const
bool operator == (const ZCNodePointC& rhs) const
{ return ml_CurrPos == rhs.ml_CurrPos; }
bool operator != (const ZCLinkPointC& rhs) const
bool operator != (const ZCNodePointC& rhs) const
{ return ml_CurrPos != rhs.ml_CurrPos; }
bool operator > (const ZCLinkPointC& rhs) const
bool operator > (const ZCNodePointC& rhs) const
{ return ml_CurrPos > rhs.ml_CurrPos; }
bool operator >= (const ZCLinkPointC& rhs) const
bool operator >= (const ZCNodePointC& rhs) const
{ return ml_CurrPos >= rhs.ml_CurrPos; }
bool operator < (const ZCLinkPointC& rhs) const
bool operator < (const ZCNodePointC& rhs) const
{ return ml_CurrPos < rhs.ml_CurrPos; }
bool operator <= (const ZCLinkPointC& rhs) const
bool operator <= (const ZCNodePointC& rhs) const
{ return ml_CurrPos <= rhs.ml_CurrPos; }
bool operator == (TypeSize AL_Size) const
@ -1311,44 +1311,44 @@ namespace ZNsMain
{ return ml_CurrPos <= AL_Size; }
const ZCLinkPointC& operator++() const
const ZCNodePointC& operator++() const
{
mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos; return *this ;
}/*
const ZCLinkPointC& operator++() const*/
const ZCNodePointC& operator++() const*/
const ZCLinkPointC& operator--() const
const ZCNodePointC& operator--() const
{
mp_CurrLink = mp_CurrLink->mp_PrevLink;
--ml_CurrPos; return *this ;
}/*
const ZCLinkPointC& operator--() const*/
const ZCNodePointC& operator--() const*/
ZCLinkPointC operator++(int) const
ZCNodePointC operator++(int) const
{
ZCLinkPointC VO_NowPoint(*this);
ZCNodePointC VO_NowPoint(*this);
mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos ; return VO_NowPoint ;
}/*
ZCLinkPointC operator++(int) const*/
ZCNodePointC operator++(int) const*/
ZCLinkPointC operator--(int) const
ZCNodePointC operator--(int) const
{
ZCLinkPointC VO_NowPoint(*this);
ZCNodePointC VO_NowPoint(*this);
mp_CurrLink = mp_CurrLink->mp_PrevLink;
--ml_CurrPos; return VO_NowPoint ;
}/*
ZCLinkPointC operator--(int) const*/
ZCNodePointC operator--(int) const*/
const ZCLinkPointC& operator+=(TypeSize AL_Distance) const
const ZCNodePointC& operator+=(TypeSize AL_Distance) const
{
if(IsEmpty()){return *this;}
@ -1357,28 +1357,28 @@ namespace ZNsMain
return *this; /*:::::::::::::::::::::::::::*/
}/*
const ZCLinkPointC& operator+=(TypeSize AL_Distance) const*/
const ZCNodePointC& operator+=(TypeSize AL_Distance) const*/
const ZCLinkPointC& operator-=(TypeSize AL_Distance) const
const ZCNodePointC& operator-=(TypeSize AL_Distance) const
{
mp_CurrLink = &((*mp_CurrLink)-AL_Distance);
ml_CurrPos -= AL_Distance ;
return *this; /*::::::::::::::::::::::::::*/
}/*
const ZCLinkPointC& operator-=(TypeSize AL_Distance) const*/
const ZCNodePointC& operator-=(TypeSize AL_Distance) const*/
public:
};/*
class ZCLinkPointC*/
class ZCNodePointC*/
class ZCLinkPointEx : public ZCLinkPoint
class ZCLinkPointEx : public ZCNodePoint
{
public:
ZCLinkPointEx(TypeList& AR_TypeList): ZCLinkPoint(AR_TypeList){}
ZCLinkPointEx(const ZCLinkPoint & rhs): ZCLinkPoint(rhs ){}
ZCLinkPointEx(const ZCLinkPointEx& rhs): ZCLinkPoint(rhs ){}
ZCLinkPointEx(TypeList& AR_TypeList): ZCNodePoint(AR_TypeList){}
ZCLinkPointEx(const ZCNodePoint & rhs): ZCNodePoint(rhs ){}
ZCLinkPointEx(const ZCLinkPointEx& rhs): ZCNodePoint(rhs ){}
public:
static ZCLinkPointEx MakeTailPoint(const ZCLinkPointEx& AR_TypeIter)
@ -3161,10 +3161,10 @@ namespace ZNsMain
{ return GetDataInIter((ZCLinkC*)ARR_Iterator , AI_FarNum); }
iterator begin () { return ZCLinkPoint (*this); }
iteratorC begin () const{ return ZCLinkPointC(*this); }
iterator end () { return ZCLinkPoint ::MakeTailPoint(*this); }
iteratorC end () const{ return ZCLinkPointC::MakeTailPoint(*this); }
iterator begin () { return ZCNodePoint (*this); }
iteratorC begin () const{ return ZCNodePointC(*this); }
iterator end () { return ZCNodePoint ::MakeTailPoint(*this); }
iteratorC end () const{ return ZCNodePointC::MakeTailPoint(*this); }
IterEasy ItHEasy() {return GetHeadIterEasy (); }