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