diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index c0c96ad..4b3be1f 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -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 diff --git a/ZCppMain/ZtCSimList.H b/ZCppMain/ZtCSimList.H index c3fa874..3b4c9d2 100644 --- a/ZCppMain/ZtCSimList.H +++ b/ZCppMain/ZtCSimList.H @@ -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 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: };/* diff --git a/ZCppMainTest/ZtCBaseList_000.cpp b/ZCppMainTest/ZtCBaseList_000.cpp index c051faa..ff15696 100644 --- a/ZCppMainTest/ZtCBaseList_000.cpp +++ b/ZCppMainTest/ZtCBaseList_000.cpp @@ -679,8 +679,14 @@ namespace ZNsMain cout<<"*****************************************************"<