commit 2025-10-12 18:51 add iterator class in ZCppMain/ZtCObjList.H

This commit is contained in:
2025-10-12 18:51:35 +09:00
parent 3259618f1e
commit 2c2b664d15
5 changed files with 359 additions and 448 deletions

View File

@ -5672,21 +5672,27 @@ namespace ZNsMain
public:
class ZCLink; class ZCLinkPoint; class ZCLinkRange;
public:
typedef ZtCBaseList TypeThis ;
typedef ZtCBaseList TypeList ;
typedef TType TypeData ;
typedef TTypArgu TypeArg ;
typedef TTypeAlloc TypeAlloc ;
typedef TTypSize TypeSize ;
typedef TMoveObj TypeMoveObj ;
typedef ZCLink TypeLink ;
typedef ZCLinkPoint TypeLinkPoint ;
typedef ZCLinkRange TypeLinkRange ;
typedef ZCLink* IterEasy ; // 가장 쉽게 쓸 수 있는 반복자.
typedef TypeLinkPoint iterator ; // 다양한 기능을 가진 반복자.
public:
typedef ZtCObjOpt<ZCLink > ZCLinkOpt;
typedef ZtCObjOpt<TypeData> ZCDataOpt;
typedef ZtCBaseList TypeThis ;
typedef ZtCBaseList TypeList ;
typedef TType TypeData ;
typedef TTypArgu TypeArg ;
typedef TTypeAlloc TypeAlloc ;
typedef TTypSize TypeSize ;
typedef TMoveObj TypeMoveObj ;
typedef ZCLink TypeLink ;
typedef ZCLinkPoint TypeLinkPoint ;
typedef ZCLinkRange TypeLinkRange ;
/*************************************************************************/
typedef ZCLink* IterEasy ; // 가장 쉽게 쓸 수 있는 반복자.
typedef ZCLinkPoint iterator ; // 다양한 기능을 가진 반복자.
/*************************************************************************/
typedef const TypeData TypeDataC ;
typedef const ZCLink TypeLinkC ;
typedef const iterator iteratorC ;
typedef const IterEasy IterEasyC ;
/*************************************************************************/
typedef ZtCObjOpt<ZCLink > ZCLinkOpt ;
typedef ZtCObjOpt<TypeData> ZCDataOpt ;
public:
typedef ZNsType::ZtCTypeNowCRTP ///////////////////////////////////////
@ -5818,9 +5824,9 @@ namespace ZNsMain
class ZCLinkPoint
{
private:
TypeLink* mp_CurrLink; // 사실상 mp_CurrLink!=0
TypeSize ml_CurrPos ;
TypeList& mr_CurrList;
mutable TypeLink* mp_CurrLink; // 사실상 mp_CurrLink!=0
mutable TypeSize ml_CurrPos ;
/*****/ TypeList& mr_CurrList;
public:
ZCLinkPoint(TypeList& AR_TypeList) :
mr_CurrList(AR_TypeList)
@ -5851,7 +5857,10 @@ namespace ZNsMain
ZCLinkPoint& operator= (const ZCLinkPoint& rhs){ return *this; }
ZCLinkPoint& operator++()
/***/ TypeData& operator*() {return **mp_CurrLink;}
const TypeData& operator*() const{return **mp_CurrLink;}
ZCLinkPoint& operator++() const
{
if(IsEmpty()){return *this;}
@ -5861,9 +5870,9 @@ namespace ZNsMain
{ ml_CurrPos -= mr_CurrList.size(); }
return *this; /*******************/
}/*
ZCLinkPoint& operator++()*/
ZCLinkPoint& operator++() const*/
ZCLinkPoint& operator--()
ZCLinkPoint& operator--() const
{
if(IsEmpty()){return *this;}
@ -5873,9 +5882,9 @@ namespace ZNsMain
{ ml_CurrPos += mr_CurrList.size(); }
return *this;
}/*
ZCLinkPoint& operator--()*/
ZCLinkPoint& operator--() const*/
ZCLinkPoint operator++(int)
ZCLinkPoint operator++(int) const
{
ZCLinkPoint VO_NowPoint(*this);
@ -5887,9 +5896,9 @@ namespace ZNsMain
{ ml_CurrPos -= mr_CurrList.size(); }
return VO_NowPoint; /*************/
}/*
ZCLinkPoint operator++(int)*/
ZCLinkPoint operator++(int) const*/
ZCLinkPoint operator--(int)
ZCLinkPoint operator--(int) const
{
ZCLinkPoint VO_NowPoint(*this);
@ -5901,10 +5910,10 @@ namespace ZNsMain
{ ml_CurrPos += mr_CurrList.size(); }
return VO_NowPoint;
}/*
ZCLinkPoint operator--(int)*/
ZCLinkPoint operator--(int) const*/
ZCLinkPoint& operator+=(TypeSize AL_Distance)
ZCLinkPoint& operator+=(TypeSize AL_Distance) const
{
if(IsEmpty()){return *this;}
@ -5916,9 +5925,9 @@ namespace ZNsMain
{ while(ml_CurrPos+= mr_CurrList.size()<1){} }
return *this; /**********************/
}/*
ZCLinkPoint& operator+=(TypeSize AL_Distance)*/
ZCLinkPoint& operator+=(TypeSize AL_Distance) const*/
ZCLinkPoint& operator-=(TypeSize AL_Distance)
ZCLinkPoint& operator-=(TypeSize AL_Distance) const
{
if(IsEmpty()){return *this;}
@ -5930,261 +5939,13 @@ namespace ZNsMain
{ while(ml_CurrPos+= mr_CurrList.size()<1){} }
return *this; /***********************/
}/*
ZCLinkPoint& operator-=(TypeSize AL_Distance)*/
ZCLinkPoint& MoveAfter(ZCLinkPoint& rhs, bool AB_Forward=true)
{
if(IsEmpty()){return *this;}
ZCLink* VP_HereLink = /////////////////
(
AB_Forward
? mp_CurrLink->mp_NextLink
: mp_CurrLink->mp_PrevLink
) ;
///////////////////////////////////////
if(&mr_CurrList!=&rhs.mr_CurrList)
{
mr_CurrList.SendOutAfter /********/
(
*mp_CurrLink ,
rhs.mr_CurrList ,
ZCLinkOpt(*rhs.mp_CurrLink)
);
/*********************************/
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
}/*
if(&mr_CurrList!=&rhs.mr_CurrList)*/
// &mr_CurrList == &rhs.mr_CurrList
else if(rhs.mp_CurrLink==mp_CurrLink)
{
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
}/*
else if(rhs.mp_CurrLink==mp_CurrLink)*/
else if(rhs.mp_CurrLink->mp_NextLink==mp_CurrLink)
{
// 이미 rhs 의 뒤에 *this 가 있는 경우.
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
}/*
else if(rhs.mp_CurrLink->mp_NextLink==mp_CurrLink)*/
else if(mp_CurrLink->mp_NextLink==rhs.mp_CurrLink)
{
// *this 뒤에 rhs 가 있어서 위치를 맞바꾸는 경우.
mr_CurrList.SwapLinkNext( *mp_CurrLink ) ;
if(--rhs.ml_CurrPos<1)
{ rhs.ml_CurrPos += rhs.mr_CurrList.size(); }
if(AB_Forward)
{
++ml_CurrPos; VP_HereLink = mp_CurrLink;
}
else{ --ml_CurrPos; }
}/*
else if(mp_CurrLink->mp_NextLink==rhs.mp_CurrLink)*/
else //////////////////////////////////////////
{
if(ml_CurrPos<rhs.ml_CurrPos)
{ --rhs.ml_CurrPos; }
mr_CurrList.SendOutAfter /****************/
(
*mp_CurrLink, mr_CurrList, ZCLinkOpt(*mp_CurrLink)
);
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
}
rhs.mp_CurrLink = VP_HereLink ; return *this ;
}/*
ZCLinkPoint& MoveAfter (ZCLinkPoint& rhs, bool AB_Forward=true)*/
ZCLinkPoint& MoveBefore(ZCLinkPoint& rhs, bool AB_Forward=true)
{
if(IsEmpty()){return *this;}
ZCLink* VP_HereLink = /////////////////
(
AB_Forward
? mp_CurrLink->mp_NextLink
: mp_CurrLink->mp_PrevLink
) ;
///////////////////////////////////////
if(&mr_CurrList!=&rhs.mr_CurrList)
{
mr_CurrList.SendOutBefore /*******/
(
*mp_CurrLink ,
rhs.mr_CurrList ,
ZCLinkOpt(*rhs.mp_CurrLink)
);
/*********************************/
if(!AB_Forward)
{ml_CurrPos = ml_CurrPos-1;}
++rhs.ml_CurrPos ;
}/*
if(&mr_CurrList!=&rhs.mr_CurrList)*/
// &mr_CurrList == &rhs.mr_CurrList
else if(rhs.mp_CurrLink==mp_CurrLink)
{
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
}/*
else if(rhs.mp_CurrLink==mp_CurrLink)*/
else if(rhs.mp_CurrLink->mp_PrevLink==mp_CurrLink)
{
// 이미 rhs 의 앞에 *this 가 있는 경우.
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
}/*
else if(rhs.mp_CurrLink->mp_PrevLink==mp_CurrLink)*/
else if(mp_CurrLink->mp_PrevLink==rhs.mp_CurrLink)
{
// *this 앞에 rhs 가 있어서 위치를 맞바꾸는 경우.
rhs.mr_CurrList.SwapLinkNext(*rhs.mp_CurrLink) ;
if(++rhs.ml_CurrPos>rhs.mr_CurrList.size())
{ rhs.ml_CurrPos -= rhs.mr_CurrList.size(); }
if(AB_Forward){ ++ml_CurrPos; } else
{ --ml_CurrPos; VP_HereLink = mp_CurrLink; }
}/*
else if(mp_CurrLink->mp_PrevLink==rhs.mp_CurrLink)*/
else //////////////////////////////////////////
{
if(ml_CurrPos>rhs.ml_CurrPos)
{ ++rhs.ml_CurrPos; }
mr_CurrList.SendOutBefore /***************/
(
*mp_CurrLink, mr_CurrList, ZCLinkOpt(*mp_CurrLink)
);
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
}
rhs.mp_CurrLink = VP_HereLink ; return *this ;
}/*
ZCLinkPoint& MoveBefore(ZCLinkPoint& rhs, bool AB_Forward=true)*/
ZCLinkPoint& MoveHead(TypeList& AR_RhsList, bool AB_Forward=true)
{
if(IsEmpty()){return *this;}
ZCLink* VP_HereLink = /////////////////
(
AB_Forward
? mp_CurrLink->mp_NextLink
: mp_CurrLink->mp_PrevLink
) ;
///////////////////////////////////////
if(&mr_CurrList!=&AR_RhsList)
{
mr_CurrList.SendOutAfter /********/
(
*mp_CurrLink, AR_RhsList, ZCLinkOpt(0)
);
/*********************************/
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
}/*
if(&mr_CurrList!=&rhs.mr_CurrList)*/
// &mr_CurrList == &rhs.mr_CurrList
else if(mr_CurrList.mp_HeadLink==mp_CurrLink)
{
// *this 가 이미 머리인 경우.
if(AB_Forward){++ml_CurrPos;}else{--ml_CurrPos;}
}/*
else if(rhs.mp_CurrLink->mp_NextLink==mp_CurrLink)*/
else //////////////////////////////////////////
{
mr_CurrList.SendOutAfter /****************/
(
*mp_CurrLink, mr_CurrList, ZCLinkOpt(*mp_CurrLink)
);
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
}
mp_CurrLink = VP_HereLink ; return *this ;
}/*
ZCLinkPoint& MoveHead(TypeList& AR_RhsList, bool AB_Forward=true)*/
ZCLinkPoint& MoveTail(TypeList& AR_RhsList, bool AB_Forward=true)
{
if(IsEmpty()){return *this;}
ZCLink* VP_HereLink = /////////////////
(
AB_Forward
? mp_CurrLink->mp_NextLink
: mp_CurrLink->mp_PrevLink
) ;
///////////////////////////////////////
if(&mr_CurrList!=&AR_RhsList)
{
mr_CurrList.SendOutBefore /*******/
(
*mp_CurrLink, AR_RhsList, ZCLinkOpt(0)
);
/*********************************/
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
}/*
if(&mr_CurrList!=&rhs.mr_CurrList)*/
// &mr_CurrList == &rhs.mr_CurrList
else if(AR_RhsList.mp_TailLink==mp_CurrLink)
{
// 이미 *this 가 꼬리인 경우.
if(AB_Forward){ml_CurrPos=1;}else{--ml_CurrPos;}
}/*
else if(AR_RhsList.mp_TailLink==mp_CurrLink)*/
else //////////////////////////////////////////
{
mr_CurrList.SendOutAfter /****************/
(
*mp_CurrLink, mr_CurrList, ZCLinkOpt(*mp_CurrLink)
);
if(!AB_Forward){ml_CurrPos = ml_CurrPos-1;}
}
mp_CurrLink = VP_HereLink ; return *this ;
}/*
ZCLinkPoint& MoveTail(TypeList& AR_RhsList, bool AB_Forward=true)*/
ZCLinkPoint& operator-=(TypeSize AL_Distance) const*/
public:
};/*
class ZCLinkPoint*/
public :
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
private :
@ -8419,103 +8180,109 @@ namespace ZNsMain
IterEasyIDc GetHeadIterEasyIDc() const{return (IterEasyIDc)GetHeadLinkPtr();}
IterEasyIDc GetTailIterEasyIDc() const{return (IterEasyIDc)GetTailLinkPtr();}
void MoveNextIter(ZCLink*& APR_CLink ) const
{
APR_CLink=APR_CLink->GetNextPtr();
}
void MoveNextIter(IterEasyID& ARRI_IterEasyID) const
{
MoveNextIter((ZCLink*&)(ARRI_IterEasyID));
}
void MoveNextIter(const ZCLink*& APR_CLink ) const
{
APR_CLink=APR_CLink->GetNextPtr();
}
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID) const
{
MoveNextIter((const ZCLink*&)(ARRI_IterEasyID));
}/*
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID) const*/
void MoveNextIter(ZCLink* & APR_CLink ) const
{ APR_CLink=APR_CLink->GetNextPtr();
}
void MoveNextIter(IterEasyID & ARRI_IterEasyID ) const
{ MoveNextIter((ZCLink*&)(ARRI_IterEasyID));
}
void MoveNextIter(TypeLinkC* & APR_CLink ) const
{ APR_CLink=APR_CLink->GetNextPtr();
}
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 MovePrevIter(ZCLink*& APR_CLink ) const
{
APR_CLink=APR_CLink->GetPrevPtr();
}
void MovePrevIter(IterEasyID& ARRI_IterEasyID) const
{
MovePrevIter((ZCLink*&)(ARRI_IterEasyID));
}
void MovePrevIter(const ZCLink*& APR_CLink ) const
{
APR_CLink=APR_CLink->GetPrevPtr();
}
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID) const
{
MovePrevIter((const ZCLink*&)(ARRI_IterEasyID));
}/*
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID) const*/
void MovePrevIter(ZCLink* & APR_CLink ) const
{ APR_CLink=APR_CLink->GetPrevPtr();
}
void MovePrevIter(IterEasyID & ARRI_IterEasyID ) const
{ MovePrevIter((ZCLink*&)(ARRI_IterEasyID));
}
void MovePrevIter(TypeLinkC* & APR_CLink ) const
{ APR_CLink=APR_CLink->GetPrevPtr();
}
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;}
TypeData& GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
TypeData& GetDataInIter(IterEasyID ARRI_IterEasyID)
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID); }
TypeData & GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
TypeData & GetDataInIter(IterEasyID ARRI_IterEasyID )
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID ); }
TypeData & GetDataInIter(iterator& ARR_Iterator ){return *ARR_Iterator;}
const TypeData& GetDataInIter(const ZCLink* AP_CLink ) const
{ return **AP_CLink ; }
const TypeData& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const
{ return GetDataInIter((const ZCLink*)ARRI_IterEasyID); }
TypeDataC& GetDataInIter(TypeLinkC* AP_CLink ) const
{ return **AP_CLink ;}
TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID ) const
{ return GetDataInIter((TypeLinkC*)ARRI_IterEasyID); }
TypeDataC& GetDataInIter(iteratorC& ARR_Iterator )
{ return *ARR_Iterator;}
TypeData& GetDataInIter( ZCLink* AP_CLink , TypeSize AI_FarNum)
TypeData & GetDataInIter( ZCLink* AP_CLink , TypeSize 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); }
const TypeData& GetDataInIter( const ZCLink* AP_CLink , TypeSize AI_FarNum) const
TypeDataC& GetDataInIter( TypeLinkC* AP_CLink , TypeSize AI_FarNum) const
{return **(AP_CLink->GetNextPrePtr(AI_FarNum)) ; }
const TypeData& GetDataInIter( IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const
TypeDataC& GetDataInIter( IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID, AI_FarNum); }
IterEasy ItHEasy(){return GetHeadIterEasy ();}
IterEasy ItTEasy(){return GetTailIterEasy ();}
IterEasyID ItHID (){return GetHeadIterEasyID();}
IterEasyID ItTID (){return GetTailIterEasyID();}
IterEasyIDc ItHIDc () const{return GetHeadIterEasyIDc();}
IterEasyIDc ItTIDc () const{return GetTailIterEasyIDc();}
const IterEasy ItHEasy() const{return GetHeadIterEasy ();}
const IterEasy ItTEasy() const{return GetTailIterEasy ();}
const IterEasyID ItHID () const{return GetHeadIterEasyID ();}
const IterEasyID ItTID () const{return GetTailIterEasyID ();}
void ItNext(ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
void ItNext(IterEasyID& ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));}
void ItNext(const ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
void ItNext(IterEasyIDc& ARRI_IterEasyID) const
{ ItNext((const ZCLink*&)(ARRI_IterEasyID)); }
void ItPrev(ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
void ItPrev(IterEasyID& ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));}
void ItPrev(const ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
void ItPrev(IterEasyIDc& ARRI_IterEasyID) const
{ ItPrev((const ZCLink*&)(ARRI_IterEasyID)); }
TypeData& ItD(IterEasy AP_CLink ){return GetDataInIter(AP_CLink );}
TypeData& ItD(IterEasyID ARRI_IterEasyID){return GetDataInIter(ARRI_IterEasyID);}
const TypeData& ItD(const IterEasy AP_CLink ) const{return GetDataInIter(AP_CLink );}
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID);}
iterator begin() {return ZCLinkPoint(*this); }
iteratorC begin() const {return ZCLinkPoint(*this); }
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);}
IterEasy ItHEasy() {return GetHeadIterEasy ();}
IterEasy ItTEasy() {return GetTailIterEasy ();}
IterEasyID ItHID () {return GetHeadIterEasyID ();}
IterEasyID ItTID () {return GetTailIterEasyID ();}
const TypeData& ItD(const IterEasy AP_CLink , TypeSize AI_FarNum) const{return GetDataInIter(AP_CLink , AI_FarNum);}
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID , TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
IterEasyIDc ItHIDc () const{return GetHeadIterEasyIDc();}
IterEasyIDc ItTIDc () const{return GetTailIterEasyIDc();}
IterEasyC ItHEasy() const{return GetHeadIterEasy ();}
IterEasyC ItTEasy() const{return GetTailIterEasy ();}
IterEasyIDc ItHID () const{return GetHeadIterEasyID ();}
IterEasyIDc ItTID () const{return GetTailIterEasyID ();}
void ItNext(ZCLink* & APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;}
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(IterEasyIDc& ARRI_IterEasyID) const
{ ItNext((TypeLinkC*&)(ARRI_IterEasyID)); }
void ItPrev(ZCLink* & APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
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(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 );}
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 );}
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);}
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);}
public :
};/*