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) \
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 :
};/*

View File

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

View File

@ -796,7 +796,7 @@ namespace ZNsMain
public:
class ZCLink ;
class ZCNodePoint ;
class ZCNodePointC ;
class ZCNodePointN ;
public:
template<typename TypeObjList> friend class ZtCSortObjList;
/*********************************************************************/
@ -818,10 +818,10 @@ namespace ZNsMain
typedef ZCLink* IterEasy ; // 가장 간단하게 쓰일 수 있는 반복자.
typedef ZCNodePoint TypeIter ;
typedef ZCNodePointC TypeIterC ;
typedef ZCNodePointN TypeIterN ;
/*********************************************************************/
typedef ZCNodePoint iterator ; // 다양한 기능을 가진 반복자.
typedef ZCNodePointC const_iterator;
typedef ZCNodePointN const_iterator;
/*********************************************************************/
typedef const TypeThis TypeThisC ;
@ -835,7 +835,7 @@ namespace ZNsMain
typedef const ZCDataOpt ZCDataOptC ;
typedef const IterEasy IterEasyC ;
typedef ZCNodePointC iteratorC ;
typedef ZCNodePointN iteratorN ;
/*********************************************************************/
typedef typename TFeeeHeap::
@ -1207,61 +1207,61 @@ namespace ZNsMain
class ZCNodePoint*/
class ZCNodePointC
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 :
@ -1276,7 +1276,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;}
@ -1284,17 +1284,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
@ -1311,44 +1311,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;}
@ -1357,20 +1357,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
@ -3081,7 +3081,7 @@ namespace ZNsMain
{ 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
{ APR_CLink=APR_CLink->GetPrevPtr();
@ -3096,7 +3096,7 @@ namespace ZNsMain
{ 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 ;}
@ -3106,30 +3106,33 @@ namespace ZNsMain
TypeDataC& GetDataInIter(TypeLinkC* AP_CLink ) const
{ 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
{ 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)) ; }
TypeData & GetDataInIter(IterEasyID ARRI_IterEasyID, TypeSize 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); }
TypeDataC& GetDataInIter(TypeLinkC* AP_CLink , TypeSize AI_FarNum) const
{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 (); }
@ -3149,7 +3152,7 @@ namespace ZNsMain
void ItNext(iterator & ARR_Iterator ) const{++ARR_Iterator;}
void ItNext(IterEasyID & ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));}
void ItNext(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
void ItNext(iteratorC & ARR_Iterator ) const{++ARR_Iterator;}
void ItNext(iteratorN & ARR_Iterator ) const{++ARR_Iterator;}
void ItNext(IterEasyIDc& ARRI_IterEasyID) const
{ ItNext((TypeLinkC*&)(ARRI_IterEasyID)); }
@ -3157,26 +3160,26 @@ namespace ZNsMain
void ItPrev(iterator & ARR_Iterator ) const{--ARR_Iterator;}
void ItPrev(IterEasyID & ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));}
void ItPrev(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
void ItPrev(iteratorC & ARR_Iterator ) const{--ARR_Iterator;}
void ItPrev(iteratorN & ARR_Iterator ) const{--ARR_Iterator;}
void ItPrev(IterEasyIDc& ARRI_IterEasyID) const
{ ItPrev((TypeLinkC*&)(ARRI_IterEasyID)); }
TypeData & ItD(IterEasy AP_CLink ) {return GetDataInIter(AP_CLink );}
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(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);}
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(iteratorN& ARR_Iterator , TypeSize AI_FarNum) const{return GetDataInIter(ARR_Iterator , AI_FarNum);}

View File

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

View File

@ -691,6 +691,12 @@ namespace ZNsMain
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;
}/*
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::ZCLinkPointEx iteratorEx1;
typedef CStringList1::ZCNodePointC iteratorC1 ;
typedef CStringList1::ZCNodePointN iteratorN1 ;
iterator1 VO_Iter1 = 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)
{