commit 2025-10-13 16:33 add ZCLinkPoint for iterator ZCppMain/ZtCSimList.H

This commit is contained in:
2025-10-13 16:33:44 +09:00
parent df8ffa6024
commit e34ad6cfb1
4 changed files with 435 additions and 172 deletions

View File

@ -470,19 +470,31 @@ using namespace std;
#define __forD1(i, LoopCount) for(i=1; i<=LoopCount; ++i)
#define __for_iter( IterClass, IterObj, IterVar) \
#define __for_i( IterClass, IterObj, IterVar) \
for ( \
typename IterClass:: iterator \
IterVar=IterObj.begin(); \
IterVar<=IterObj.size(); ++IterVar \
)
#define __for_iterc(IterClass, IterObj, IterVar) \
#define __for_ic(IterClass, IterObj, IterVar) \
for ( \
typename IterClass::const_iterator \
IterVar=IterObj.begin(); \
IterVar<=IterObj.size(); ++IterVar \
)
#define __for_i_r( IterClass, IterObj, IterVar) \
for ( \
typename IterClass:: iterator \
IterVar=IterObj.end(); \
IterVar>0; --IterVar \
)
#define __for_i_rc(IterClass, IterObj, IterVar) \
for ( \
typename IterClass::const_iterator \
IterVar=IterObj.end(); \
IterVar>0; --IterVar \
)
namespace ZNsMain

View File

@ -767,16 +767,35 @@ namespace ZNsMain
class ZtCSimList /*##########################################################*/
{
public:
typedef TType Type ;
typedef TType TypeData ;
typedef TTypArgu TypeArg ;
typedef TTypCAlloc TypeAlloc ;
typedef TTypCInit TypeInit ;
typedef TTypSize TypeSize ;
typedef TMoveObj TypeMoveObj;
public:
class ZCLink ;
class ZCLinkPoint ;
class ZCLinkPointC;
/**************************************************/
typedef TType Type ;
typedef TType TypeData ;
typedef TTypArgu TypeArg ;
typedef TTypCAlloc TypeAlloc ;
typedef TTypCInit TypeInit ;
typedef TTypSize TypeSize ;
typedef TMoveObj TypeMoveObj ;
/**************************************************/
typedef ZCLink TypeLink ;
typedef ZtCSimList TypeList ;
typedef ZCLinkPoint TypeIter ;
/**************************************************/
typedef const ZCLink ZCLinkC ;
/**************************************************/
typedef const TypeData TypeDataC ;
typedef const TypeList TypeListC ;
typedef const TypeLink TypeLinkC ;
/**************************************************/
typedef ZCLinkPoint iterator ;
typedef ZCLinkPointC const_iterator ;
typedef ZCLinkPointC iteratorC ;
/**************************************************/
typedef typename TFeeeHeap::
template ZtCBody<ZtCSimList> ZCFreeHeap;
/**************************************************/
public:
@ -933,7 +952,7 @@ namespace ZNsMain
}/*
ZCLink& operator=(TypeArg AR_Type)*/
ZCLink* operator+(TypeSize AL_Offset)
ZCLink& operator+(TypeSize AL_Offset)
{
ZCLink* VP_CLinkLoop=this;
@ -945,21 +964,286 @@ namespace ZNsMain
return *this;
}/*
ZCLink* operator+(TypeSize AL_Offset)
ZCLink& operator+(TypeSize AL_Offset)
public:*/
};/*
class ZCLink*/
//////////////////////////////////////////////////
class ZCLinkPoint
{
private:
mutable TypeLink* mp_CurrLink; // 사실상 mp_CurrLink!=0
mutable TypeSize ml_CurrPos ;
/*****/ TypeList& mr_CurrList;
public:
ZCLinkPoint(TypeList& AR_TypeList) :
mr_CurrList(AR_TypeList)
{
mp_CurrLink = AR_TypeList.HeadPtr();
ml_CurrPos = 1 ;
}
ZCLinkPoint(const ZCLinkPoint& rhs) :
mr_CurrList(rhs.mr_CurrList),
mp_CurrLink(rhs.mp_CurrLink),
ml_CurrPos (rhs.ml_CurrPos )
{}
public :
/*************** end class ZCLink ***************/
static ZCLinkPoint MakeTailPoint(TypeList& AR_TypeList)
{
ZCLinkPoint VO_ZCLinkPoint(AR_TypeList);
//////////////////////////////////////////////////
VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************************/
}/*
static ZCLinkPoint MakeTailPoint(TypeList& AR_TypeList)*/
static ZCLinkPoint MakeTailPoint(const TypeIter& AR_TypeIter)
{
ZCLinkPoint VO_ZCLinkPoint(AR_TypeIter);
VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************************/
}/*
static ZCLinkPoint MakeTailPoint(const TypeIter& AR_TypeIter)*/
public :
TypeList & GetList() {return mr_CurrList;}
TypeLink & GetLink() {return *mp_CurrLink;}
TypeListC& GetList() const{return mr_CurrList;}
TypeLinkC& GetLink() const{return *mp_CurrLink;}
/***************************************************/
TypeSize GetPos () const{return ml_CurrPos ;}
/***************************************************/
//public :
bool IsValid() const{return mr_CurrList.size()>0;}
bool IsEmpty() const{return mr_CurrList.size()<1;}
ZCLinkPoint& operator= (const ZCLinkPoint& rhs){ return *this; }
TypeData & operator*() {return **mp_CurrLink;}
TypeDataC& operator*() const{return **mp_CurrLink;}
operator TypeLink * () {return mp_CurrLink;}
operator TypeLinkC* () const{return mp_CurrLink;}
operator TypeLink & () {return *mp_CurrLink;}
operator TypeLinkC& () const{return *mp_CurrLink;}
bool operator == (const ZCLinkPoint& rhs) const
{ return ml_CurrPos == rhs.ml_CurrPos; }
bool operator != (const ZCLinkPoint& rhs) const
{ return ml_CurrPos != rhs.ml_CurrPos; }
bool operator > (const ZCLinkPoint& rhs) const
{ return ml_CurrPos > rhs.ml_CurrPos; }
bool operator >= (const ZCLinkPoint& rhs) const
{ return ml_CurrPos >= rhs.ml_CurrPos; }
bool operator < (const ZCLinkPoint& rhs) const
{ return ml_CurrPos < rhs.ml_CurrPos; }
bool operator <= (const ZCLinkPoint& rhs) const
{ return ml_CurrPos <= rhs.ml_CurrPos; }
bool operator == (TypeSize AL_Size) const
{ return ml_CurrPos == AL_Size; }
bool operator != (TypeSize AL_Size) const
{ return ml_CurrPos != AL_Size; }
bool operator > (TypeSize AL_Size) const
{ return ml_CurrPos > AL_Size; }
bool operator >= (TypeSize AL_Size) const
{ return ml_CurrPos >= AL_Size; }
bool operator < (TypeSize AL_Size) const
{ return ml_CurrPos < AL_Size; }
bool operator <= (TypeSize AL_Size) const
{ return ml_CurrPos <= AL_Size; }
const ZCLinkPoint& operator++() const
{
mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos; return *this ;
}/*
const ZCLinkPoint& operator++() const*/
ZCLinkPoint operator++(int) const
{
ZCLinkPoint VO_NowPoint(*this);
mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos ; return VO_NowPoint ;
}/*
ZCLinkPoint operator++(int) const*/
const ZCLinkPoint& operator+=(TypeSize AL_Distance) const
{
if(IsEmpty()){return *this;}
mp_CurrLink = &((*mp_CurrLink)+AL_Distance) ;
ml_CurrPos += AL_Distance ;
return *this; /*:::::::::::::::::::::::::::*/
}/*
const ZCLinkPoint& operator+=(TypeSize AL_Distance) const*/
public:
};/*
class ZCLinkPoint*/
class ZCLinkPointC
{
protected:
const TypeList& mr_CurrList;
mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0
mutable TypeSize ml_CurrPos ;
public :
ZCLinkPointC(const TypeList& AR_TypeList) :
mr_CurrList(AR_TypeList)
{
mp_CurrLink = AR_TypeList.HeadPtr();
ml_CurrPos = 1 ;
}
ZCLinkPointC(const ZCLinkPoint & rhs) :
mr_CurrList( rhs.GetList()),
mp_CurrLink(&rhs.GetLink()),
ml_CurrPos ( rhs.GetPos ())
{}
ZCLinkPointC(const ZCLinkPointC& rhs) :
mr_CurrList(rhs.mr_CurrList),
mp_CurrLink(rhs.mp_CurrLink),
ml_CurrPos (rhs.ml_CurrPos )
{}
public :
static ZCLinkPointC MakeTailPoint(const TypeList& AR_TypeList)
{
ZCLinkPointC VO_ZCLinkPoint(AR_TypeList);
VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/
}/*
static ZCLinkPointC MakeTailPoint(const TypeList& AR_TypeList)*/
static ZCLinkPointC MakeTailPoint(const ZCLinkPoint& AR_TypeIter)
{
ZCLinkPointC VO_ZCLinkPoint(AR_TypeIter);
VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/
}/*
static ZCLinkPointC MakeTailPoint(const ZCLinkPoint& AR_TypeIter)*/
static ZCLinkPointC MakeTailPoint(const ZCLinkPointC& AR_TypeIter)
{
ZCLinkPointC VO_ZCLinkPoint(AR_TypeIter);
VO_ZCLinkPoint.mp_CurrLink = VO_ZCLinkPoint.mr_TypeList.mp_TailLink;
VO_ZCLinkPoint.ml_CurrPos = VO_ZCLinkPoint.mr_TypeList.ml_LinkSize;
return VO_ZCLinkPoint; /****************/
}/*
static ZCLinkPointC MakeTailPoint(const ZCLinkPointC& AR_TypeIter)*/
public :
TypeListC& GetList() const{return mr_CurrList;}
TypeLinkC& GetLink() const{return *mp_CurrLink;}
/***************************************************/
TypeSize GetPos () const{return ml_CurrPos ;}
/***************************************************/
bool IsValid() const{return mr_CurrList.size()>0;}
bool IsEmpty() const{return mr_CurrList.size()<1;}
ZCLinkPointC& operator= (const ZCLinkPointC& rhs){ return *this; }
TypeDataC& operator*() const{return **mp_CurrLink;}
operator TypeLinkC* () const{return mp_CurrLink;}
operator TypeLinkC& () const{return *mp_CurrLink;}
bool operator == (const ZCLinkPointC& rhs) const
{ return ml_CurrPos == rhs.ml_CurrPos; }
bool operator != (const ZCLinkPointC& rhs) const
{ return ml_CurrPos != rhs.ml_CurrPos; }
bool operator > (const ZCLinkPointC& rhs) const
{ return ml_CurrPos > rhs.ml_CurrPos; }
bool operator >= (const ZCLinkPointC& rhs) const
{ return ml_CurrPos >= rhs.ml_CurrPos; }
bool operator < (const ZCLinkPointC& rhs) const
{ return ml_CurrPos < rhs.ml_CurrPos; }
bool operator <= (const ZCLinkPointC& rhs) const
{ return ml_CurrPos <= rhs.ml_CurrPos; }
bool operator == (TypeSize AL_Size) const
{ return ml_CurrPos == AL_Size; }
bool operator != (TypeSize AL_Size) const
{ return ml_CurrPos != AL_Size; }
bool operator > (TypeSize AL_Size) const
{ return ml_CurrPos > AL_Size; }
bool operator >= (TypeSize AL_Size) const
{ return ml_CurrPos >= AL_Size; }
bool operator < (TypeSize AL_Size) const
{ return ml_CurrPos < AL_Size; }
bool operator <= (TypeSize AL_Size) const
{ return ml_CurrPos <= AL_Size; }
const ZCLinkPointC& operator++() const
{
mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos; return *this ;
}/*
const ZCLinkPointC& operator++() const*/
ZCLinkPointC operator++(int) const
{
ZCLinkPointC VO_NowPoint(*this);
mp_CurrLink = mp_CurrLink->mp_NextLink;
++ml_CurrPos ; return VO_NowPoint ;
}/*
ZCLinkPointC operator++(int) const*/
const ZCLinkPointC& operator+=(TypeSize AL_Distance) const
{
if(IsEmpty()){return *this;}
mp_CurrLink = &((*mp_CurrLink)+AL_Distance) ;
ml_CurrPos += AL_Distance ;
return *this; /*:::::::::::::::::::::::::::*/
}/*
const ZCLinkPointC& operator+=(TypeSize AL_Distance) const*/
public:
};/*
class ZCLinkPointC*/
public :
/*************************************************************/
protected:
TTypSize ml_LinkSize ;
@ -1391,80 +1675,41 @@ namespace ZNsMain
void AddTailDef(TTypSize AL_DefaultSize)*/
ZCLink* GetHeadLinkPtr (){return mp_HeadLink;}
ZCLink* GetHeadIterEasy (){return mp_HeadLink;}
IterEasyID GetHeadIterEasyID(){return (IterEasyID)mp_HeadLink;}
ZCLink* GetHeadLinkPtr (){return mp_HeadLink;}
ZCLink* GetHeadIterEasy (){return mp_HeadLink;}
IterEasyID GetHeadIterEasyID (){return (IterEasyID)mp_HeadLink;}
ZCLink* GetTailLinkPtr (){return mp_TailLink;}
ZCLink* GetTailIterEasy (){return mp_TailLink;}
IterEasyID GetTailIterEasyID(){return (IterEasyID)mp_TailLink;}
ZCLink* GetTailLinkPtr (){return mp_TailLink;}
ZCLink* GetTailIterEasy (){return mp_TailLink;}
IterEasyID GetTailIterEasyID (){return (IterEasyID)mp_TailLink;}
TType& front(){return mp_HeadLink->mo_DataObjt;}
TType& back (){return mp_TailLink->mo_DataObjt;}
TypeData& front(){return mp_HeadLink->mo_DataObjt;}
TypeData& back (){return mp_TailLink->mo_DataObjt;}
const ZCLink* GetHeadLinkPtr () const{return mp_HeadLink;}
const ZCLink* GetHeadIterEasy () const{return mp_HeadLink;}
const IterEasyID GetHeadIterEasyID() const{return (IterEasyID)mp_HeadLink;}
ZCLinkC* GetHeadLinkPtr () const{return mp_HeadLink;}
ZCLinkC* GetHeadIterEasy () const{return mp_HeadLink;}
IterEasyIDc GetHeadIterEasyID() const{return (IterEasyID)mp_HeadLink;}
const ZCLink* GetTailLinkPtr () const{return mp_TailLink;}
const ZCLink* GetTailIterEasy () const{return mp_TailLink;}
const IterEasyID GetTailIterEasyID() const{return (IterEasyID)mp_TailLink;}
ZCLinkC* GetTailLinkPtr () const{return mp_TailLink;}
ZCLinkC* GetTailIterEasy () const{return mp_TailLink;}
IterEasyIDc GetTailIterEasyID () const{return (IterEasyID)mp_TailLink;}
const TType& front() const{return mp_HeadLink->mo_DataObjt;}
const TType& back () const{return mp_TailLink->mo_DataObjt;}
TypeDataC& front() const{return mp_HeadLink->mo_DataObjt;}
TypeDataC& back () const{return mp_TailLink->mo_DataObjt;}
void pop_back(TypeArg AR_Type)
{
return AddHead(AR_Type);
}/*
void pop_back(TypeArg AR_Type)*/
void pop_back (TypeArg AR_Type){ return AddHead(AR_Type); }
void push_back(TypeArg AR_Type){ return AddTail(AR_Type); }
void push_back(TypeArg AR_Type)
{
return AddTail(AR_Type);
}/*
void push_back(TypeArg AR_Type)*/
TypeData & GetHeadData() { return mp_HeadLink->mo_DataObjt; }
TypeDataC& GetHeadData() const{ return mp_HeadLink->mo_DataObjt; }
TypeData & GetTailData() { return mp_TailLink->mo_DataObjt ; }
TypeDataC& GetTailData() const{ return mp_TailLink->mo_DataObjt ; }
TType& GetHeadData()
{
return mp_HeadLink->mo_DataObjt;
}/*
TType& GetHeadData()*/
const TType& GetHeadData() const
{
return mp_HeadLink->mo_DataObjt;
}/*
const TType& GetHeadData() const*/
TType& GetTailData()
{
return mp_TailLink->mo_DataObjt ;
}/*
TType& GetTailData()*/
const TType& GetTailData() const
{
return mp_TailLink->mo_DataObjt ;
}/*
const TType& GetTailData() const*/
TType& GetData(TTypSize AL_Index)
{
return GetLinkPtr(AL_Index)->mo_DataObjt;
}/*
TType& GetData(TTypSize AL_Index)*/
TType GetData(TTypSize AL_Index) const
{
return GetLinkPtr(AL_Index)->mo_DataObjt;
}/*
TType GetData(TTypSize AL_Index) const*/
TypeData & GetData(TTypSize AL_Index) { return GetLinkPtr(AL_Index)->mo_DataObjt; }
TypeDataC& GetData(TTypSize AL_Index) const{ return GetLinkPtr(AL_Index)->mo_DataObjt; }
void JoinHead(ZCLink* AP_Link)
@ -2075,118 +2320,114 @@ namespace ZNsMain
///////////////////////////////////////////////////////////////////////////*/
void MoveNextIter(ZCLink*& APR_CLink)
{
APR_CLink=APR_CLink->GetNextPtr();
}/*
void MoveNextIter(ZCLink*& APR_CLink)*/
{ APR_CLink=APR_CLink->GetNextPtr() ; }
void MoveNextIter(IterEasyID& APPI_IterEasyID)
{
MoveNextIter((ZCLink*&)APPI_IterEasyID);
}/*
void MoveNextIter(IterEasyID& APPI_IterEasyID)*/
{ MoveNextIter((ZCLink*&)APPI_IterEasyID) ; }
void MoveNextIter(const ZCLink*& APR_CLink) const
{
APR_CLink=APR_CLink->GetNextPtr();
}/*
void MoveNextIter(const ZCLink*& APR_CLink) const*/
{ APR_CLink=APR_CLink->GetNextPtr() ; }
void MoveNextIter(const IterEasyID& APPI_IterEasyID) const
{
MoveNextIter((const ZCLink*&)APPI_IterEasyID);
}/*
void MoveNextIter(const IterEasyID& APPI_IterEasyID) const*/
void MoveNextIter(IterEasyIDc& APPI_IterEasyID) const
{ MoveNextIter((const ZCLink*&)APPI_IterEasyID) ; }
void MoveNextIter(iterator & ARR_iterator)
{ ++ARR_iterator ; }
void MoveNextIter(iteratorC& ARR_iterator) const
{ ++ARR_iterator ; }
TType& GetDataInIter(ZCLink* AP_CLink)
{
return **AP_CLink;
}/*
TType& GetDataInIter(ZCLink* AP_CLink)*/
TType& GetDataInIter(IterEasyID APPI_IterEasyID)
{
return GetDataInIter((ZCLink*)APPI_IterEasyID);
}/*
TType& GetDataInIter(IterEasyID APPI_IterEasyID)*/
const TType& GetDataInIter(const ZCLink* AP_CLink) const
{
return **AP_CLink;
}/*
const TType& GetDataInIter(const ZCLink* AP_CLink) const*/
const TType& GetDataInIter(const IterEasyID APPI_IterEasyID) const
{
return GetDataInIter((const ZCLink*)APPI_IterEasyID);
}/*
const TType& GetDataInIter(const IterEasyID APPI_IterEasyID) const*/
TypeData& GetDataInIter(ZCLink* AP_CLink)
{ return **AP_CLink ; }
TypeData& GetDataInIter(IterEasyID APPI_IterEasyID)
{ return GetDataInIter((ZCLink*)APPI_IterEasyID) ; }
TypeData& GetDataInIter(iterator & ARR_iterator)
{ return *ARR_iterator ; }
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
ZCLink* ItHEasy() {return mp_HeadLink;}
IterEasyID ItHID () {return (IterEasyID)mp_HeadLink;}
TypeDataC& GetDataInIter(const ZCLink* AP_CLink) const
{ return **AP_CLink ; }
ZCLink* ItTEasy() {return mp_TailLink;}
IterEasyID ItTID () {return (IterEasyID)mp_TailLink;}
TypeDataC& GetDataInIter(IterEasyIDc APPI_IterEasyID) const
{ return GetDataInIter((const ZCLink*)APPI_IterEasyID) ; }
TypeData& GetDataInIter(iteratorC& ARR_iterator) const
{ return *ARR_iterator ; }
ZCLink* ItHEasy() {return mp_HeadLink;}
IterEasyID ItHID () {return (IterEasyID)mp_HeadLink;}
ZCLink* ItTEasy() {return mp_TailLink;}
IterEasyID ItTID () {return (IterEasyID)mp_TailLink;}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
const ZCLink* ItHEasy() const{return mp_HeadLink;}
const IterEasyID ItHID () const{return (IterEasyIDc)mp_HeadLink;}
ZCLinkC* ItHEasy() const{return mp_HeadLink;}
IterEasyIDc ItHID () const{return (IterEasyIDc)mp_HeadLink;}
const ZCLink* ItTEasy() const{return mp_TailLink;}
const IterEasyID ItTID () const{return (IterEasyIDc)mp_TailLink;}
ZCLinkC* ItTEasy() const{return mp_TailLink;}
IterEasyIDc ItTID () const{return (IterEasyIDc)mp_TailLink;}
void ItNext(ZCLink*& APR_CLink)
{
MoveNextIter(APR_CLink);
}/*
void ItNext(ZCLink*& APR_CLink)*/
void ItNext(ZCLink*& APR_CLink )
{ MoveNextIter(APR_CLink) ; }
void ItNext(IterEasyID& APPI_IterEasyID)
{
MoveNextIter(APPI_IterEasyID);
}/*
void ItNext(IterEasyID& APPI_IterEasyID)*/
void ItNext(IterEasyID& APPI_IterEasyID )
{ MoveNextIter(APPI_IterEasyID) ; }
void ItNext(const ZCLink*& APR_CLink) const
{
MoveNextIter(APR_CLink);
}/*
void ItNext(const ZCLink*& APR_CLink) const*/
void ItNext(iterator& ARR_Iterator )
{ ++ARR_Iterator ; }
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void ItNext(ZCLinkC*& APR_CLink ) const
{ MoveNextIter(APR_CLink) ; }
void ItNext(const IterEasyID& APPI_IterEasyID) const
{
MoveNextIter(APPI_IterEasyID);
}/*
void ItNext(const IterEasyID& APPI_IterEasyID) const*/
void ItNext(IterEasyIDc& APPI_IterEasyID) const
{ MoveNextIter(APPI_IterEasyID) ; }
void ItNext(iteratorC& ARR_Iterator ) const
{ ++ARR_Iterator ; }
TType& ItD(ZCLink* AP_CLink)
{
return **AP_CLink;
}/*
TType& ItD(ZCLink* AP_CLink)*/
TypeData & ItD(ZCLink* AP_CLink )
{ return **AP_CLink; }
TType& ItD(IterEasyID APPI_IterEasyID)
{
return ItD((ZCLink*)APPI_IterEasyID);
}/*
TType& ItD(IterEasyID APPI_IterEasyID)*/
TypeData & ItD(IterEasyID APPI_IterEasyID )
{ return ItD((ZCLink*)APPI_IterEasyID); }
const TType& ItD(const ZCLink* AP_CLink) const
{
return **AP_CLink;
}/*
const TType& ItD(const ZCLink* AP_CLink) const*/
TypeData & ItD(iterator & ARR_Iterator )
{ return *ARR_Iterator; }
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
TypeDataC& ItD(ZCLinkC* AP_CLink ) const
{ return **AP_CLink; }
const TType& ItD(const IterEasyID APPI_IterEasyID) const
{
return ItD((const ZCLink*)APPI_IterEasyID);
}/*
const TType& ItD(const IterEasyID APPI_IterEasyID) const*/
TypeDataC& ItD(IterEasyIDc APPI_IterEasyID ) const
{ return ItD((ZCLinkC*)APPI_IterEasyID); }
TypeDataC& ItD(iteratorC& ARR_Iterator ) const
{ return *ARR_Iterator; }
iterator begin () { return ZCLinkPoint (*this); }
iteratorC begin () const{ return ZCLinkPointC(*this); }
iterator end () { return ZCLinkPoint ::MakeTailPoint(*this); }
iteratorC end () const{ return ZCLinkPointC::MakeTailPoint(*this); }
ZCLink * HeadPtr() {return mp_HeadLink;}
ZCLink * TailPtr() {return mp_TailLink;}
ZCLinkC* HeadPtr() const{return mp_HeadLink;}
ZCLinkC* TailPtr() const{return mp_TailLink;}
ZCLink * HeadPtr(TypeSize AI_Distance) {return &((*mp_HeadLink)+AI_Distance);}
ZCLinkC* HeadPtr(TypeSize AI_Distance) const{return &((*mp_HeadLink)+AI_Distance);}
ZCLink & HeadRef() {return *mp_HeadLink;}
ZCLinkC& HeadRef() const{return *mp_HeadLink;}
ZCLink & HeadRef(TypeSize AI_Distance) {return (*mp_HeadLink)+AI_Distance;}
ZCLinkC& HeadRef(TypeSize AI_Distance) const{return (*mp_HeadLink)+AI_Distance;}
public:
};/*

View File

@ -679,8 +679,14 @@ namespace ZNsMain
cout<<"*****************************************************"<<endl;
VO_ZCBaseListEx10_2.IterElemLink(&ShowNode10_3, ZftMCP(VI_CallCnt=0));
cout<<endl<<"# VO_ZCBaseListEx10_2 for_iter() show "<<endl;
__for_iter(ZCBaseListEx10, VO_ZCBaseListEx10_2, VO_Iter)
cout<<endl<<"# VO_ZCBaseListEx10_2 for_i() show "<<endl;
__for_i(ZCBaseListEx10, VO_ZCBaseListEx10_2, VO_Iter)
{
cout<<VO_Iter.GetPos()<<" : "<<*VO_Iter<<endl;
}
cout<<endl<<"# VO_ZCBaseListEx10_2 for_i_r() show "<<endl;
__for_i_r(ZCBaseListEx10, VO_ZCBaseListEx10_2, VO_Iter)
{
cout<<VO_Iter.GetPos()<<" : "<<*VO_Iter<<endl;
}

View File

@ -376,9 +376,13 @@ namespace ZNsMain
iteratorC1 VO_IterC1(VO_Iter1);
int VI_LoopCnt = 0;
__for_iter(CStringList1, VO_ListOfStr11, VO_NowIter)
__for_i (CStringList1, VO_ListOfStr11, VO_NowIter)
{
cout<<"(by for_iter) "<<VO_NowIter.GetPos()<<" : "<<*VO_NowIter<<endl;
cout<<"(by for_i ) "<<VO_NowIter.GetPos()<<" : "<<*VO_NowIter<<endl;
}
__for_i_r(CStringList1, VO_ListOfStr11, VO_NowIter)
{
cout<<"(by for_i_r) "<<VO_NowIter.GetPos()<<" : "<<*VO_NowIter<<endl;
}