commit 2025-10-14 09:11 ZCNodePointC => ZCNodePointN : ZCppMain/ZMainHead.H etc
This commit is contained in:
@ -479,7 +479,7 @@ using namespace std;
|
||||
#define __for_ic(IterClass, IterObj, IterVar) \
|
||||
for ( \
|
||||
typename IterClass::const_iterator \
|
||||
IterVar=IterObj.begin(); \
|
||||
IterVar=IterObj.cbegin(); \
|
||||
IterVar<=IterObj.size(); ++IterVar \
|
||||
)
|
||||
|
||||
@ -492,7 +492,7 @@ using namespace std;
|
||||
#define __for_i_rc(IterClass, IterObj, IterVar) \
|
||||
for ( \
|
||||
typename IterClass::const_iterator \
|
||||
IterVar=IterObj.end(); \
|
||||
IterVar=IterObj.cend(); \
|
||||
IterVar>0; --IterVar \
|
||||
)
|
||||
|
||||
@ -5696,7 +5696,7 @@ namespace ZNsMain
|
||||
class ZtCBaseList /*#####################################################*/
|
||||
{
|
||||
public:
|
||||
class ZCLink; class ZCNodePoint; class ZCNodePointC;
|
||||
class ZCLink; class ZCNodePoint; class ZCNodePointN;
|
||||
/*************************************************************************/
|
||||
typedef ZtCObjOpt<ZCLink> ZCLinkOpt ;
|
||||
typedef ZtCObjOpt<TType > ZCDataOpt ;
|
||||
@ -5714,23 +5714,24 @@ namespace ZNsMain
|
||||
typedef ZCNodePoint TypeIter ;
|
||||
|
||||
typedef ZCLink* IterEasy ; // 가장 쉽게 쓸 수 있는 반복자.
|
||||
typedef ZCNodePointC iteratorC ;
|
||||
typedef ZCNodePointN iteratorN ;
|
||||
|
||||
typedef ZCNodePoint iterator ; // 다양한 기능을 가진 반복자.
|
||||
typedef ZCNodePointC const_iterator;
|
||||
typedef ZCNodePointN const_iterator;
|
||||
|
||||
typedef const TypeThis TypeThisC ;
|
||||
typedef const TypeList TypeListC ;
|
||||
typedef const TypeData TypeDataC ;
|
||||
typedef const TypeNode TypeNodeC ; // ZCNodePoint::GetNode() const 의 반환형.
|
||||
typedef const TypeLink TypeLinkC ;
|
||||
typedef const TypeIter TypeIterC ;
|
||||
|
||||
typedef const ZCLink ZCLinkC ;
|
||||
typedef const IterEasy IterEasyC ;
|
||||
typedef const ZCLinkOpt ZCLinkOptC ;
|
||||
typedef const ZCDataOpt ZCDataOptC ;
|
||||
|
||||
typedef ZCNodePointC TypeIterC ;
|
||||
typedef ZCNodePointN TypeIterN ;
|
||||
|
||||
/*************************************************************************/
|
||||
|
||||
@ -6016,61 +6017,71 @@ namespace ZNsMain
|
||||
class ZCNodePoint*/
|
||||
|
||||
|
||||
class ZCNodePointC
|
||||
/*///////////////////////////////////////////////////////////////
|
||||
|
||||
■ 상수 전용 클래스에는 const 의 N 을 붙이는 것으로 하자.
|
||||
C 는 보통의 클래스가 특정 상황에서 읽기 전용일 경우에
|
||||
|
||||
typdef const some_class some_classC;
|
||||
|
||||
형태로 사용할 때 붙였다. -- 2025-10-14 09:08
|
||||
|
||||
///////////////////////////////////////////////////////////////*/
|
||||
class ZCNodePointN
|
||||
{
|
||||
protected:
|
||||
const TypeList& mr_CurrList;
|
||||
mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0
|
||||
mutable TypeSize ml_CurrPos ;
|
||||
public :
|
||||
ZCNodePointC(const TypeList& AR_TypeList) :
|
||||
ZCNodePointN(const TypeList& AR_TypeList) :
|
||||
mr_CurrList(AR_TypeList)
|
||||
{
|
||||
mp_CurrLink = AR_TypeList.HeadPtr();
|
||||
ml_CurrPos = 1 ;
|
||||
}
|
||||
ZCNodePointC(const ZCNodePoint & rhs) :
|
||||
ZCNodePointN(const ZCNodePoint & rhs) :
|
||||
mr_CurrList( rhs.GetMain()),
|
||||
mp_CurrLink(&rhs.GetNode()),
|
||||
ml_CurrPos ( rhs.GetPos ())
|
||||
{}
|
||||
ZCNodePointC(const ZCNodePointC& rhs) :
|
||||
ZCNodePointN(const ZCNodePointN& rhs) :
|
||||
mr_CurrList(rhs.mr_CurrList),
|
||||
mp_CurrLink(rhs.mp_CurrLink),
|
||||
ml_CurrPos (rhs.ml_CurrPos )
|
||||
{}
|
||||
public :
|
||||
|
||||
static ZCNodePointC MakeTailPoint(const TypeList& AR_TypeList)
|
||||
static ZCNodePointN MakeTailPoint(const TypeList& AR_TypeList)
|
||||
{
|
||||
ZCNodePointC VO_ZCLinkPoint(AR_TypeList);
|
||||
ZCNodePointN VO_ZCLinkPoint(AR_TypeList);
|
||||
|
||||
VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink;
|
||||
VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize;
|
||||
|
||||
return VO_ZCLinkPoint; /****************/
|
||||
}/*
|
||||
static ZCNodePointC MakeTailPoint(const TypeList& AR_TypeList)*/
|
||||
static ZCNodePointC MakeTailPoint(const ZCNodePoint & AR_TypeIter)
|
||||
static ZCNodePointN MakeTailPoint(const TypeList& AR_TypeList)*/
|
||||
static ZCNodePointN MakeTailPoint(const ZCNodePoint & AR_TypeIter)
|
||||
{
|
||||
ZCNodePointC VO_ZCLinkPoint(AR_TypeIter);
|
||||
ZCNodePointN 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 ZCNodePointC MakeTailPoint(const ZCNodePoint & AR_TypeIter)*/
|
||||
static ZCNodePointC MakeTailPoint(const ZCNodePointC& AR_TypeIter)
|
||||
static ZCNodePointN MakeTailPoint(const ZCNodePoint & AR_TypeIter)*/
|
||||
static ZCNodePointN MakeTailPoint(const ZCNodePointN& AR_TypeIter)
|
||||
{
|
||||
ZCNodePointC VO_ZCLinkPoint(AR_TypeIter);
|
||||
ZCNodePointN 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 ZCNodePointC MakeTailPoint(const ZCNodePointC& AR_TypeIter)*/
|
||||
static ZCNodePointN MakeTailPoint(const ZCNodePointN& AR_TypeIter)*/
|
||||
|
||||
public :
|
||||
|
||||
@ -6085,7 +6096,7 @@ namespace ZNsMain
|
||||
bool IsEmpty() const{return mr_CurrList.size()<1;}
|
||||
|
||||
|
||||
ZCNodePointC& operator= (const ZCNodePointC& rhs){ return *this; }
|
||||
ZCNodePointN& operator= (const ZCNodePointN& rhs){ return *this; }
|
||||
|
||||
|
||||
TypeDataC& operator*() const{return **mp_CurrLink;}
|
||||
@ -6093,17 +6104,17 @@ namespace ZNsMain
|
||||
operator TypeNodeC& () const{return *mp_CurrLink;}
|
||||
|
||||
|
||||
bool operator == (const ZCNodePointC& rhs) const
|
||||
bool operator == (const ZCNodePointN& rhs) const
|
||||
{ return ml_CurrPos == rhs.ml_CurrPos; }
|
||||
bool operator != (const ZCNodePointC& rhs) const
|
||||
bool operator != (const ZCNodePointN& rhs) const
|
||||
{ return ml_CurrPos != rhs.ml_CurrPos; }
|
||||
bool operator > (const ZCNodePointC& rhs) const
|
||||
bool operator > (const ZCNodePointN& rhs) const
|
||||
{ return ml_CurrPos > rhs.ml_CurrPos; }
|
||||
bool operator >= (const ZCNodePointC& rhs) const
|
||||
bool operator >= (const ZCNodePointN& rhs) const
|
||||
{ return ml_CurrPos >= rhs.ml_CurrPos; }
|
||||
bool operator < (const ZCNodePointC& rhs) const
|
||||
bool operator < (const ZCNodePointN& rhs) const
|
||||
{ return ml_CurrPos < rhs.ml_CurrPos; }
|
||||
bool operator <= (const ZCNodePointC& rhs) const
|
||||
bool operator <= (const ZCNodePointN& rhs) const
|
||||
{ return ml_CurrPos <= rhs.ml_CurrPos; }
|
||||
|
||||
bool operator == (TypeSize AL_Size) const
|
||||
@ -6120,44 +6131,44 @@ namespace ZNsMain
|
||||
{ return ml_CurrPos <= AL_Size; }
|
||||
|
||||
|
||||
const ZCNodePointC& operator++() const
|
||||
const ZCNodePointN& operator++() const
|
||||
{
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink;
|
||||
|
||||
++ml_CurrPos; return *this ;
|
||||
}/*
|
||||
const ZCNodePointC& operator++() const*/
|
||||
const ZCNodePointN& operator++() const*/
|
||||
|
||||
const ZCNodePointC& operator--() const
|
||||
const ZCNodePointN& operator--() const
|
||||
{
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink;
|
||||
|
||||
--ml_CurrPos; return *this ;
|
||||
}/*
|
||||
const ZCNodePointC& operator--() const*/
|
||||
const ZCNodePointN& operator--() const*/
|
||||
|
||||
ZCNodePointC operator++(int) const
|
||||
ZCNodePointN operator++(int) const
|
||||
{
|
||||
ZCNodePointC VO_NowPoint(*this);
|
||||
ZCNodePointN VO_NowPoint(*this);
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_NextLink;
|
||||
|
||||
++ml_CurrPos ; return VO_NowPoint ;
|
||||
}/*
|
||||
ZCNodePointC operator++(int) const*/
|
||||
ZCNodePointN operator++(int) const*/
|
||||
|
||||
ZCNodePointC operator--(int) const
|
||||
ZCNodePointN operator--(int) const
|
||||
{
|
||||
ZCNodePointC VO_NowPoint(*this);
|
||||
ZCNodePointN VO_NowPoint(*this);
|
||||
|
||||
mp_CurrLink = mp_CurrLink->mp_PrevLink;
|
||||
|
||||
--ml_CurrPos; return VO_NowPoint ;
|
||||
}/*
|
||||
ZCNodePointC operator--(int) const*/
|
||||
ZCNodePointN operator--(int) const*/
|
||||
|
||||
|
||||
const ZCNodePointC& operator+=(TypeSize AL_Distance) const
|
||||
const ZCNodePointN& operator+=(TypeSize AL_Distance) const
|
||||
{
|
||||
if(IsEmpty()){return *this;}
|
||||
|
||||
@ -6166,20 +6177,20 @@ namespace ZNsMain
|
||||
|
||||
return *this; /*:::::::::::::::::::::::::::*/
|
||||
}/*
|
||||
const ZCNodePointC& operator+=(TypeSize AL_Distance) const*/
|
||||
const ZCNodePointN& operator+=(TypeSize AL_Distance) const*/
|
||||
|
||||
const ZCNodePointC& operator-=(TypeSize AL_Distance) const
|
||||
const ZCNodePointN& operator-=(TypeSize AL_Distance) const
|
||||
{
|
||||
mp_CurrLink = &((*mp_CurrLink)-AL_Distance);
|
||||
ml_CurrPos -= AL_Distance ;
|
||||
|
||||
return *this; /*::::::::::::::::::::::::::*/
|
||||
}/*
|
||||
const ZCNodePointC& operator-=(TypeSize AL_Distance) const*/
|
||||
const ZCNodePointN& operator-=(TypeSize AL_Distance) const*/
|
||||
|
||||
public:
|
||||
};/*
|
||||
class ZCNodePointC*/
|
||||
class ZCNodePointN*/
|
||||
|
||||
|
||||
class ZCLinkPointEx : public ZCNodePoint
|
||||
@ -8507,7 +8518,7 @@ namespace ZNsMain
|
||||
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID ) const
|
||||
{ MoveNextIter((TypeLinkC*&)(ARRI_IterEasyID)); }
|
||||
void MoveNextIter(iterator & ARR_Iterator ) const{++ARR_Iterator;}
|
||||
void MoveNextIter(iteratorC & ARR_Iterator ) const{++ARR_Iterator;}
|
||||
void MoveNextIter(iteratorN & ARR_Iterator ) const{++ARR_Iterator;}
|
||||
|
||||
|
||||
void MovePrevIter(ZCLink* & APR_CLink ) const
|
||||
@ -8519,7 +8530,7 @@ namespace ZNsMain
|
||||
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;}
|
||||
void MovePrevIter(iteratorN & ARR_Iterator ) const{--ARR_Iterator;}
|
||||
|
||||
|
||||
TypeData & GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
|
||||
@ -8531,7 +8542,7 @@ namespace ZNsMain
|
||||
{ return **AP_CLink ;}
|
||||
TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID ) const
|
||||
{ return GetDataInIter((TypeLinkC*)ARRI_IterEasyID); }
|
||||
TypeDataC& GetDataInIter(iteratorC& ARR_Iterator )
|
||||
TypeDataC& GetDataInIter(iteratorN& ARR_Iterator )
|
||||
{ return *ARR_Iterator ;}
|
||||
|
||||
|
||||
@ -8546,14 +8557,17 @@ namespace ZNsMain
|
||||
{return **(AP_CLink->GetNextPrePtr(AI_FarNum)) ; }
|
||||
TypeDataC& GetDataInIter( IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const
|
||||
{ return GetDataInIter((ZCLinkC*)ARRI_IterEasyID , AI_FarNum); }
|
||||
TypeDataC& GetDataInIter( iteratorC& ARR_Iterator , TypeSize AI_FarNum) const
|
||||
TypeDataC& GetDataInIter( iteratorN& ARR_Iterator , TypeSize AI_FarNum) const
|
||||
{ return GetDataInIter((ZCLinkC*)ARR_Iterator , AI_FarNum); }
|
||||
|
||||
|
||||
iterator begin () { return ZCNodePoint (*this); }
|
||||
iteratorC begin () const{ return ZCNodePointC(*this); }
|
||||
iteratorN begin () const{ return ZCNodePointN(*this); }
|
||||
iterator end () { return ZCNodePoint ::MakeTailPoint(*this); }
|
||||
iteratorC end () const{ return ZCNodePointC::MakeTailPoint(*this); }
|
||||
iteratorN end () const{ return ZCNodePointN::MakeTailPoint(*this); }
|
||||
|
||||
iteratorN cbegin () const{ return ZCNodePointN(*this); }
|
||||
iteratorN cend () const{ return ZCNodePointN::MakeTailPoint(*this); }
|
||||
|
||||
|
||||
IterEasy ItHEasy() {return GetHeadIterEasy ();}
|
||||
@ -8573,7 +8587,7 @@ namespace ZNsMain
|
||||
void ItNext(IterEasyID & ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));}
|
||||
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(iteratorN & ARR_Iterator ) const{++ARR_Iterator;}
|
||||
void ItNext(IterEasyIDc& ARRI_IterEasyID) const
|
||||
{ ItNext((TypeLinkC*&)(ARRI_IterEasyID)); }
|
||||
|
||||
@ -8581,7 +8595,7 @@ namespace ZNsMain
|
||||
void ItPrev(IterEasyID & ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));}
|
||||
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(iteratorN & ARR_Iterator ) const{--ARR_Iterator;}
|
||||
void ItPrev(IterEasyIDc& ARRI_IterEasyID) const
|
||||
{ ItPrev((TypeLinkC*&)(ARRI_IterEasyID)); }
|
||||
|
||||
@ -8591,7 +8605,7 @@ namespace ZNsMain
|
||||
|
||||
TypeDataC& ItD(IterEasyC AP_CLink ) const {return GetDataInIter(AP_CLink );}
|
||||
TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID) const {return GetDataInIter(ARRI_IterEasyID);}
|
||||
TypeDataC& ItD(iteratorC& ARR_Iterator ) const {return GetDataInIter(ARR_Iterator );}
|
||||
TypeDataC& ItD(iteratorN& 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);}
|
||||
@ -8599,7 +8613,7 @@ namespace ZNsMain
|
||||
|
||||
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(iteratorN& ARR_Iterator , TypeSize AI_FarNum) const {return GetDataInIter(ARR_Iterator , AI_FarNum);}
|
||||
|
||||
public :
|
||||
};/*
|
||||
|
Reference in New Issue
Block a user