diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index ce093bb..aa7452f 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -470,6 +470,10 @@ using namespace std; #define __forD1(i, LoopCount) for(i=1; i<=LoopCount; ++i) +#define __for_iter(IterClass, IterObj, IterVar) \ + for(IterClass::iterator IterVar=IterObj.begin(); IterVar<=IterObj.size(); ++IterVar) + + namespace ZNsMain { @@ -5670,7 +5674,7 @@ namespace ZNsMain class ZtCBaseList /*#####################################################*/ { public: - class ZCLink; class ZCLinkPoint; class ZCLinkRange; + class ZCLink; class ZCLinkPoint; class ZCLinkPointC; public: typedef ZtCBaseList TypeThis ; typedef ZtCBaseList TypeList ; @@ -5682,23 +5686,23 @@ namespace ZNsMain typedef ZCLink TypeLink ; typedef ZCLinkPoint TypeLinkPoint ; typedef ZCLinkPoint TypeIter ; - typedef ZCLinkRange TypeLinkRange ; + typedef ZCLinkPointC TypeIterC ; /*************************************************************************/ typedef ZCLink* IterEasy ; // 가장 쉽게 쓸 수 있는 반복자. typedef ZCLinkPoint iterator ; // 다양한 기능을 가진 반복자. + typedef ZCLinkPointC iteratorC ; + typedef ZCLinkPointC const_iterator; /*************************************************************************/ typedef ZtCObjOpt ZCLinkOpt ; typedef ZtCObjOpt ZCDataOpt ; /*************************************************************************/ - typedef const iterator iteratorC ; - typedef const IterEasy IterEasyC ; - /*************************************************************************/ typedef const TypeThis TypeThisC ; typedef const TypeList TypeListC ; typedef const TypeData TypeDataC ; - typedef const TypeIter TypeIterC ; + /*typedef ZCLinkPointC TypeIterC ;*/ typedef const ZCLink TypeLinkC ; typedef const ZCLink ZCLinkC ; + typedef const IterEasy IterEasyC ; typedef const ZCLinkOpt ZCLinkOptC ; typedef const ZCDataOpt ZCDataOptC ; public: @@ -5859,7 +5863,7 @@ namespace ZNsMain return VO_ZCLinkPoint; /****************************/ }/* static ZCLinkPoint MakeTailPoint(TypeList& AR_TypeList)*/ - static ZCLinkPoint MakeTailPoint(TypeIterC& AR_TypeIter) + static ZCLinkPoint MakeTailPoint(const TypeIter& AR_TypeIter) { ZCLinkPoint VO_ZCLinkPoint(AR_TypeIter); @@ -5868,7 +5872,7 @@ namespace ZNsMain return VO_ZCLinkPoint; /****************************/ }/* - static ZCLinkPoint MakeTailPoint(TypeIterC& AR_TypeIter)*/ + static ZCLinkPoint MakeTailPoint(const TypeIter& AR_TypeIter)*/ public : @@ -5988,6 +5992,172 @@ namespace ZNsMain 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*/ + + const ZCLinkPointC& operator--() const + { + mp_CurrLink = mp_CurrLink->mp_PrevLink; + + --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*/ + + ZCLinkPointC operator--(int) const + { + ZCLinkPointC VO_NowPoint(*this); + + mp_CurrLink = mp_CurrLink->mp_PrevLink; + + --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*/ + + const ZCLinkPointC& operator-=(TypeSize AL_Distance) const + { + mp_CurrLink = &((*mp_CurrLink)-AL_Distance); + ml_CurrPos -= AL_Distance ; + + return *this; /*::::::::::::::::::::::::::*/ + }/* + const ZCLinkPointC& operator-=(TypeSize AL_Distance) const*/ + + public: + };/* + class ZCLinkPointC*/ + + class ZCLinkPointEx : public ZCLinkPoint { public: @@ -8356,10 +8526,10 @@ namespace ZNsMain { return GetDataInIter((ZCLinkC*)ARR_Iterator , AI_FarNum); } - iterator begin () { return ZCLinkPoint(*this); } - iteratorC begin () const{ return ZCLinkPoint(*this); } - iterator end () { return ZCLinkPoint::MakeTailPoint(*this); } - iteratorC end () const{ return ZCLinkPoint::MakeTailPoint(*this); } + iterator begin () { return ZCLinkPoint (*this); } + iteratorC begin () const{ return ZCLinkPointC(*this); } + iterator end () { return ZCLinkPoint ::MakeTailPoint(*this); } + iteratorC end () const{ return ZCLinkPointC::MakeTailPoint(*this); } IterEasy ItHEasy() {return GetHeadIterEasy ();} diff --git a/ZCppMain/ZtCArray.H b/ZCppMain/ZtCArray.H index a1fed73..d33c97b 100644 --- a/ZCppMain/ZtCArray.H +++ b/ZCppMain/ZtCArray.H @@ -22,53 +22,59 @@ namespace ZNsMain typedef TTypArg TypeArg ; typedef TSize TypeSize; public: - class ZCIterator; + class ZCDataPoint; public: - typedef Type* IterEasy; - typedef ZCIterator iterator; - typedef const ZCIterator const_iterator; + typedef Type* IterEasy; + typedef ZCDataPoint iterator; + typedef ZCDataPoint TypeIter; + public: + typedef const IterEasy IterEasyC; + typedef const ZCDataPoint iteratorC; + typedef const TypeData TypeDataC; + public: + typedef const ZCDataPoint const_iterator; public: - class ZCIterator + class ZCDataPoint { - private: mutable + private: mutable Type* mp_Data ; mutable TSize ml_ElePos; // *mp_Data 가 배열에서 차지하는 위치 ZtCArray* mp_CArray; public: - ZCIterator() + ZCDataPoint() { mp_Data =0; mp_CArray=0; ml_ElePos=0; }/* - ZCIterator()*/ + ZCDataPoint()*/ - ZCIterator(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos) + ZCDataPoint(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos) { mp_Data =&AR_CData ; mp_CArray=&AR_CArray; ml_ElePos=AL_ElePos ; }/* - ZCIterator(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)*/ + ZCDataPoint(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)*/ - ZCIterator(ZtCArray& AR_CArray) + ZCDataPoint(ZtCArray& AR_CArray) { mp_Data = AR_CArray.mp_TypeArr ; mp_CArray=&AR_CArray ; ml_ElePos=(AR_CArray.size()>0 ? 1 : 0 ) ; }/* - ZCIterator(ZtCArray& AR_CArray)*/ + ZCDataPoint(ZtCArray& AR_CArray)*/ - ZCIterator(const ZtCArray& AR_CArray) + ZCDataPoint(const ZtCArray& AR_CArray) { mp_Data = AR_CArray.mp_TypeArr ; mp_CArray= const_cast(&AR_CArray); ml_ElePos= (AR_CArray.size()>0 ? 1 : 0 ) ; }/* - ZCIterator(const ZtCArray& AR_CArray)*/ + ZCDataPoint(const ZtCArray& AR_CArray)*/ Type& operator*( ){return *mp_Data;} Type* operator->(){return mp_Data;} @@ -76,21 +82,21 @@ namespace ZNsMain const Type& operator* () const{return *mp_Data;} const Type* operator->() const{return mp_Data;} - ZCIterator& operator++( ){++mp_Data; ++ml_ElePos; return *this;} - ZCIterator operator++(int){++mp_Data; ++ml_ElePos; return *this;} + ZCDataPoint& operator++( ){++mp_Data; ++ml_ElePos; return *this;} + ZCDataPoint operator++(int){++mp_Data; ++ml_ElePos; return *this;} - const ZCIterator& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;} - const ZCIterator operator++(int) const{++mp_Data; ++ml_ElePos; return *this;} + const ZCDataPoint& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;} + const ZCDataPoint operator++(int) const{++mp_Data; ++ml_ElePos; return *this;} - ZCIterator operator+(TSize AL_AddPos) const + ZCDataPoint operator+(TSize AL_AddPos) const { - return ZCIterator(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos); + return ZCDataPoint(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos); }/* - ZCIterator operator+(TSize AL_AddPos) const*/ + ZCDataPoint operator+(TSize AL_AddPos) const*/ public: };/* - class ZCIterator + class ZCDataPoint public :*/ @@ -339,8 +345,8 @@ namespace ZNsMain Type& push_front(){return AddHead();} Type& push_back (){return AddTail();} - /***/ ZCIterator begin() {return ZCIterator(*this);} - const ZCIterator begin() const{return ZCIterator(*this);} + /***/ ZCDataPoint begin() {return ZCDataPoint(*this);} + const ZCDataPoint begin() const{return ZCDataPoint(*this);} template void IterElement(TFunctor AO_Functor) diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 59baa9d..3f08da5 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -796,38 +796,42 @@ namespace ZNsMain public: template friend class ZtCSortObjList; public: - typedef TType Type ; - typedef TType TypeData ; - typedef TTypArgu TypeArg ; - typedef TTypCAlloc TypeAlloc ; - typedef TTypeInit TypeInit ; - typedef TTypSize TypeSize ; - typedef TMoveObj TypeMoveObj ; + typedef TType Type ; + typedef TType TypeData ; + typedef TTypArgu TypeArg ; + typedef TTypCAlloc TypeAlloc ; + typedef TTypeInit TypeInit ; + typedef TTypSize TypeSize ; + typedef TMoveObj TypeMoveObj ; public: - typedef ZtCObjList TypeThis ; + typedef ZtCObjList TypeThis ; public: - class ZCLink; class ZCLinkPoint ; + class ZCLink ; + class ZCLinkPoint ; + class ZCLinkPointC ; public: - typedef ZCLink TypeLink ; - typedef TypeThis TypeList ; + typedef ZCLink TypeLink ; + typedef TypeThis TypeList ; public: - typedef ZCLink* IterEasy ; // 가장 간단하게 쓰일 수 있는 반복자. - typedef ZCLinkPoint iterator ; // 다양한 기능을 가진 반복자. - typedef ZCLinkPoint TypeIter ; + typedef ZCLink* IterEasy ; // 가장 간단하게 쓰일 수 있는 반복자. + typedef ZCLinkPoint iterator ; // 다양한 기능을 가진 반복자. + typedef ZCLinkPoint TypeIter ; + typedef ZCLinkPointC TypeIterC ; + typedef ZCLinkPointC iteratorC ; + typedef ZCLinkPointC const_iterator; public: typedef ZtCObjOpt ZCLinkOpt; typedef ZtCObjOpt ZCDataOpt; public: - typedef const TypeList TypeListC ; - typedef const TypeData TypeDataC ; - typedef const TypeLink TypeLinkC ; - typedef const TypeThis TypeThisC ; - typedef const TypeIter TypeIterC ; - typedef const IterEasy IterEasyC ; - typedef const iterator iteratorC ; - typedef const ZCLink ZCLinkC ; - typedef const ZCLinkOpt ZCLinkOptC; - typedef const ZCDataOpt ZCDataOptC; + typedef const TypeList TypeListC ; + typedef const TypeData TypeDataC ; + typedef const TypeLink TypeLinkC ; + typedef const TypeThis TypeThisC ; + typedef const IterEasy IterEasyC ; + //typedef ZCLinkPointC iteratorC ; + typedef const ZCLink ZCLinkC ; + typedef const ZCLinkOpt ZCLinkOptC ; + typedef const ZCDataOpt ZCDataOptC ; public: typedef typename TFeeeHeap:: template ZtCBody ZCFreeHeap; @@ -1069,7 +1073,7 @@ namespace ZNsMain return VO_ZCLinkPoint; /****************************/ }/* static ZCLinkPoint MakeTailPoint(TypeList& AR_TypeList)*/ - static ZCLinkPoint MakeTailPoint(TypeIterC& AR_TypeIter) + static ZCLinkPoint MakeTailPoint(const TypeIter& AR_TypeIter) { ZCLinkPoint VO_ZCLinkPoint(AR_TypeIter); @@ -1078,7 +1082,7 @@ namespace ZNsMain return VO_ZCLinkPoint; /****************************/ }/* - static ZCLinkPoint MakeTailPoint(TypeIterC& AR_TypeIter)*/ + static ZCLinkPoint MakeTailPoint(const TypeIter& AR_TypeIter)*/ public : @@ -1198,6 +1202,172 @@ namespace ZNsMain 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*/ + + const ZCLinkPointC& operator--() const + { + mp_CurrLink = mp_CurrLink->mp_PrevLink; + + --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*/ + + ZCLinkPointC operator--(int) const + { + ZCLinkPointC VO_NowPoint(*this); + + mp_CurrLink = mp_CurrLink->mp_PrevLink; + + --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*/ + + const ZCLinkPointC& operator-=(TypeSize AL_Distance) const + { + mp_CurrLink = &((*mp_CurrLink)-AL_Distance); + ml_CurrPos -= AL_Distance ; + + return *this; /*::::::::::::::::::::::::::*/ + }/* + const ZCLinkPointC& operator-=(TypeSize AL_Distance) const*/ + + public: + };/* + class ZCLinkPointC*/ + + class ZCLinkPointEx : public ZCLinkPoint { public: @@ -2986,10 +3156,10 @@ namespace ZNsMain { return GetDataInIter((ZCLinkC*)ARR_Iterator , AI_FarNum); } - iterator begin () { return ZCLinkPoint(*this); } - iteratorC begin () const{ return ZCLinkPoint(*this); } - iterator end () { return ZCLinkPoint::MakeTailPoint(*this); } - iteratorC end () const{ return ZCLinkPoint::MakeTailPoint(*this); } + iterator begin () { return ZCLinkPoint (*this); } + iteratorC begin () const{ return ZCLinkPointC(*this); } + iterator end () { return ZCLinkPoint ::MakeTailPoint(*this); } + iteratorC end () const{ return ZCLinkPointC::MakeTailPoint(*this); } IterEasy ItHEasy() {return GetHeadIterEasy (); } diff --git a/ZCppMainTest/ZtCObjList_000.cpp b/ZCppMainTest/ZtCObjList_000.cpp index 7a3e103..83abdc7 100644 --- a/ZCppMainTest/ZtCObjList_000.cpp +++ b/ZCppMainTest/ZtCObjList_000.cpp @@ -369,18 +369,17 @@ namespace ZNsMain typedef CStringList1::iterator iterator1 ; typedef CStringList1::ZCLinkPointEx iteratorEx1; + typedef CStringList1::ZCLinkPointC iteratorC1 ; iterator1 VO_Iter1 = VO_ListOfStr11.end(); iteratorEx1 VO_IterEx1 = VO_ListOfStr11.end(); + iteratorC1 VO_IterC1(VO_Iter1); int VI_LoopCnt = 0; - while(VO_Iter1>0) + __for_iter(CStringList1, VO_ListOfStr11, VO_NowIter) { - cout<<"(by iter)"<<++VI_LoopCnt<<" : "<<*VO_Iter1<0)*/ + cout<<"(by for_iter) "<