commit 2025-10-14 09:11 ZCNodePointC => ZCNodePointN : ZCppMain/ZMainHead.H etc

This commit is contained in:
2025-10-14 09:12:02 +09:00
parent 4fc794e834
commit 65a115ff6f
6 changed files with 293 additions and 263 deletions

View File

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

View File

@ -22,7 +22,7 @@ namespace ZNsMain
typedef TTypArg TypeArg ; typedef TTypArg TypeArg ;
typedef TSize TypeSize ; typedef TSize TypeSize ;
public: public:
class ZCNodePoint; class ZCNodePointC ; class ZCNodePoint; class ZCNodePointN ;
public: public:
typedef TypeData* IterEasy ; typedef TypeData* IterEasy ;
typedef TypeData* TypeNode ; // ZCLinkPoint::GetNode() 의 반환형. typedef TypeData* TypeNode ; // ZCLinkPoint::GetNode() 의 반환형.
@ -32,12 +32,17 @@ namespace ZNsMain
typedef const TypeThis TypeThisC ; typedef const TypeThis TypeThisC ;
typedef const TypeData TypeDataC ; typedef const TypeData TypeDataC ;
typedef const TypeNode TypeNodeC ; // ZCLinkPoint::GetNode() const 의 반환형. typedef const TypeNode TypeNodeC ; // ZCLinkPoint::GetNode() const 의 반환형.
typedef const TypeIter TypeIterC ;
typedef const IterEasy IterEasyC ; typedef const IterEasy IterEasyC ;
typedef ZCNodePointC iteratorC ; /**********************************************/
typedef const ZCNodePoint ZCNodePointC;
typedef const ZCNodePoint iteratorC ;
/**********************************************/ /**********************************************/
typedef ZCNodePoint iterator ; typedef ZCNodePoint iterator ;
typedef ZCNodePointC const_iterator; typedef ZCNodePointN const_iterator;
typedef ZCNodePointN iteratorN ;
typedef ZCNodePointN TypeIterN ;
public: public:
@ -87,30 +92,30 @@ namespace ZNsMain
TypeDataC& operator* () const{return *mp_Data;} TypeDataC& operator* () const{return *mp_Data;}
TypeDataC* operator->() const{return mp_Data;} TypeDataC* operator->() const{return mp_Data;}
ZCNodePoint& operator++( ){++mp_Data; ++ml_ElePos; return *this;} TypeIter & operator++( ) {++mp_Data; ++ml_ElePos; return *this;}
ZCNodePoint operator++(int){++mp_Data; ++ml_ElePos; return *this;} TypeIter operator++(int) {++mp_Data; ++ml_ElePos; return *this;}
const ZCNodePoint& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;} ZCNodePointC& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;}
const ZCNodePoint operator++(int) const{++mp_Data; ++ml_ElePos; return *this;} ZCNodePointC operator++(int) const{++mp_Data; ++ml_ElePos; return *this;}
ZCNodePoint operator+(TSize AL_AddPos) const TypeIter operator+(TSize AL_AddPos) const
{ {
return ZCNodePoint(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos); return ZCNodePoint(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos);
}/* }/*
ZCNodePoint operator+(TSize AL_AddPos) const*/ TypeIter operator+(TSize AL_AddPos) const*/
bool operator == (const ZCNodePoint& rhs) const bool operator == (ZCNodePointC& rhs) const
{ return ml_ElePos == rhs.ml_ElePos; } { return ml_ElePos == rhs.ml_ElePos; }
bool operator != (const ZCNodePoint& rhs) const bool operator != (ZCNodePointC& rhs) const
{ return ml_ElePos != rhs.ml_ElePos; } { return ml_ElePos != rhs.ml_ElePos; }
bool operator > (const ZCNodePoint& rhs) const bool operator > (ZCNodePointC& rhs) const
{ return ml_ElePos > rhs.ml_ElePos; } { return ml_ElePos > rhs.ml_ElePos; }
bool operator >= (const ZCNodePoint& rhs) const bool operator >= (ZCNodePointC& rhs) const
{ return ml_ElePos >= rhs.ml_ElePos; } { return ml_ElePos >= rhs.ml_ElePos; }
bool operator < (const ZCNodePoint& rhs) const bool operator < (ZCNodePointC& rhs) const
{ return ml_ElePos < rhs.ml_ElePos; } { return ml_ElePos < rhs.ml_ElePos; }
bool operator <= (const ZCNodePoint& rhs) const bool operator <= (ZCNodePointC& rhs) const
{ return ml_ElePos <= rhs.ml_ElePos; } { return ml_ElePos <= rhs.ml_ElePos; }
bool operator == (TypeSize AL_Size) const bool operator == (TypeSize AL_Size) const
@ -131,7 +136,7 @@ namespace ZNsMain
class ZCNodePoint*/ class ZCNodePoint*/
class ZCNodePointC class ZCNodePointN
{ {
private: private:
mutable TypeData* mp_Data ; mutable TypeData* mp_Data ;
@ -139,7 +144,7 @@ namespace ZNsMain
const ZtCArray& mr_CArray; const ZtCArray& mr_CArray;
public: public:
ZCNodePointC(const ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos) : ZCNodePointN(const ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos) :
mr_CArray(AR_CArray) mr_CArray(AR_CArray)
/*****************************************************************/ /*****************************************************************/
{ {
@ -147,27 +152,27 @@ namespace ZNsMain
mr_CArray=&AR_CArray; mr_CArray=&AR_CArray;
ml_ElePos=AL_ElePos ; ml_ElePos=AL_ElePos ;
}/* }/*
ZCNodePointC(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)*/ ZCNodePointN(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)*/
ZCNodePointC(ZtCArray& AR_CArray) : mr_CArray(AR_CArray) ZCNodePointN(ZtCArray& AR_CArray) : mr_CArray(AR_CArray)
{ {
mp_Data = AR_CArray.mp_TypeArr ; mp_Data = AR_CArray.mp_TypeArr ;
ml_ElePos=(AR_CArray.size()>0 ? 1 : 0 ) ; ml_ElePos=(AR_CArray.size()>0 ? 1 : 0 ) ;
}/* }/*
ZCNodePointC(ZtCArray& AR_CArray)*/ ZCNodePointN(ZtCArray& AR_CArray)*/
ZCNodePointC(const ZCNodePointC& rhs) : mr_CArray(rhs.mr_CArray) ZCNodePointN(const ZCNodePointN& rhs) : mr_CArray(rhs.mr_CArray)
{ {
mp_Data = rhs.mp_TypeArr ; mp_Data = rhs.mp_TypeArr ;
ml_ElePos=(mr_CArray.size()>0 ? 1 : 0 ) ; ml_ElePos=(mr_CArray.size()>0 ? 1 : 0 ) ;
}/* }/*
ZCNodePointC(const ZCNodePointC& rhs)*/ ZCNodePointN(const ZCNodePointN& rhs)*/
ZCNodePointC(const ZCNodePoint & rhs) : mr_CArray(rhs.mr_CArray) ZCNodePointN(const ZCNodePoint & rhs) : mr_CArray(rhs.mr_CArray)
{ {
mp_Data = rhs.mp_TypeArr ; mp_Data = rhs.mp_TypeArr ;
ml_ElePos=(mr_CArray.size()>0 ? 1 : 0 ) ; ml_ElePos=(mr_CArray.size()>0 ? 1 : 0 ) ;
}/* }/*
ZCNodePointC(const ZCNodePoint & rhs)*/ ZCNodePointN(const ZCNodePoint & rhs)*/
TypeSize size () const{return mr_CArray.size();} TypeSize size () const{return mr_CArray.size();}
@ -177,30 +182,27 @@ namespace ZNsMain
TypeDataC* operator->() const{return mp_Data;} TypeDataC* operator->() const{return mp_Data;}
ZCNodePointC& operator++( ){++mp_Data; ++ml_ElePos; return *this;} TypeIterN& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;}
ZCNodePointC operator++(int){++mp_Data; ++ml_ElePos; return *this;} TypeIterN operator++(int) const{++mp_Data; ++ml_ElePos; return *this;}
const ZCNodePointC& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;} TypeIterN operator+(TSize AL_AddPos) const
const ZCNodePointC operator++(int) const{++mp_Data; ++ml_ElePos; return *this;}
ZCNodePointC operator+(TSize AL_AddPos) const
{ {
return ZCNodePointC(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos); return ZCNodePointN(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos);
}/* }/*
ZCNodePointC operator+(TSize AL_AddPos) const*/ TypeIterN operator+(TSize AL_AddPos) const*/
bool operator == (const ZCNodePointC& rhs) const bool operator == (const ZCNodePointN& rhs) const
{ return ml_ElePos == rhs.ml_ElePos; } { return ml_ElePos == rhs.ml_ElePos; }
bool operator != (const ZCNodePointC& rhs) const bool operator != (const ZCNodePointN& rhs) const
{ return ml_ElePos != rhs.ml_ElePos; } { return ml_ElePos != rhs.ml_ElePos; }
bool operator > (const ZCNodePointC& rhs) const bool operator > (const ZCNodePointN& rhs) const
{ return ml_ElePos > rhs.ml_ElePos; } { return ml_ElePos > rhs.ml_ElePos; }
bool operator >= (const ZCNodePointC& rhs) const bool operator >= (const ZCNodePointN& rhs) const
{ return ml_ElePos >= rhs.ml_ElePos; } { return ml_ElePos >= rhs.ml_ElePos; }
bool operator < (const ZCNodePointC& rhs) const bool operator < (const ZCNodePointN& rhs) const
{ return ml_ElePos < rhs.ml_ElePos; } { return ml_ElePos < rhs.ml_ElePos; }
bool operator <= (const ZCNodePointC& rhs) const bool operator <= (const ZCNodePointN& rhs) const
{ return ml_ElePos <= rhs.ml_ElePos; } { return ml_ElePos <= rhs.ml_ElePos; }
bool operator == (TypeSize AL_Size) const bool operator == (TypeSize AL_Size) const
@ -218,7 +220,7 @@ namespace ZNsMain
public: public:
};/* };/*
class ZCNodePointC*/ class ZCNodePointN*/
public : public :
@ -465,11 +467,11 @@ namespace ZNsMain
void push_front(TypeArg AR_TypeArg){AddHead(AR_TypeArg);} void push_front(TypeArg AR_TypeArg){AddHead(AR_TypeArg);}
void push_back (TypeArg AR_TypeArg){AddTail(AR_TypeArg);} void push_back (TypeArg AR_TypeArg){AddTail(AR_TypeArg);}
Type& push_front(){return AddHead();} TypeData& push_front(){return AddHead();}
Type& push_back (){return AddTail();} TypeData& push_back (){return AddTail();}
/***/ ZCNodePoint begin() {return ZCNodePoint(*this);} TypeIter begin() {return ZCNodePoint (*this);}
const ZCNodePoint begin() const{return ZCNodePoint(*this);} TypeIterN begin() const{return ZCNodePointN(*this);}
template<typename TFunctor> void IterElement(TFunctor AO_Functor) template<typename TFunctor> void IterElement(TFunctor AO_Functor)
@ -666,101 +668,102 @@ namespace ZNsMain
///////////////////////////////////////////////////////////////////////////*/ ///////////////////////////////////////////////////////////////////////////*/
Type* GetHeadIterEasy (){return mp_TypeArr ;} TypeData * GetHeadIterEasy () {return mp_TypeArr ;}
Type* GetTailIterEasy (){return mp_TypeArr+ml_UseSize-1 ;} TypeData * GetTailIterEasy () {return mp_TypeArr+ml_UseSize-1 ;}
IterEasyID GetHeadIterEasyID(){return (IterEasyID) mp_TypeArr ;} IterEasyID GetHeadIterEasyID() {return (IterEasyID) mp_TypeArr ;}
IterEasyID GetTailIterEasyID(){return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} IterEasyID GetTailIterEasyID() {return (IterEasyID)(mp_TypeArr+ml_UseSize-1);}
const Type* GetHeadIterEasy () const{return mp_TypeArr ;} TypeDataC* GetHeadIterEasy () const{return mp_TypeArr ;}
const Type* GetTailIterEasy () const{return mp_TypeArr+ml_UseSize-1 ;} TypeDataC* GetTailIterEasy () const{return mp_TypeArr+ml_UseSize-1 ;}
const IterEasyID GetHeadIterEasyID() const{return (IterEasyID) mp_TypeArr ;} IterEasyIDc GetHeadIterEasyID() const{return (IterEasyID) mp_TypeArr ;}
const IterEasyID GetTailIterEasyID() const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} IterEasyIDc GetTailIterEasyID() const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);}
void MoveNextIter(Type*& APR_CType ) const{++APR_CType ;} void MoveNextIter(TypeData* & APR_CType ) const{++APR_CType ;}
void MoveNextIter(iterator& ARR_CIterator) const{++ARR_CIterator;} void MoveNextIter(iterator & ARR_CIterator) const{++ARR_CIterator;}
void MoveNextIter(IterEasyID& AI_IterEasyID) const void MoveNextIter(IterEasyID & AI_IterEasyID) const
{ MoveNextIter((Type*&)AI_IterEasyID); } { MoveNextIter((TypeData*&)AI_IterEasyID); }
void MoveNextIter(const Type*& APR_CType ) const{++APR_CType ;} void MoveNextIter(TypeDataC* & APR_CType ) const{++APR_CType ;}
void MoveNextIter(const iterator& ARR_CIterator) const{++ARR_CIterator;} void MoveNextIter(iteratorC& ARR_CIterator) const{++ARR_CIterator;}
void MoveNextIter(const IterEasyID& AI_IterEasyID) void MoveNextIter(IterEasyIDc& AI_IterEasyID)
const{ MoveNextIter((const Type*&)AI_IterEasyID); } const{ MoveNextIter((TypeDataC*&)AI_IterEasyID); }
void MovePrevIter(Type*& APR_CType ) const{--APR_CType ;} void MovePrevIter(TypeData* & APR_CType ) const{--APR_CType ;}
void MovePrevIter(iterator& ARR_CIterator) const{--ARR_CIterator;} void MovePrevIter(iterator & ARR_CIterator) const{--ARR_CIterator;}
void MovePrevIter(IterEasyID& AI_IterEasyID) const void MovePrevIter(IterEasyID & AI_IterEasyID) const
{ MovePrevIter((Type*&)AI_IterEasyID); } { MovePrevIter((TypeData*&)AI_IterEasyID); }
void MovePrevIter(const Type*& APR_CType ) const{--APR_CType ;} void MovePrevIter(TypeDataC* & APR_CType ) const{--APR_CType ;}
void MovePrevIter(const iterator& ARR_CIterator) const{--ARR_CIterator;} void MovePrevIter(iteratorC & ARR_CIterator) const{--ARR_CIterator;}
void MovePrevIter(const IterEasyID& AI_IterEasyID) void MovePrevIter(IterEasyIDc& AI_IterEasyID)
const{ MovePrevIter((const Type*&)AI_IterEasyID); } const{ MovePrevIter((TypeDataC*&)AI_IterEasyID); }
Type& GetDataInIter(Type* AP_CType ){return *AP_CType ;} TypeData& GetDataInIter(TypeData * AP_CType ) {return *AP_CType ;}
Type& GetDataInIter(iterator& ARR_CIterator){return *ARR_CIterator ;} TypeData& GetDataInIter(iterator & ARR_CIterator) {return *ARR_CIterator;}
Type& GetDataInIter(IterEasyID AI_IterEasyID){return *(Type*)AI_IterEasyID;} TypeData& GetDataInIter(IterEasyID AI_IterEasyID)
{ return *(TypeData *)AI_IterEasyID; }
const Type& GetDataInIter(const Type* AP_CType ) const{return *AP_CType;} TypeDataC& GetDataInIter(TypeDataC * AP_CType ) const{return *AP_CType;}
const Type& GetDataInIter(const iterator& ARR_CIterator) const{return *ARR_CIterator;} TypeDataC& GetDataInIter(iteratorC & ARR_CIterator) const{return *ARR_CIterator;}
const Type& GetDataInIter(const IterEasyID AI_IterEasyID) const TypeDataC& GetDataInIter(IterEasyIDc AI_IterEasyID) const
{ return *(const Type*)AI_IterEasyID; } { return *(TypeDataC*)AI_IterEasyID; }
Type& GetDataInIter(Type* AP_Type , TypeSize AI_FarNum) TypeData & GetDataInIter(TypeData * AP_Type , TypeSize AI_FarNum)
{ return *(AP_Type + AI_FarNum) ; } { return *(AP_Type + AI_FarNum) ; }
Type& GetDataInIter(iterator& ARR_CIterator , TypeSize AI_FarNum) TypeData & GetDataInIter(iterator & ARR_CIterator , TypeSize AI_FarNum)
{ return *(ARR_CIterator+AI_FarNum) ; } { return *(ARR_CIterator+AI_FarNum) ; }
Type& GetDataInIter(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) TypeData & GetDataInIter(IterEasyID ARRI_IterEasyID , TypeSize AI_FarNum)
{ return GetDataInIter((Type*)ARRI_IterEasyID, AI_FarNum); } { return GetDataInIter((TypeData*)ARRI_IterEasyID , AI_FarNum); }
const Type& GetDataInIter(const Type* AP_Type , TypeSize AI_FarNum) const TypeDataC& GetDataInIter(TypeDataC * AP_Type , TypeSize AI_FarNum) const
{ return *(AP_Type + AI_FarNum); } { return *(AP_Type + AI_FarNum); }
const Type& GetDataInIter(iterator& ARR_CIterator, TypeSize AI_FarNum) const TypeDataC& GetDataInIter(iterator & ARR_CIterator , TypeSize AI_FarNum) const
{ return *(ARR_CIterator+AI_FarNum); } { return *(ARR_CIterator+AI_FarNum); }
const Type& GetDataInIter(const IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) const TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID , TypeSize AI_FarNum) const
{ return GetDataInIter((const Type*)ARRI_IterEasyID, AI_FarNum); } { return GetDataInIter((TypeDataC*)ARRI_IterEasyID, AI_FarNum); }
Type* ItHEasy(){return mp_TypeArr ;} TypeData * ItHEasy() {return mp_TypeArr ;}
Type* ItTEasy(){return mp_TypeArr+ml_UseSize-1 ;} TypeData * ItTEasy() {return mp_TypeArr+ml_UseSize-1 ;}
IterEasyID ItHID (){return (IterEasyID) mp_TypeArr ;} IterEasyID ItHID () {return (IterEasyID) mp_TypeArr ;}
IterEasyID ItTID (){return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} IterEasyID ItTID () {return (IterEasyID)(mp_TypeArr+ml_UseSize-1);}
const Type* ItHEasy () const{return mp_TypeArr ;} TypeDataC* ItHEasy() const{return mp_TypeArr ;}
const Type* ItTEasy () const{return mp_TypeArr+ml_UseSize-1 ;} TypeDataC* ItTEasy() const{return mp_TypeArr+ml_UseSize-1 ;}
const IterEasyID ItHID() const{return (IterEasyID) mp_TypeArr ;} IterEasyIDc ItHID () const{return (IterEasyID) mp_TypeArr ;}
const IterEasyID ItTID() const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} IterEasyIDc ItTID () const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);}
void ItNext(Type*& APR_CType ) const{++APR_CType ;} void ItNext(TypeData* & APR_CType ) const{++APR_CType ;}
void ItNext(iterator& ARR_CIterator) const{++ARR_CIterator;} void ItNext(iterator & ARR_CIterator) const{++ARR_CIterator;}
void ItNext(IterEasyID& AI_IterEasyID) const void ItNext(IterEasyID & AI_IterEasyID) const
{ ItNext((Type*&)AI_IterEasyID); } { ItNext((TypeData*&)AI_IterEasyID); }
void ItNext(const Type*& APR_CType ) const{++APR_CType ;} void ItNext(TypeDataC* & APR_CType ) const{++APR_CType ;}
void ItNext(const iterator& ARR_CIterator) const{++ARR_CIterator;} void ItNext(iteratorC & ARR_CIterator) const{++ARR_CIterator;}
void ItNext(const IterEasyID& AI_IterEasyID) void ItNext(IterEasyIDc& AI_IterEasyID)
const{ ItNext((const Type*&)AI_IterEasyID); } const{ ItNext((TypeDataC*&)AI_IterEasyID); }
void ItPrev(Type*& APR_CType ) const{--APR_CType ;} void ItPrev(TypeData* & APR_CType ) const{--APR_CType ;}
void ItPrev(iterator& ARR_CIterator) const{--ARR_CIterator;} void ItPrev(iterator & ARR_CIterator) const{--ARR_CIterator;}
void ItPrev(IterEasyID& AI_IterEasyID) const void ItPrev(IterEasyID & AI_IterEasyID) const
{ ItPrev((Type*&)AI_IterEasyID); } { ItPrev((TypeData*&)AI_IterEasyID); }
void ItPrev(const Type*& APR_CType ) const{--APR_CType ;} void ItPrev(TypeDataC* & APR_CType ) const{--APR_CType ;}
void ItPrev(const iterator& ARR_CIterator) const{--ARR_CIterator;} void ItPrev(iteratorC & ARR_CIterator) const{--ARR_CIterator;}
void ItPrev(const IterEasyID& AI_IterEasyID) void ItPrev(IterEasyIDc& AI_IterEasyID)
const{ ItPrev((const Type*&)AI_IterEasyID); } const{ ItPrev((TypeDataC*&)AI_IterEasyID); }
Type& ItD(Type* AP_Type ){return GetDataInIter(AP_Type );} TypeData & ItD(TypeData * AP_Type ) {return GetDataInIter(AP_Type );}
Type& ItD(iterator& ARR_CIterator ){return GetDataInIter(ARR_CIterator );} TypeData & ItD(iterator & ARR_CIterator ) {return GetDataInIter(ARR_CIterator );}
Type& ItD(IterEasyID ARRI_IterEasyID ){return GetDataInIter(ARRI_IterEasyID );} TypeData & ItD(IterEasyID ARRI_IterEasyID ) {return GetDataInIter(ARRI_IterEasyID );}
Type& ItD(Type* AP_Type , TypeSize AI_FarNum){return GetDataInIter(AP_Type , AI_FarNum );} TypeData & ItD(TypeData * AP_Type , TypeSize AI_FarNum) {return GetDataInIter(AP_Type , AI_FarNum );}
Type& ItD(iterator& ARR_CIterator , TypeSize AI_FarNum){return GetDataInIter(ARR_CIterator , AI_FarNum);} TypeData & ItD(iterator & ARR_CIterator , TypeSize AI_FarNum) {return GetDataInIter(ARR_CIterator , AI_FarNum);}
Type& 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 Type& ItD(const Type* AP_Type ) const{return GetDataInIter(AP_Type );} TypeDataC& ItD(TypeDataC * AP_Type ) const{return GetDataInIter(AP_Type );}
const Type& ItD(const iterator& ARR_CIterator ) const{return GetDataInIter(ARR_CIterator );} TypeDataC& ItD(iteratorC & ARR_CIterator ) const{return GetDataInIter(ARR_CIterator );}
const Type& ItD(const IterEasyID ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID );} TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID );}
const Type& ItD(const Type* AP_Type , TypeSize AI_FarNum) const{return GetDataInIter(AP_Type );} TypeDataC& ItD(TypeDataC * AP_Type , TypeSize AI_FarNum) const{return GetDataInIter(AP_Type );}
const Type& ItD(const iterator& ARR_CIterator , TypeSize AI_FarNum) const{return GetDataInIter(ARR_CIterator , AI_FarNum);} TypeDataC& ItD(iteratorC & ARR_CIterator , TypeSize AI_FarNum) const{return GetDataInIter(ARR_CIterator , AI_FarNum);}
const Type& ItD(const IterEasyID 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:
};/* };/*

View File

@ -796,7 +796,7 @@ namespace ZNsMain
public: public:
class ZCLink ; class ZCLink ;
class ZCNodePoint ; class ZCNodePoint ;
class ZCNodePointC ; class ZCNodePointN ;
public: public:
template<typename TypeObjList> friend class ZtCSortObjList; template<typename TypeObjList> friend class ZtCSortObjList;
/*********************************************************************/ /*********************************************************************/
@ -818,10 +818,10 @@ namespace ZNsMain
typedef ZCLink* IterEasy ; // 가장 간단하게 쓰일 수 있는 반복자. typedef ZCLink* IterEasy ; // 가장 간단하게 쓰일 수 있는 반복자.
typedef ZCNodePoint TypeIter ; typedef ZCNodePoint TypeIter ;
typedef ZCNodePointC TypeIterC ; typedef ZCNodePointN TypeIterN ;
/*********************************************************************/ /*********************************************************************/
typedef ZCNodePoint iterator ; // 다양한 기능을 가진 반복자. typedef ZCNodePoint iterator ; // 다양한 기능을 가진 반복자.
typedef ZCNodePointC const_iterator; typedef ZCNodePointN const_iterator;
/*********************************************************************/ /*********************************************************************/
typedef const TypeThis TypeThisC ; typedef const TypeThis TypeThisC ;
@ -835,7 +835,7 @@ namespace ZNsMain
typedef const ZCDataOpt ZCDataOptC ; typedef const ZCDataOpt ZCDataOptC ;
typedef const IterEasy IterEasyC ; typedef const IterEasy IterEasyC ;
typedef ZCNodePointC iteratorC ; typedef ZCNodePointN iteratorN ;
/*********************************************************************/ /*********************************************************************/
typedef typename TFeeeHeap:: typedef typename TFeeeHeap::
@ -1207,61 +1207,61 @@ namespace ZNsMain
class ZCNodePoint*/ class ZCNodePoint*/
class ZCNodePointC class ZCNodePointN
{ {
protected: protected:
const TypeList& mr_CurrList; const TypeList& mr_CurrList;
mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0 mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0
mutable TypeSize ml_CurrPos ; mutable TypeSize ml_CurrPos ;
public : public :
ZCNodePointC(const TypeList& AR_TypeList) : ZCNodePointN(const TypeList& AR_TypeList) :
mr_CurrList(AR_TypeList) mr_CurrList(AR_TypeList)
{ {
mp_CurrLink = AR_TypeList.HeadPtr(); mp_CurrLink = AR_TypeList.HeadPtr();
ml_CurrPos = 1 ; ml_CurrPos = 1 ;
} }
ZCNodePointC(const ZCNodePoint & rhs) : ZCNodePointN(const ZCNodePoint & rhs) :
mr_CurrList( rhs.GetMain()), mr_CurrList( rhs.GetMain()),
mp_CurrLink(&rhs.GetNode()), mp_CurrLink(&rhs.GetNode()),
ml_CurrPos ( rhs.GetPos ()) ml_CurrPos ( rhs.GetPos ())
{} {}
ZCNodePointC(const ZCNodePointC& rhs) : ZCNodePointN(const ZCNodePointN& rhs) :
mr_CurrList(rhs.mr_CurrList), mr_CurrList(rhs.mr_CurrList),
mp_CurrLink(rhs.mp_CurrLink), mp_CurrLink(rhs.mp_CurrLink),
ml_CurrPos (rhs.ml_CurrPos ) ml_CurrPos (rhs.ml_CurrPos )
{} {}
public : 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.mp_CurrLink = AR_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize; VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/ return VO_ZCLinkPoint; /****************/
}/* }/*
static ZCNodePointC MakeTailPoint(const TypeList& AR_TypeList)*/ static ZCNodePointN MakeTailPoint(const TypeList& AR_TypeList)*/
static ZCNodePointC MakeTailPoint(const ZCNodePoint& AR_TypeIter) 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.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize; VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/ return VO_ZCLinkPoint; /****************/
}/* }/*
static ZCNodePointC MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/ static ZCNodePointN MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/
static ZCNodePointC MakeTailPoint(const ZCNodePointC& 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.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize; VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/ return VO_ZCLinkPoint; /****************/
}/* }/*
static ZCNodePointC MakeTailPoint(const ZCNodePointC& AR_TypeIter)*/ static ZCNodePointN MakeTailPoint(const ZCNodePointN& AR_TypeIter)*/
public : public :
@ -1276,7 +1276,7 @@ namespace ZNsMain
bool IsEmpty() const{return mr_CurrList.size()<1;} 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;} TypeDataC& operator*() const{return **mp_CurrLink;}
@ -1284,17 +1284,17 @@ namespace ZNsMain
operator TypeNodeC& () const{return *mp_CurrLink;} operator TypeNodeC& () const{return *mp_CurrLink;}
bool operator == (const ZCNodePointC& rhs) const bool operator == (const ZCNodePointN& rhs) const
{ return ml_CurrPos == rhs.ml_CurrPos; } { return ml_CurrPos == rhs.ml_CurrPos; }
bool operator != (const ZCNodePointC& rhs) const bool operator != (const ZCNodePointN& rhs) const
{ return ml_CurrPos != rhs.ml_CurrPos; } { return ml_CurrPos != rhs.ml_CurrPos; }
bool operator > (const ZCNodePointC& rhs) const bool operator > (const ZCNodePointN& rhs) const
{ return ml_CurrPos > rhs.ml_CurrPos; } { return ml_CurrPos > rhs.ml_CurrPos; }
bool operator >= (const ZCNodePointC& rhs) const bool operator >= (const ZCNodePointN& rhs) const
{ return ml_CurrPos >= rhs.ml_CurrPos; } { return ml_CurrPos >= rhs.ml_CurrPos; }
bool operator < (const ZCNodePointC& rhs) const bool operator < (const ZCNodePointN& rhs) const
{ return ml_CurrPos < rhs.ml_CurrPos; } { return ml_CurrPos < rhs.ml_CurrPos; }
bool operator <= (const ZCNodePointC& rhs) const bool operator <= (const ZCNodePointN& rhs) const
{ return ml_CurrPos <= rhs.ml_CurrPos; } { return ml_CurrPos <= rhs.ml_CurrPos; }
bool operator == (TypeSize AL_Size) const bool operator == (TypeSize AL_Size) const
@ -1311,44 +1311,44 @@ namespace ZNsMain
{ return ml_CurrPos <= AL_Size; } { return ml_CurrPos <= AL_Size; }
const ZCNodePointC& operator++() const const ZCNodePointN& operator++() const
{ {
mp_CurrLink = mp_CurrLink->mp_NextLink; mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos; return *this ; ++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; mp_CurrLink = mp_CurrLink->mp_PrevLink;
--ml_CurrPos; return *this ; --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; mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos ; return VO_NowPoint ; ++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; mp_CurrLink = mp_CurrLink->mp_PrevLink;
--ml_CurrPos; return VO_NowPoint ; --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;} if(IsEmpty()){return *this;}
@ -1357,20 +1357,20 @@ namespace ZNsMain
return *this; /*:::::::::::::::::::::::::::*/ 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); mp_CurrLink = &((*mp_CurrLink)-AL_Distance);
ml_CurrPos -= AL_Distance ; ml_CurrPos -= AL_Distance ;
return *this; /*::::::::::::::::::::::::::*/ return *this; /*::::::::::::::::::::::::::*/
}/* }/*
const ZCNodePointC& operator-=(TypeSize AL_Distance) const*/ const ZCNodePointN& operator-=(TypeSize AL_Distance) const*/
public: public:
};/* };/*
class ZCNodePointC*/ class ZCNodePointN*/
class ZCLinkPointEx : public ZCNodePoint class ZCLinkPointEx : public ZCNodePoint
@ -3081,7 +3081,7 @@ namespace ZNsMain
{ MoveNextIter((TypeLinkC*&)(ARRI_IterEasyID)); { MoveNextIter((TypeLinkC*&)(ARRI_IterEasyID));
} }
void MoveNextIter(iterator & ARR_Iterator ) const{++ARR_Iterator;} 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 void MovePrevIter(ZCLink* & APR_CLink ) const
{ APR_CLink=APR_CLink->GetPrevPtr(); { APR_CLink=APR_CLink->GetPrevPtr();
@ -3096,7 +3096,7 @@ namespace ZNsMain
{ MovePrevIter((TypeLinkC*&)(ARRI_IterEasyID)); { MovePrevIter((TypeLinkC*&)(ARRI_IterEasyID));
} }
void MovePrevIter(iterator & ARR_Iterator ) const{--ARR_Iterator;} 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 ;} TypeData & GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
@ -3106,30 +3106,33 @@ namespace ZNsMain
TypeDataC& GetDataInIter(TypeLinkC* AP_CLink ) const TypeDataC& GetDataInIter(TypeLinkC* AP_CLink ) const
{ return **AP_CLink ; } { return **AP_CLink ; }
TypeDataC& GetDataInIter(iteratorC AR_Iterator ) const{return *AR_Iterator;} TypeDataC& GetDataInIter(iteratorN AR_Iterator ) const{return *AR_Iterator;}
TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const
{ return GetDataInIter((TypeLinkC*)ARRI_IterEasyID); } { return GetDataInIter((TypeLinkC*)ARRI_IterEasyID); }
TypeData & GetDataInIter(TypeLink* 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); }
TypeData & GetDataInIter(iterator& ARR_Iterator , TypeSize AI_FarNum) TypeData & GetDataInIter(iterator & ARR_Iterator , TypeSize AI_FarNum)
{ return GetDataInIter((ZCLink*)ARR_Iterator , AI_FarNum); } { return GetDataInIter((ZCLink*)ARR_Iterator , AI_FarNum); }
TypeDataC& GetDataInIter(TypeLinkC* 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)) ; }
TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const
{ return GetDataInIter((ZCLinkC*)ARRI_IterEasyID, AI_FarNum); } { 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); } { return GetDataInIter((ZCLinkC*)ARR_Iterator , AI_FarNum); }
iterator begin () { return ZCNodePoint (*this); } iterator begin () { return ZCNodePoint (*this); }
iteratorC begin () const{ return ZCNodePointC(*this); } iteratorN begin () const{ return ZCNodePointN(*this); }
iterator end () { return ZCNodePoint ::MakeTailPoint(*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 (); } IterEasy ItHEasy() {return GetHeadIterEasy (); }
@ -3149,7 +3152,7 @@ namespace ZNsMain
void ItNext(iterator & ARR_Iterator ) const{++ARR_Iterator;} void ItNext(iterator & ARR_Iterator ) const{++ARR_Iterator;}
void ItNext(IterEasyID & ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));} void ItNext(IterEasyID & ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));}
void ItNext(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;} void ItNext(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
void ItNext(iteratorC & ARR_Iterator ) const{++ARR_Iterator;} void ItNext(iteratorN & ARR_Iterator ) const{++ARR_Iterator;}
void ItNext(IterEasyIDc& ARRI_IterEasyID) const void ItNext(IterEasyIDc& ARRI_IterEasyID) const
{ ItNext((TypeLinkC*&)(ARRI_IterEasyID)); } { ItNext((TypeLinkC*&)(ARRI_IterEasyID)); }
@ -3157,26 +3160,26 @@ namespace ZNsMain
void ItPrev(iterator & ARR_Iterator ) const{--ARR_Iterator;} void ItPrev(iterator & ARR_Iterator ) const{--ARR_Iterator;}
void ItPrev(IterEasyID & ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));} void ItPrev(IterEasyID & ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));}
void ItPrev(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;} void ItPrev(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
void ItPrev(iteratorC & ARR_Iterator ) const{--ARR_Iterator;} void ItPrev(iteratorN & ARR_Iterator ) const{--ARR_Iterator;}
void ItPrev(IterEasyIDc& ARRI_IterEasyID) const void ItPrev(IterEasyIDc& ARRI_IterEasyID) const
{ ItPrev((TypeLinkC*&)(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 );} TypeData & ItD(iterator & ARR_Iterator ) {return GetDataInIter(ARR_Iterator );}
TypeDataC& ItD(IterEasyC AP_CLink ) const{return GetDataInIter(AP_CLink );} TypeDataC& ItD(IterEasyC AP_CLink ) const{return GetDataInIter(AP_CLink );}
TypeDataC& 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 );} 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(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);}
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(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(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);}

View File

@ -769,7 +769,7 @@ namespace ZNsMain
public: public:
class ZCLink ; class ZCLink ;
class ZCNodePoint ; class ZCNodePoint ;
class ZNodekPointC; class ZNodekPointN;
/**************************************************/ /**************************************************/
typedef TType Type ; typedef TType Type ;
typedef TType TypeData ; typedef TType TypeData ;
@ -792,10 +792,11 @@ namespace ZNsMain
typedef const TypeList TypeListC ; typedef const TypeList TypeListC ;
typedef const TypeLink TypeLinkC ; typedef const TypeLink TypeLinkC ;
typedef const TypeNode TypeNodeC ; typedef const TypeNode TypeNodeC ;
typedef const TypeIter TypeIterC ;
/**************************************************/ /**************************************************/
typedef ZCNodePoint iterator ; typedef ZCNodePoint iterator ;
typedef ZNodekPointC const_iterator ; typedef ZNodekPointN const_iterator ;
typedef ZNodekPointC iteratorC ; typedef ZNodekPointN iteratorN ;
/**************************************************/ /**************************************************/
typedef typename TFeeeHeap:: typedef typename TFeeeHeap::
template ZtCBody<ZtCSimList> ZCFreeHeap; template ZtCBody<ZtCSimList> ZCFreeHeap;
@ -1098,61 +1099,61 @@ namespace ZNsMain
class ZCNodePoint*/ class ZCNodePoint*/
class ZNodekPointC class ZNodekPointN
{ {
protected: protected:
const TypeList& mr_CurrList; const TypeList& mr_CurrList;
mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0 mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0
mutable TypeSize ml_CurrPos ; mutable TypeSize ml_CurrPos ;
public : public :
ZNodekPointC(const TypeList& AR_TypeList) : ZNodekPointN(const TypeList& AR_TypeList) :
mr_CurrList(AR_TypeList) mr_CurrList(AR_TypeList)
{ {
mp_CurrLink = AR_TypeList.HeadPtr(); mp_CurrLink = AR_TypeList.HeadPtr();
ml_CurrPos = 1 ; ml_CurrPos = 1 ;
} }
ZNodekPointC(const ZCNodePoint & rhs) : ZNodekPointN(const ZCNodePoint & rhs) :
mr_CurrList( rhs.GetMain()), mr_CurrList( rhs.GetMain()),
mp_CurrLink(&rhs.GetNode()), mp_CurrLink(&rhs.GetNode()),
ml_CurrPos ( rhs.GetPos ()) ml_CurrPos ( rhs.GetPos ())
{} {}
ZNodekPointC(const ZNodekPointC& rhs) : ZNodekPointN(const ZNodekPointN& rhs) :
mr_CurrList(rhs.mr_CurrList), mr_CurrList(rhs.mr_CurrList),
mp_CurrLink(rhs.mp_CurrLink), mp_CurrLink(rhs.mp_CurrLink),
ml_CurrPos (rhs.ml_CurrPos ) ml_CurrPos (rhs.ml_CurrPos )
{} {}
public : public :
static ZNodekPointC MakeTailPoint(const TypeList& AR_TypeList) static ZNodekPointN MakeTailPoint(const TypeList& AR_TypeList)
{ {
ZNodekPointC VO_ZCLinkPoint(AR_TypeList); ZNodekPointN VO_ZCLinkPoint(AR_TypeList);
VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink; VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize; VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/ return VO_ZCLinkPoint; /****************/
}/* }/*
static ZNodekPointC MakeTailPoint(const TypeList& AR_TypeList)*/ static ZNodekPointN MakeTailPoint(const TypeList& AR_TypeList)*/
static ZNodekPointC MakeTailPoint(const ZCNodePoint& AR_TypeIter) static ZNodekPointN MakeTailPoint(const ZCNodePoint& AR_TypeIter)
{ {
ZNodekPointC VO_ZCLinkPoint(AR_TypeIter); ZNodekPointN VO_ZCLinkPoint(AR_TypeIter);
VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink; VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize; VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/ return VO_ZCLinkPoint; /****************/
}/* }/*
static ZNodekPointC MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/ static ZNodekPointN MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/
static ZNodekPointC MakeTailPoint(const ZNodekPointC& AR_TypeIter) static ZNodekPointN MakeTailPoint(const ZNodekPointN& AR_TypeIter)
{ {
ZNodekPointC VO_ZCLinkPoint(AR_TypeIter); ZNodekPointN VO_ZCLinkPoint(AR_TypeIter);
VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink; VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize; VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/ return VO_ZCLinkPoint; /****************/
}/* }/*
static ZNodekPointC MakeTailPoint(const ZNodekPointC& AR_TypeIter)*/ static ZNodekPointN MakeTailPoint(const ZNodekPointN& AR_TypeIter)*/
public : public :
@ -1167,7 +1168,7 @@ namespace ZNsMain
bool IsEmpty() const{return mr_CurrList.size()<1;} bool IsEmpty() const{return mr_CurrList.size()<1;}
ZNodekPointC& operator= (const ZNodekPointC& rhs){ return *this; } ZNodekPointN& operator= (const ZNodekPointN& rhs){ return *this; }
TypeDataC& operator*() const{return **mp_CurrLink;} TypeDataC& operator*() const{return **mp_CurrLink;}
@ -1175,17 +1176,17 @@ namespace ZNsMain
operator TypeLinkC& () const{return *mp_CurrLink;} operator TypeLinkC& () const{return *mp_CurrLink;}
bool operator == (const ZNodekPointC& rhs) const bool operator == (const ZNodekPointN& rhs) const
{ return ml_CurrPos == rhs.ml_CurrPos; } { return ml_CurrPos == rhs.ml_CurrPos; }
bool operator != (const ZNodekPointC& rhs) const bool operator != (const ZNodekPointN& rhs) const
{ return ml_CurrPos != rhs.ml_CurrPos; } { return ml_CurrPos != rhs.ml_CurrPos; }
bool operator > (const ZNodekPointC& rhs) const bool operator > (const ZNodekPointN& rhs) const
{ return ml_CurrPos > rhs.ml_CurrPos; } { return ml_CurrPos > rhs.ml_CurrPos; }
bool operator >= (const ZNodekPointC& rhs) const bool operator >= (const ZNodekPointN& rhs) const
{ return ml_CurrPos >= rhs.ml_CurrPos; } { return ml_CurrPos >= rhs.ml_CurrPos; }
bool operator < (const ZNodekPointC& rhs) const bool operator < (const ZNodekPointN& rhs) const
{ return ml_CurrPos < rhs.ml_CurrPos; } { return ml_CurrPos < rhs.ml_CurrPos; }
bool operator <= (const ZNodekPointC& rhs) const bool operator <= (const ZNodekPointN& rhs) const
{ return ml_CurrPos <= rhs.ml_CurrPos; } { return ml_CurrPos <= rhs.ml_CurrPos; }
bool operator == (TypeSize AL_Size) const bool operator == (TypeSize AL_Size) const
@ -1202,26 +1203,26 @@ namespace ZNsMain
{ return ml_CurrPos <= AL_Size; } { return ml_CurrPos <= AL_Size; }
const ZNodekPointC& operator++() const const ZNodekPointN& operator++() const
{ {
mp_CurrLink = mp_CurrLink->mp_NextLink; mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos; return *this ; ++ml_CurrPos; return *this ;
}/* }/*
const ZNodekPointC& operator++() const*/ const ZNodekPointN& operator++() const*/
ZNodekPointC operator++(int) const ZNodekPointN operator++(int) const
{ {
ZNodekPointC VO_NowPoint(*this); ZNodekPointN VO_NowPoint(*this);
mp_CurrLink = mp_CurrLink->mp_NextLink; mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos ; return VO_NowPoint ; ++ml_CurrPos ; return VO_NowPoint ;
}/* }/*
ZNodekPointC operator++(int) const*/ ZNodekPointN operator++(int) const*/
const ZNodekPointC& operator+=(TypeSize AL_Distance) const const ZNodekPointN& operator+=(TypeSize AL_Distance) const
{ {
if(IsEmpty()){return *this;} if(IsEmpty()){return *this;}
@ -1230,11 +1231,11 @@ namespace ZNsMain
return *this; /*:::::::::::::::::::::::::::*/ return *this; /*:::::::::::::::::::::::::::*/
}/* }/*
const ZNodekPointC& operator+=(TypeSize AL_Distance) const*/ const ZNodekPointN& operator+=(TypeSize AL_Distance) const*/
public: public:
};/* };/*
class ZNodekPointC*/ class ZNodekPointN*/
public : public :
@ -2318,7 +2319,7 @@ namespace ZNsMain
void MoveNextIter(iterator & ARR_iterator) void MoveNextIter(iterator & ARR_iterator)
{ ++ARR_iterator ; } { ++ARR_iterator ; }
void MoveNextIter(iteratorC& ARR_iterator) const void MoveNextIter(iteratorN& ARR_iterator) const
{ ++ARR_iterator ; } { ++ARR_iterator ; }
@ -2337,7 +2338,7 @@ namespace ZNsMain
TypeDataC& GetDataInIter(IterEasyIDc APPI_IterEasyID) const TypeDataC& GetDataInIter(IterEasyIDc APPI_IterEasyID) const
{ return GetDataInIter((ZCLinkC*)APPI_IterEasyID) ; } { return GetDataInIter((ZCLinkC*)APPI_IterEasyID) ; }
TypeDataC& GetDataInIter(iteratorC& ARR_iterator) const TypeDataC& GetDataInIter(iteratorN& ARR_iterator) const
{ return *ARR_iterator ; } { return *ARR_iterator ; }
@ -2369,7 +2370,7 @@ namespace ZNsMain
void ItNext(IterEasyIDc& APPI_IterEasyID) const void ItNext(IterEasyIDc& APPI_IterEasyID) const
{ MoveNextIter(APPI_IterEasyID) ; } { MoveNextIter(APPI_IterEasyID) ; }
void ItNext(iteratorC& ARR_Iterator ) const void ItNext(iteratorN& ARR_Iterator ) const
{ ++ARR_Iterator ; } { ++ARR_Iterator ; }
@ -2388,14 +2389,17 @@ namespace ZNsMain
TypeDataC& ItD(IterEasyIDc APPI_IterEasyID ) const TypeDataC& ItD(IterEasyIDc APPI_IterEasyID ) const
{ return ItD((ZCLinkC*)APPI_IterEasyID); } { return ItD((ZCLinkC*)APPI_IterEasyID); }
TypeDataC& ItD(iteratorC& ARR_Iterator ) const TypeDataC& ItD(iteratorN& ARR_Iterator ) const
{ return *ARR_Iterator; } { return *ARR_Iterator; }
iterator begin () { return ZCNodePoint (*this); } iterator begin () { return ZCNodePoint (*this); }
iteratorC begin () const{ return ZNodekPointC(*this); } iteratorN begin () const{ return ZNodekPointN(*this); }
iterator end () { return ZCNodePoint ::MakeTailPoint(*this); } iterator end () { return ZCNodePoint ::MakeTailPoint(*this); }
iteratorC end () const{ return ZNodekPointC::MakeTailPoint(*this); } iteratorN end () const{ return ZNodekPointN::MakeTailPoint(*this); }
iteratorN cbegin() const{ return ZNodekPointN(*this); }
iteratorN cend () const{ return ZNodekPointN::MakeTailPoint(*this); }
ZCLink * HeadPtr() {return mp_HeadLink;} ZCLink * HeadPtr() {return mp_HeadLink;}

View File

@ -691,6 +691,12 @@ namespace ZNsMain
cout<<VO_Iter.GetPos()<<" : "<<*VO_Iter<<endl; cout<<VO_Iter.GetPos()<<" : "<<*VO_Iter<<endl;
} }
cout<<endl<<"# VO_ZCBaseListEx10_2 for_ic() show "<<endl;
__for_ic(ZCBaseListEx10, VO_ZCBaseListEx10_2, VO_Iter)
{
cout<<VO_Iter.GetPos()<<" : "<<*VO_Iter<<endl;
}
return 0; return 0;
}/* }/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/ static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/

View File

@ -369,15 +369,15 @@ namespace ZNsMain
typedef CStringList1::iterator iterator1 ; typedef CStringList1::iterator iterator1 ;
//typedef CStringList1::ZCLinkPointEx iteratorEx1; //typedef CStringList1::ZCLinkPointEx iteratorEx1;
typedef CStringList1::ZCNodePointC iteratorC1 ; typedef CStringList1::ZCNodePointN iteratorN1 ;
iterator1 VO_Iter1 = VO_ListOfStr11.end(); iterator1 VO_Iter1 = VO_ListOfStr11.end();
//iteratorEx1 VO_IterEx1 = VO_ListOfStr11.end(); //iteratorEx1 VO_IterEx1 = VO_ListOfStr11.end();
iteratorC1 VO_IterC1(VO_Iter1); iteratorN1 VO_IterN1(VO_Iter1);
__for_i (CStringList1, VO_ListOfStr11, VO_NowIter) __for_ic (CStringList1, VO_ListOfStr11, VO_NowIter)
{ {
cout<<"(by for_i ) "<<VO_NowIter.GetPos()<<" : "<<*VO_NowIter<<endl; cout<<"(by for_ic ) "<<VO_NowIter.GetPos()<<" : "<<*VO_NowIter<<endl;
} }
__for_i_r(CStringList1, VO_ListOfStr11, VO_NowIter) __for_i_r(CStringList1, VO_ListOfStr11, VO_NowIter)
{ {