diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index 47f28fe..e9e5c0f 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -479,7 +479,7 @@ using namespace std; #define __for_ic(IterClass, IterObj, IterVar) \ for ( \ typename IterClass::const_iterator \ - IterVar=IterObj.begin(); \ + IterVar=IterObj.cbegin(); \ IterVar<=IterObj.size(); ++IterVar \ ) @@ -492,7 +492,7 @@ using namespace std; #define __for_i_rc(IterClass, IterObj, IterVar) \ for ( \ typename IterClass::const_iterator \ - IterVar=IterObj.end(); \ + IterVar=IterObj.cend(); \ IterVar>0; --IterVar \ ) @@ -5696,7 +5696,7 @@ namespace ZNsMain class ZtCBaseList /*#####################################################*/ { public: - class ZCLink; class ZCNodePoint; class ZCNodePointC; + class ZCLink; class ZCNodePoint; class ZCNodePointN; /*************************************************************************/ typedef ZtCObjOpt ZCLinkOpt ; typedef ZtCObjOpt ZCDataOpt ; @@ -5714,23 +5714,24 @@ namespace ZNsMain typedef ZCNodePoint TypeIter ; typedef ZCLink* IterEasy ; // 가장 쉽게 쓸 수 있는 반복자. - typedef ZCNodePointC iteratorC ; + typedef ZCNodePointN iteratorN ; typedef ZCNodePoint iterator ; // 다양한 기능을 가진 반복자. - typedef ZCNodePointC const_iterator; + typedef ZCNodePointN const_iterator; typedef const TypeThis TypeThisC ; typedef const TypeList TypeListC ; typedef const TypeData TypeDataC ; typedef const TypeNode TypeNodeC ; // ZCNodePoint::GetNode() const 의 반환형. typedef const TypeLink TypeLinkC ; + typedef const TypeIter TypeIterC ; typedef const ZCLink ZCLinkC ; typedef const IterEasy IterEasyC ; typedef const ZCLinkOpt ZCLinkOptC ; typedef const ZCDataOpt ZCDataOptC ; - typedef ZCNodePointC TypeIterC ; + typedef ZCNodePointN TypeIterN ; /*************************************************************************/ @@ -6016,61 +6017,71 @@ namespace ZNsMain class ZCNodePoint*/ - class ZCNodePointC + /*/////////////////////////////////////////////////////////////// + + ■ 상수 전용 클래스에는 const 의 N 을 붙이는 것으로 하자. + C 는 보통의 클래스가 특정 상황에서 읽기 전용일 경우에 + + typdef const some_class some_classC; + + 형태로 사용할 때 붙였다. -- 2025-10-14 09:08 + + ///////////////////////////////////////////////////////////////*/ + class ZCNodePointN { protected: const TypeList& mr_CurrList; mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0 mutable TypeSize ml_CurrPos ; public : - ZCNodePointC(const TypeList& AR_TypeList) : + ZCNodePointN(const TypeList& AR_TypeList) : mr_CurrList(AR_TypeList) { mp_CurrLink = AR_TypeList.HeadPtr(); ml_CurrPos = 1 ; } - ZCNodePointC(const ZCNodePoint & rhs) : + ZCNodePointN(const ZCNodePoint & rhs) : mr_CurrList( rhs.GetMain()), mp_CurrLink(&rhs.GetNode()), ml_CurrPos ( rhs.GetPos ()) {} - ZCNodePointC(const ZCNodePointC& rhs) : + ZCNodePointN(const ZCNodePointN& rhs) : mr_CurrList(rhs.mr_CurrList), mp_CurrLink(rhs.mp_CurrLink), ml_CurrPos (rhs.ml_CurrPos ) {} public : - static ZCNodePointC MakeTailPoint(const TypeList& AR_TypeList) + static ZCNodePointN MakeTailPoint(const TypeList& AR_TypeList) { - ZCNodePointC VO_ZCLinkPoint(AR_TypeList); + ZCNodePointN VO_ZCLinkPoint(AR_TypeList); VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink; VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize; return VO_ZCLinkPoint; /****************/ }/* - static ZCNodePointC MakeTailPoint(const TypeList& AR_TypeList)*/ - static ZCNodePointC MakeTailPoint(const ZCNodePoint & AR_TypeIter) + static ZCNodePointN MakeTailPoint(const TypeList& AR_TypeList)*/ + static ZCNodePointN MakeTailPoint(const ZCNodePoint & AR_TypeIter) { - ZCNodePointC VO_ZCLinkPoint(AR_TypeIter); + ZCNodePointN 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 ZCNodePointC MakeTailPoint(const ZCNodePoint & AR_TypeIter)*/ - static ZCNodePointC MakeTailPoint(const ZCNodePointC& AR_TypeIter) + static ZCNodePointN MakeTailPoint(const ZCNodePoint & AR_TypeIter)*/ + static ZCNodePointN MakeTailPoint(const ZCNodePointN& AR_TypeIter) { - ZCNodePointC VO_ZCLinkPoint(AR_TypeIter); + ZCNodePointN 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 ZCNodePointC MakeTailPoint(const ZCNodePointC& AR_TypeIter)*/ + static ZCNodePointN MakeTailPoint(const ZCNodePointN& AR_TypeIter)*/ public : @@ -6085,7 +6096,7 @@ namespace ZNsMain bool IsEmpty() const{return mr_CurrList.size()<1;} - ZCNodePointC& operator= (const ZCNodePointC& rhs){ return *this; } + ZCNodePointN& operator= (const ZCNodePointN& rhs){ return *this; } TypeDataC& operator*() const{return **mp_CurrLink;} @@ -6093,17 +6104,17 @@ namespace ZNsMain operator TypeNodeC& () const{return *mp_CurrLink;} - bool operator == (const ZCNodePointC& rhs) const + bool operator == (const ZCNodePointN& rhs) const { return ml_CurrPos == rhs.ml_CurrPos; } - bool operator != (const ZCNodePointC& rhs) const + bool operator != (const ZCNodePointN& rhs) const { return ml_CurrPos != rhs.ml_CurrPos; } - bool operator > (const ZCNodePointC& rhs) const + bool operator > (const ZCNodePointN& rhs) const { return ml_CurrPos > rhs.ml_CurrPos; } - bool operator >= (const ZCNodePointC& rhs) const + bool operator >= (const ZCNodePointN& rhs) const { return ml_CurrPos >= rhs.ml_CurrPos; } - bool operator < (const ZCNodePointC& rhs) const + bool operator < (const ZCNodePointN& rhs) const { return ml_CurrPos < rhs.ml_CurrPos; } - bool operator <= (const ZCNodePointC& rhs) const + bool operator <= (const ZCNodePointN& rhs) const { return ml_CurrPos <= rhs.ml_CurrPos; } bool operator == (TypeSize AL_Size) const @@ -6120,44 +6131,44 @@ namespace ZNsMain { return ml_CurrPos <= AL_Size; } - const ZCNodePointC& operator++() const + const ZCNodePointN& operator++() const { mp_CurrLink = mp_CurrLink->mp_NextLink; ++ml_CurrPos; return *this ; }/* - const ZCNodePointC& operator++() const*/ + const ZCNodePointN& operator++() const*/ - const ZCNodePointC& operator--() const + const ZCNodePointN& operator--() const { mp_CurrLink = mp_CurrLink->mp_PrevLink; --ml_CurrPos; return *this ; }/* - const ZCNodePointC& operator--() const*/ + const ZCNodePointN& operator--() const*/ - ZCNodePointC operator++(int) const + ZCNodePointN operator++(int) const { - ZCNodePointC VO_NowPoint(*this); + ZCNodePointN VO_NowPoint(*this); mp_CurrLink = mp_CurrLink->mp_NextLink; ++ml_CurrPos ; return VO_NowPoint ; }/* - ZCNodePointC operator++(int) const*/ + ZCNodePointN operator++(int) const*/ - ZCNodePointC operator--(int) const + ZCNodePointN operator--(int) const { - ZCNodePointC VO_NowPoint(*this); + ZCNodePointN VO_NowPoint(*this); mp_CurrLink = mp_CurrLink->mp_PrevLink; --ml_CurrPos; return VO_NowPoint ; }/* - ZCNodePointC operator--(int) const*/ + ZCNodePointN operator--(int) const*/ - const ZCNodePointC& operator+=(TypeSize AL_Distance) const + const ZCNodePointN& operator+=(TypeSize AL_Distance) const { if(IsEmpty()){return *this;} @@ -6166,20 +6177,20 @@ namespace ZNsMain return *this; /*:::::::::::::::::::::::::::*/ }/* - const ZCNodePointC& operator+=(TypeSize AL_Distance) const*/ + const ZCNodePointN& operator+=(TypeSize AL_Distance) const*/ - const ZCNodePointC& operator-=(TypeSize AL_Distance) const + const ZCNodePointN& operator-=(TypeSize AL_Distance) const { mp_CurrLink = &((*mp_CurrLink)-AL_Distance); ml_CurrPos -= AL_Distance ; return *this; /*::::::::::::::::::::::::::*/ }/* - const ZCNodePointC& operator-=(TypeSize AL_Distance) const*/ + const ZCNodePointN& operator-=(TypeSize AL_Distance) const*/ public: };/* - class ZCNodePointC*/ + class ZCNodePointN*/ class ZCLinkPointEx : public ZCNodePoint @@ -8507,7 +8518,7 @@ namespace ZNsMain 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 MoveNextIter(iteratorN & ARR_Iterator ) const{++ARR_Iterator;} void MovePrevIter(ZCLink* & APR_CLink ) const @@ -8519,7 +8530,7 @@ namespace ZNsMain 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;} + void MovePrevIter(iteratorN & ARR_Iterator ) const{--ARR_Iterator;} TypeData & GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;} @@ -8531,7 +8542,7 @@ namespace ZNsMain { return **AP_CLink ;} TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID ) const { return GetDataInIter((TypeLinkC*)ARRI_IterEasyID); } - TypeDataC& GetDataInIter(iteratorC& ARR_Iterator ) + TypeDataC& GetDataInIter(iteratorN& ARR_Iterator ) { return *ARR_Iterator ;} @@ -8546,14 +8557,17 @@ namespace ZNsMain {return **(AP_CLink->GetNextPrePtr(AI_FarNum)) ; } TypeDataC& GetDataInIter( IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const { return GetDataInIter((ZCLinkC*)ARRI_IterEasyID , AI_FarNum); } - TypeDataC& GetDataInIter( iteratorC& ARR_Iterator , TypeSize AI_FarNum) const + TypeDataC& GetDataInIter( iteratorN& ARR_Iterator , TypeSize AI_FarNum) const { return GetDataInIter((ZCLinkC*)ARR_Iterator , AI_FarNum); } iterator begin () { return ZCNodePoint (*this); } - iteratorC begin () const{ return ZCNodePointC(*this); } + iteratorN begin () const{ return ZCNodePointN(*this); } iterator end () { return ZCNodePoint ::MakeTailPoint(*this); } - iteratorC end () const{ return ZCNodePointC::MakeTailPoint(*this); } + iteratorN end () const{ return ZCNodePointN::MakeTailPoint(*this); } + + iteratorN cbegin () const{ return ZCNodePointN(*this); } + iteratorN cend () const{ return ZCNodePointN::MakeTailPoint(*this); } IterEasy ItHEasy() {return GetHeadIterEasy ();} @@ -8573,7 +8587,7 @@ namespace ZNsMain 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(iteratorN & ARR_Iterator ) const{++ARR_Iterator;} void ItNext(IterEasyIDc& ARRI_IterEasyID) const { ItNext((TypeLinkC*&)(ARRI_IterEasyID)); } @@ -8581,7 +8595,7 @@ namespace ZNsMain 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(iteratorN & ARR_Iterator ) const{--ARR_Iterator;} void ItPrev(IterEasyIDc& ARRI_IterEasyID) const { ItPrev((TypeLinkC*&)(ARRI_IterEasyID)); } @@ -8591,7 +8605,7 @@ namespace ZNsMain 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 );} + TypeDataC& ItD(iteratorN& 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);} @@ -8599,7 +8613,7 @@ namespace ZNsMain 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);} - TypeDataC& ItD(iteratorC& ARR_Iterator , TypeSize AI_FarNum) const {return GetDataInIter(ARR_Iterator , AI_FarNum);} + TypeDataC& ItD(iteratorN& ARR_Iterator , TypeSize AI_FarNum) const {return GetDataInIter(ARR_Iterator , AI_FarNum);} public : };/* diff --git a/ZCppMain/ZtCArray.H b/ZCppMain/ZtCArray.H index 5d124aa..f318f84 100644 --- a/ZCppMain/ZtCArray.H +++ b/ZCppMain/ZtCArray.H @@ -22,7 +22,7 @@ namespace ZNsMain typedef TTypArg TypeArg ; typedef TSize TypeSize ; public: - class ZCNodePoint; class ZCNodePointC ; + class ZCNodePoint; class ZCNodePointN ; public: typedef TypeData* IterEasy ; typedef TypeData* TypeNode ; // ZCLinkPoint::GetNode() 의 반환형. @@ -32,12 +32,17 @@ namespace ZNsMain typedef const TypeThis TypeThisC ; typedef const TypeData TypeDataC ; typedef const TypeNode TypeNodeC ; // ZCLinkPoint::GetNode() const 의 반환형. + typedef const TypeIter TypeIterC ; typedef const IterEasy IterEasyC ; - typedef ZCNodePointC iteratorC ; + /**********************************************/ + typedef const ZCNodePoint ZCNodePointC; + typedef const ZCNodePoint iteratorC ; /**********************************************/ typedef ZCNodePoint iterator ; - typedef ZCNodePointC const_iterator; + typedef ZCNodePointN const_iterator; + typedef ZCNodePointN iteratorN ; + typedef ZCNodePointN TypeIterN ; public: @@ -87,30 +92,30 @@ namespace ZNsMain TypeDataC& operator* () const{return *mp_Data;} TypeDataC* operator->() const{return mp_Data;} - ZCNodePoint& operator++( ){++mp_Data; ++ml_ElePos; return *this;} - ZCNodePoint operator++(int){++mp_Data; ++ml_ElePos; return *this;} + TypeIter & operator++( ) {++mp_Data; ++ml_ElePos; return *this;} + TypeIter operator++(int) {++mp_Data; ++ml_ElePos; return *this;} - const ZCNodePoint& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;} - const ZCNodePoint operator++(int) const{++mp_Data; ++ml_ElePos; return *this;} + ZCNodePointC& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;} + ZCNodePointC operator++(int) const{++mp_Data; ++ml_ElePos; return *this;} - ZCNodePoint operator+(TSize AL_AddPos) const + TypeIter operator+(TSize AL_AddPos) const { return ZCNodePoint(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos); }/* - ZCNodePoint operator+(TSize AL_AddPos) const*/ + TypeIter operator+(TSize AL_AddPos) const*/ - bool operator == (const ZCNodePoint& rhs) const + bool operator == (ZCNodePointC& rhs) const { return ml_ElePos == rhs.ml_ElePos; } - bool operator != (const ZCNodePoint& rhs) const + bool operator != (ZCNodePointC& rhs) const { return ml_ElePos != rhs.ml_ElePos; } - bool operator > (const ZCNodePoint& rhs) const + bool operator > (ZCNodePointC& rhs) const { return ml_ElePos > rhs.ml_ElePos; } - bool operator >= (const ZCNodePoint& rhs) const + bool operator >= (ZCNodePointC& rhs) const { return ml_ElePos >= rhs.ml_ElePos; } - bool operator < (const ZCNodePoint& rhs) const + bool operator < (ZCNodePointC& rhs) const { return ml_ElePos < rhs.ml_ElePos; } - bool operator <= (const ZCNodePoint& rhs) const + bool operator <= (ZCNodePointC& rhs) const { return ml_ElePos <= rhs.ml_ElePos; } bool operator == (TypeSize AL_Size) const @@ -131,7 +136,7 @@ namespace ZNsMain class ZCNodePoint*/ - class ZCNodePointC + class ZCNodePointN { private: mutable TypeData* mp_Data ; @@ -139,7 +144,7 @@ namespace ZNsMain const ZtCArray& mr_CArray; public: - ZCNodePointC(const ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos) : + ZCNodePointN(const ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos) : mr_CArray(AR_CArray) /*****************************************************************/ { @@ -147,27 +152,27 @@ namespace ZNsMain mr_CArray=&AR_CArray; ml_ElePos=AL_ElePos ; }/* - ZCNodePointC(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)*/ + ZCNodePointN(ZtCArray& AR_CArray, Type& AR_CData, TSize AL_ElePos)*/ - ZCNodePointC(ZtCArray& AR_CArray) : mr_CArray(AR_CArray) + ZCNodePointN(ZtCArray& AR_CArray) : mr_CArray(AR_CArray) { mp_Data = AR_CArray.mp_TypeArr ; ml_ElePos=(AR_CArray.size()>0 ? 1 : 0 ) ; }/* - ZCNodePointC(ZtCArray& AR_CArray)*/ + ZCNodePointN(ZtCArray& AR_CArray)*/ - ZCNodePointC(const ZCNodePointC& rhs) : mr_CArray(rhs.mr_CArray) + ZCNodePointN(const ZCNodePointN& rhs) : mr_CArray(rhs.mr_CArray) { mp_Data = rhs.mp_TypeArr ; ml_ElePos=(mr_CArray.size()>0 ? 1 : 0 ) ; }/* - ZCNodePointC(const ZCNodePointC& rhs)*/ - ZCNodePointC(const ZCNodePoint & rhs) : mr_CArray(rhs.mr_CArray) + ZCNodePointN(const ZCNodePointN& rhs)*/ + ZCNodePointN(const ZCNodePoint & rhs) : mr_CArray(rhs.mr_CArray) { mp_Data = rhs.mp_TypeArr ; ml_ElePos=(mr_CArray.size()>0 ? 1 : 0 ) ; }/* - ZCNodePointC(const ZCNodePoint & rhs)*/ + ZCNodePointN(const ZCNodePoint & rhs)*/ TypeSize size () const{return mr_CArray.size();} @@ -177,30 +182,27 @@ namespace ZNsMain TypeDataC* operator->() const{return mp_Data;} - ZCNodePointC& operator++( ){++mp_Data; ++ml_ElePos; return *this;} - ZCNodePointC operator++(int){++mp_Data; ++ml_ElePos; return *this;} + TypeIterN& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;} + TypeIterN operator++(int) const{++mp_Data; ++ml_ElePos; return *this;} - const ZCNodePointC& operator++( ) const{++mp_Data; ++ml_ElePos; return *this;} - const ZCNodePointC operator++(int) const{++mp_Data; ++ml_ElePos; return *this;} - - ZCNodePointC operator+(TSize AL_AddPos) const + TypeIterN operator+(TSize AL_AddPos) const { - return ZCNodePointC(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos); + return ZCNodePointN(*this, mp_Data+AL_AddPos, ml_ElePos+AL_AddPos); }/* - ZCNodePointC operator+(TSize AL_AddPos) const*/ + TypeIterN operator+(TSize AL_AddPos) const*/ - bool operator == (const ZCNodePointC& rhs) const + bool operator == (const ZCNodePointN& rhs) const { return ml_ElePos == rhs.ml_ElePos; } - bool operator != (const ZCNodePointC& rhs) const + bool operator != (const ZCNodePointN& rhs) const { return ml_ElePos != rhs.ml_ElePos; } - bool operator > (const ZCNodePointC& rhs) const + bool operator > (const ZCNodePointN& rhs) const { return ml_ElePos > rhs.ml_ElePos; } - bool operator >= (const ZCNodePointC& rhs) const + bool operator >= (const ZCNodePointN& rhs) const { return ml_ElePos >= rhs.ml_ElePos; } - bool operator < (const ZCNodePointC& rhs) const + bool operator < (const ZCNodePointN& rhs) const { return ml_ElePos < rhs.ml_ElePos; } - bool operator <= (const ZCNodePointC& rhs) const + bool operator <= (const ZCNodePointN& rhs) const { return ml_ElePos <= rhs.ml_ElePos; } bool operator == (TypeSize AL_Size) const @@ -218,7 +220,7 @@ namespace ZNsMain public: };/* - class ZCNodePointC*/ + class ZCNodePointN*/ public : @@ -465,11 +467,11 @@ namespace ZNsMain void push_front(TypeArg AR_TypeArg){AddHead(AR_TypeArg);} void push_back (TypeArg AR_TypeArg){AddTail(AR_TypeArg);} - Type& push_front(){return AddHead();} - Type& push_back (){return AddTail();} + TypeData& push_front(){return AddHead();} + TypeData& push_back (){return AddTail();} - /***/ ZCNodePoint begin() {return ZCNodePoint(*this);} - const ZCNodePoint begin() const{return ZCNodePoint(*this);} + TypeIter begin() {return ZCNodePoint (*this);} + TypeIterN begin() const{return ZCNodePointN(*this);} template void IterElement(TFunctor AO_Functor) @@ -666,101 +668,102 @@ namespace ZNsMain ///////////////////////////////////////////////////////////////////////////*/ - Type* GetHeadIterEasy (){return mp_TypeArr ;} - Type* GetTailIterEasy (){return mp_TypeArr+ml_UseSize-1 ;} - IterEasyID GetHeadIterEasyID(){return (IterEasyID) mp_TypeArr ;} - IterEasyID GetTailIterEasyID(){return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} + TypeData * GetHeadIterEasy () {return mp_TypeArr ;} + TypeData * GetTailIterEasy () {return mp_TypeArr+ml_UseSize-1 ;} + IterEasyID GetHeadIterEasyID() {return (IterEasyID) mp_TypeArr ;} + IterEasyID GetTailIterEasyID() {return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} - const Type* GetHeadIterEasy () const{return mp_TypeArr ;} - const Type* GetTailIterEasy () const{return mp_TypeArr+ml_UseSize-1 ;} - const IterEasyID GetHeadIterEasyID() const{return (IterEasyID) mp_TypeArr ;} - const IterEasyID GetTailIterEasyID() const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} + TypeDataC* GetHeadIterEasy () const{return mp_TypeArr ;} + TypeDataC* GetTailIterEasy () const{return mp_TypeArr+ml_UseSize-1 ;} + IterEasyIDc GetHeadIterEasyID() const{return (IterEasyID) mp_TypeArr ;} + IterEasyIDc GetTailIterEasyID() const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} - void MoveNextIter(Type*& APR_CType ) const{++APR_CType ;} - void MoveNextIter(iterator& ARR_CIterator) const{++ARR_CIterator;} - void MoveNextIter(IterEasyID& AI_IterEasyID) const - { MoveNextIter((Type*&)AI_IterEasyID); } - void MoveNextIter(const Type*& APR_CType ) const{++APR_CType ;} - void MoveNextIter(const iterator& ARR_CIterator) const{++ARR_CIterator;} - void MoveNextIter(const IterEasyID& AI_IterEasyID) - const{ MoveNextIter((const Type*&)AI_IterEasyID); } + void MoveNextIter(TypeData* & APR_CType ) const{++APR_CType ;} + void MoveNextIter(iterator & ARR_CIterator) const{++ARR_CIterator;} + void MoveNextIter(IterEasyID & AI_IterEasyID) const + { MoveNextIter((TypeData*&)AI_IterEasyID); } + void MoveNextIter(TypeDataC* & APR_CType ) const{++APR_CType ;} + void MoveNextIter(iteratorC& ARR_CIterator) const{++ARR_CIterator;} + void MoveNextIter(IterEasyIDc& AI_IterEasyID) + const{ MoveNextIter((TypeDataC*&)AI_IterEasyID); } - void MovePrevIter(Type*& APR_CType ) const{--APR_CType ;} - void MovePrevIter(iterator& ARR_CIterator) const{--ARR_CIterator;} - void MovePrevIter(IterEasyID& AI_IterEasyID) const - { MovePrevIter((Type*&)AI_IterEasyID); } - void MovePrevIter(const Type*& APR_CType ) const{--APR_CType ;} - void MovePrevIter(const iterator& ARR_CIterator) const{--ARR_CIterator;} - void MovePrevIter(const IterEasyID& AI_IterEasyID) - const{ MovePrevIter((const Type*&)AI_IterEasyID); } + void MovePrevIter(TypeData* & APR_CType ) const{--APR_CType ;} + void MovePrevIter(iterator & ARR_CIterator) const{--ARR_CIterator;} + void MovePrevIter(IterEasyID & AI_IterEasyID) const + { MovePrevIter((TypeData*&)AI_IterEasyID); } + void MovePrevIter(TypeDataC* & APR_CType ) const{--APR_CType ;} + void MovePrevIter(iteratorC & ARR_CIterator) const{--ARR_CIterator;} + void MovePrevIter(IterEasyIDc& AI_IterEasyID) + const{ MovePrevIter((TypeDataC*&)AI_IterEasyID); } - Type& GetDataInIter(Type* AP_CType ){return *AP_CType ;} - Type& GetDataInIter(iterator& ARR_CIterator){return *ARR_CIterator ;} - Type& GetDataInIter(IterEasyID AI_IterEasyID){return *(Type*)AI_IterEasyID;} + TypeData& GetDataInIter(TypeData * AP_CType ) {return *AP_CType ;} + TypeData& GetDataInIter(iterator & ARR_CIterator) {return *ARR_CIterator;} + TypeData& GetDataInIter(IterEasyID AI_IterEasyID) + { return *(TypeData *)AI_IterEasyID; } - const Type& GetDataInIter(const Type* AP_CType ) const{return *AP_CType;} - const Type& GetDataInIter(const iterator& ARR_CIterator) const{return *ARR_CIterator;} - const Type& GetDataInIter(const IterEasyID AI_IterEasyID) const - { return *(const Type*)AI_IterEasyID; } + TypeDataC& GetDataInIter(TypeDataC * AP_CType ) const{return *AP_CType;} + TypeDataC& GetDataInIter(iteratorC & ARR_CIterator) const{return *ARR_CIterator;} + TypeDataC& GetDataInIter(IterEasyIDc AI_IterEasyID) const + { return *(TypeDataC*)AI_IterEasyID; } - Type& GetDataInIter(Type* AP_Type , TypeSize AI_FarNum) + TypeData & GetDataInIter(TypeData * AP_Type , TypeSize AI_FarNum) { return *(AP_Type + AI_FarNum) ; } - Type& GetDataInIter(iterator& ARR_CIterator , TypeSize AI_FarNum) + TypeData & GetDataInIter(iterator & ARR_CIterator , TypeSize AI_FarNum) { return *(ARR_CIterator+AI_FarNum) ; } - Type& GetDataInIter(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) - { return GetDataInIter((Type*)ARRI_IterEasyID, AI_FarNum); } + TypeData & GetDataInIter(IterEasyID ARRI_IterEasyID , TypeSize AI_FarNum) + { return GetDataInIter((TypeData*)ARRI_IterEasyID , AI_FarNum); } - const Type& GetDataInIter(const Type* AP_Type , TypeSize AI_FarNum) const + TypeDataC& GetDataInIter(TypeDataC * AP_Type , TypeSize AI_FarNum) const { return *(AP_Type + AI_FarNum); } - const Type& GetDataInIter(iterator& ARR_CIterator, TypeSize AI_FarNum) const + TypeDataC& GetDataInIter(iterator & ARR_CIterator , TypeSize AI_FarNum) const { return *(ARR_CIterator+AI_FarNum); } - const Type& GetDataInIter(const IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) const - { return GetDataInIter((const Type*)ARRI_IterEasyID, AI_FarNum); } + TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID , TypeSize AI_FarNum) const + { return GetDataInIter((TypeDataC*)ARRI_IterEasyID, AI_FarNum); } - Type* ItHEasy(){return mp_TypeArr ;} - Type* ItTEasy(){return mp_TypeArr+ml_UseSize-1 ;} - IterEasyID ItHID (){return (IterEasyID) mp_TypeArr ;} - IterEasyID ItTID (){return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} + TypeData * ItHEasy() {return mp_TypeArr ;} + TypeData * ItTEasy() {return mp_TypeArr+ml_UseSize-1 ;} + IterEasyID ItHID () {return (IterEasyID) mp_TypeArr ;} + IterEasyID ItTID () {return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} - const Type* ItHEasy () const{return mp_TypeArr ;} - const Type* ItTEasy () const{return mp_TypeArr+ml_UseSize-1 ;} - const IterEasyID ItHID() const{return (IterEasyID) mp_TypeArr ;} - const IterEasyID ItTID() const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} + TypeDataC* ItHEasy() const{return mp_TypeArr ;} + TypeDataC* ItTEasy() const{return mp_TypeArr+ml_UseSize-1 ;} + IterEasyIDc ItHID () const{return (IterEasyID) mp_TypeArr ;} + IterEasyIDc ItTID () const{return (IterEasyID)(mp_TypeArr+ml_UseSize-1);} - void ItNext(Type*& APR_CType ) const{++APR_CType ;} - void ItNext(iterator& ARR_CIterator) const{++ARR_CIterator;} - void ItNext(IterEasyID& AI_IterEasyID) const - { ItNext((Type*&)AI_IterEasyID); } - void ItNext(const Type*& APR_CType ) const{++APR_CType ;} - void ItNext(const iterator& ARR_CIterator) const{++ARR_CIterator;} - void ItNext(const IterEasyID& AI_IterEasyID) - const{ ItNext((const Type*&)AI_IterEasyID); } + void ItNext(TypeData* & APR_CType ) const{++APR_CType ;} + void ItNext(iterator & ARR_CIterator) const{++ARR_CIterator;} + void ItNext(IterEasyID & AI_IterEasyID) const + { ItNext((TypeData*&)AI_IterEasyID); } + void ItNext(TypeDataC* & APR_CType ) const{++APR_CType ;} + void ItNext(iteratorC & ARR_CIterator) const{++ARR_CIterator;} + void ItNext(IterEasyIDc& AI_IterEasyID) + const{ ItNext((TypeDataC*&)AI_IterEasyID); } - void ItPrev(Type*& APR_CType ) const{--APR_CType ;} - void ItPrev(iterator& ARR_CIterator) const{--ARR_CIterator;} - void ItPrev(IterEasyID& AI_IterEasyID) const - { ItPrev((Type*&)AI_IterEasyID); } - void ItPrev(const Type*& APR_CType ) const{--APR_CType ;} - void ItPrev(const iterator& ARR_CIterator) const{--ARR_CIterator;} - void ItPrev(const IterEasyID& AI_IterEasyID) - const{ ItPrev((const Type*&)AI_IterEasyID); } + void ItPrev(TypeData* & APR_CType ) const{--APR_CType ;} + void ItPrev(iterator & ARR_CIterator) const{--ARR_CIterator;} + void ItPrev(IterEasyID & AI_IterEasyID) const + { ItPrev((TypeData*&)AI_IterEasyID); } + void ItPrev(TypeDataC* & APR_CType ) const{--APR_CType ;} + void ItPrev(iteratorC & ARR_CIterator) const{--ARR_CIterator;} + void ItPrev(IterEasyIDc& AI_IterEasyID) + const{ ItPrev((TypeDataC*&)AI_IterEasyID); } - Type& ItD(Type* AP_Type ){return GetDataInIter(AP_Type );} - Type& ItD(iterator& ARR_CIterator ){return GetDataInIter(ARR_CIterator );} - Type& ItD(IterEasyID ARRI_IterEasyID ){return GetDataInIter(ARRI_IterEasyID );} - Type& ItD(Type* AP_Type , TypeSize AI_FarNum){return GetDataInIter(AP_Type , AI_FarNum );} - Type& ItD(iterator& ARR_CIterator , TypeSize AI_FarNum){return GetDataInIter(ARR_CIterator , AI_FarNum);} - Type& ItD(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum){return GetDataInIter(ARRI_IterEasyID, AI_FarNum);} + TypeData & ItD(TypeData * AP_Type ) {return GetDataInIter(AP_Type );} + TypeData & ItD(iterator & ARR_CIterator ) {return GetDataInIter(ARR_CIterator );} + TypeData & ItD(IterEasyID ARRI_IterEasyID ) {return GetDataInIter(ARRI_IterEasyID );} + TypeData & ItD(TypeData * AP_Type , TypeSize AI_FarNum) {return GetDataInIter(AP_Type , AI_FarNum );} + TypeData & ItD(iterator & ARR_CIterator , TypeSize AI_FarNum) {return GetDataInIter(ARR_CIterator , AI_FarNum);} + TypeData & ItD(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) {return GetDataInIter(ARRI_IterEasyID, AI_FarNum);} - const Type& ItD(const Type* AP_Type ) const{return GetDataInIter(AP_Type );} - const Type& ItD(const iterator& ARR_CIterator ) const{return GetDataInIter(ARR_CIterator );} - const Type& ItD(const IterEasyID ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID );} - const Type& ItD(const Type* AP_Type , TypeSize AI_FarNum) const{return GetDataInIter(AP_Type );} - const Type& ItD(const iterator& ARR_CIterator , TypeSize AI_FarNum) const{return GetDataInIter(ARR_CIterator , AI_FarNum);} - const Type& ItD(const IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);} + TypeDataC& ItD(TypeDataC * AP_Type ) const{return GetDataInIter(AP_Type );} + TypeDataC& ItD(iteratorC & ARR_CIterator ) const{return GetDataInIter(ARR_CIterator );} + TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID );} + TypeDataC& ItD(TypeDataC * AP_Type , TypeSize AI_FarNum) const{return GetDataInIter(AP_Type );} + TypeDataC& ItD(iteratorC & ARR_CIterator , TypeSize AI_FarNum) const{return GetDataInIter(ARR_CIterator , AI_FarNum);} + TypeDataC& ItD(IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);} public: };/* diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 259c4d6..56ede19 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -796,7 +796,7 @@ namespace ZNsMain public: class ZCLink ; class ZCNodePoint ; - class ZCNodePointC ; + class ZCNodePointN ; public: template friend class ZtCSortObjList; /*********************************************************************/ @@ -818,10 +818,10 @@ namespace ZNsMain typedef ZCLink* IterEasy ; // 가장 간단하게 쓰일 수 있는 반복자. typedef ZCNodePoint TypeIter ; - typedef ZCNodePointC TypeIterC ; + typedef ZCNodePointN TypeIterN ; /*********************************************************************/ typedef ZCNodePoint iterator ; // 다양한 기능을 가진 반복자. - typedef ZCNodePointC const_iterator; + typedef ZCNodePointN const_iterator; /*********************************************************************/ typedef const TypeThis TypeThisC ; @@ -835,7 +835,7 @@ namespace ZNsMain typedef const ZCDataOpt ZCDataOptC ; typedef const IterEasy IterEasyC ; - typedef ZCNodePointC iteratorC ; + typedef ZCNodePointN iteratorN ; /*********************************************************************/ typedef typename TFeeeHeap:: @@ -1207,61 +1207,61 @@ namespace ZNsMain class ZCNodePoint*/ - class ZCNodePointC + class ZCNodePointN { protected: const TypeList& mr_CurrList; mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0 mutable TypeSize ml_CurrPos ; public : - ZCNodePointC(const TypeList& AR_TypeList) : + ZCNodePointN(const TypeList& AR_TypeList) : mr_CurrList(AR_TypeList) { mp_CurrLink = AR_TypeList.HeadPtr(); ml_CurrPos = 1 ; } - ZCNodePointC(const ZCNodePoint & rhs) : + ZCNodePointN(const ZCNodePoint & rhs) : mr_CurrList( rhs.GetMain()), mp_CurrLink(&rhs.GetNode()), ml_CurrPos ( rhs.GetPos ()) {} - ZCNodePointC(const ZCNodePointC& rhs) : + ZCNodePointN(const ZCNodePointN& rhs) : mr_CurrList(rhs.mr_CurrList), mp_CurrLink(rhs.mp_CurrLink), ml_CurrPos (rhs.ml_CurrPos ) {} public : - static ZCNodePointC MakeTailPoint(const TypeList& AR_TypeList) + static ZCNodePointN MakeTailPoint(const TypeList& AR_TypeList) { - ZCNodePointC VO_ZCLinkPoint(AR_TypeList); + ZCNodePointN VO_ZCLinkPoint(AR_TypeList); VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink; VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize; return VO_ZCLinkPoint; /****************/ }/* - static ZCNodePointC MakeTailPoint(const TypeList& AR_TypeList)*/ - static ZCNodePointC MakeTailPoint(const ZCNodePoint& AR_TypeIter) + static ZCNodePointN MakeTailPoint(const TypeList& AR_TypeList)*/ + static ZCNodePointN MakeTailPoint(const ZCNodePoint& AR_TypeIter) { - ZCNodePointC VO_ZCLinkPoint(AR_TypeIter); + ZCNodePointN 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 ZCNodePointC MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/ - static ZCNodePointC MakeTailPoint(const ZCNodePointC& AR_TypeIter) + static ZCNodePointN MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/ + static ZCNodePointN MakeTailPoint(const ZCNodePointN& AR_TypeIter) { - ZCNodePointC VO_ZCLinkPoint(AR_TypeIter); + ZCNodePointN 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 ZCNodePointC MakeTailPoint(const ZCNodePointC& AR_TypeIter)*/ + static ZCNodePointN MakeTailPoint(const ZCNodePointN& AR_TypeIter)*/ public : @@ -1276,7 +1276,7 @@ namespace ZNsMain bool IsEmpty() const{return mr_CurrList.size()<1;} - ZCNodePointC& operator= (const ZCNodePointC& rhs){ return *this; } + ZCNodePointN& operator= (const ZCNodePointN& rhs){ return *this; } TypeDataC& operator*() const{return **mp_CurrLink;} @@ -1284,17 +1284,17 @@ namespace ZNsMain operator TypeNodeC& () const{return *mp_CurrLink;} - bool operator == (const ZCNodePointC& rhs) const + bool operator == (const ZCNodePointN& rhs) const { return ml_CurrPos == rhs.ml_CurrPos; } - bool operator != (const ZCNodePointC& rhs) const + bool operator != (const ZCNodePointN& rhs) const { return ml_CurrPos != rhs.ml_CurrPos; } - bool operator > (const ZCNodePointC& rhs) const + bool operator > (const ZCNodePointN& rhs) const { return ml_CurrPos > rhs.ml_CurrPos; } - bool operator >= (const ZCNodePointC& rhs) const + bool operator >= (const ZCNodePointN& rhs) const { return ml_CurrPos >= rhs.ml_CurrPos; } - bool operator < (const ZCNodePointC& rhs) const + bool operator < (const ZCNodePointN& rhs) const { return ml_CurrPos < rhs.ml_CurrPos; } - bool operator <= (const ZCNodePointC& rhs) const + bool operator <= (const ZCNodePointN& rhs) const { return ml_CurrPos <= rhs.ml_CurrPos; } bool operator == (TypeSize AL_Size) const @@ -1311,44 +1311,44 @@ namespace ZNsMain { return ml_CurrPos <= AL_Size; } - const ZCNodePointC& operator++() const + const ZCNodePointN& operator++() const { mp_CurrLink = mp_CurrLink->mp_NextLink; ++ml_CurrPos; return *this ; }/* - const ZCNodePointC& operator++() const*/ + const ZCNodePointN& operator++() const*/ - const ZCNodePointC& operator--() const + const ZCNodePointN& operator--() const { mp_CurrLink = mp_CurrLink->mp_PrevLink; --ml_CurrPos; return *this ; }/* - const ZCNodePointC& operator--() const*/ + const ZCNodePointN& operator--() const*/ - ZCNodePointC operator++(int) const + ZCNodePointN operator++(int) const { - ZCNodePointC VO_NowPoint(*this); + ZCNodePointN VO_NowPoint(*this); mp_CurrLink = mp_CurrLink->mp_NextLink; ++ml_CurrPos ; return VO_NowPoint ; }/* - ZCNodePointC operator++(int) const*/ + ZCNodePointN operator++(int) const*/ - ZCNodePointC operator--(int) const + ZCNodePointN operator--(int) const { - ZCNodePointC VO_NowPoint(*this); + ZCNodePointN VO_NowPoint(*this); mp_CurrLink = mp_CurrLink->mp_PrevLink; --ml_CurrPos; return VO_NowPoint ; }/* - ZCNodePointC operator--(int) const*/ + ZCNodePointN operator--(int) const*/ - const ZCNodePointC& operator+=(TypeSize AL_Distance) const + const ZCNodePointN& operator+=(TypeSize AL_Distance) const { if(IsEmpty()){return *this;} @@ -1357,20 +1357,20 @@ namespace ZNsMain return *this; /*:::::::::::::::::::::::::::*/ }/* - const ZCNodePointC& operator+=(TypeSize AL_Distance) const*/ + const ZCNodePointN& operator+=(TypeSize AL_Distance) const*/ - const ZCNodePointC& operator-=(TypeSize AL_Distance) const + const ZCNodePointN& operator-=(TypeSize AL_Distance) const { mp_CurrLink = &((*mp_CurrLink)-AL_Distance); ml_CurrPos -= AL_Distance ; return *this; /*::::::::::::::::::::::::::*/ }/* - const ZCNodePointC& operator-=(TypeSize AL_Distance) const*/ + const ZCNodePointN& operator-=(TypeSize AL_Distance) const*/ public: };/* - class ZCNodePointC*/ + class ZCNodePointN*/ class ZCLinkPointEx : public ZCNodePoint @@ -3081,7 +3081,7 @@ namespace ZNsMain { MoveNextIter((TypeLinkC*&)(ARRI_IterEasyID)); } void MoveNextIter(iterator & ARR_Iterator ) const{++ARR_Iterator;} - void MoveNextIter(iteratorC & ARR_Iterator ) const{++ARR_Iterator;} + void MoveNextIter(iteratorN & ARR_Iterator ) const{++ARR_Iterator;} void MovePrevIter(ZCLink* & APR_CLink ) const { APR_CLink=APR_CLink->GetPrevPtr(); @@ -3096,7 +3096,7 @@ namespace ZNsMain { MovePrevIter((TypeLinkC*&)(ARRI_IterEasyID)); } void MovePrevIter(iterator & ARR_Iterator ) const{--ARR_Iterator;} - void MovePrevIter(iteratorC & ARR_Iterator ) const{--ARR_Iterator;} + void MovePrevIter(iteratorN & ARR_Iterator ) const{--ARR_Iterator;} TypeData & GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;} @@ -3106,30 +3106,33 @@ namespace ZNsMain TypeDataC& GetDataInIter(TypeLinkC* AP_CLink ) const { return **AP_CLink ; } - TypeDataC& GetDataInIter(iteratorC AR_Iterator ) const{return *AR_Iterator;} + TypeDataC& GetDataInIter(iteratorN AR_Iterator ) const{return *AR_Iterator;} TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const { return GetDataInIter((TypeLinkC*)ARRI_IterEasyID); } - TypeData & GetDataInIter(TypeLink* AP_CLink , TypeSize AI_FarNum) + TypeData & GetDataInIter(TypeLink * AP_CLink , TypeSize AI_FarNum) {return **(AP_CLink->GetNextPrevPtr(AI_FarNum)) ; } TypeData & GetDataInIter(IterEasyID ARRI_IterEasyID, TypeSize AI_FarNum) { return GetDataInIter((ZCLink*)ARRI_IterEasyID , AI_FarNum); } - TypeData & GetDataInIter(iterator& ARR_Iterator , TypeSize AI_FarNum) + TypeData & GetDataInIter(iterator & ARR_Iterator , TypeSize AI_FarNum) { return GetDataInIter((ZCLink*)ARR_Iterator , AI_FarNum); } TypeDataC& GetDataInIter(TypeLinkC* AP_CLink , TypeSize AI_FarNum) const {return **(AP_CLink->GetNextPrePtr(AI_FarNum)) ; } TypeDataC& GetDataInIter(IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const { return GetDataInIter((ZCLinkC*)ARRI_IterEasyID, AI_FarNum); } - TypeDataC& GetDataInIter(iteratorC& ARR_Iterator , TypeSize AI_FarNum) const + TypeDataC& GetDataInIter(iteratorN& ARR_Iterator , TypeSize AI_FarNum) const { return GetDataInIter((ZCLinkC*)ARR_Iterator , AI_FarNum); } iterator begin () { return ZCNodePoint (*this); } - iteratorC begin () const{ return ZCNodePointC(*this); } + iteratorN begin () const{ return ZCNodePointN(*this); } iterator end () { return ZCNodePoint ::MakeTailPoint(*this); } - iteratorC end () const{ return ZCNodePointC::MakeTailPoint(*this); } + iteratorN end () const{ return ZCNodePointN::MakeTailPoint(*this); } + + iteratorN cbegin () const{ return ZCNodePointN(*this); } + iteratorN cend () const{ return ZCNodePointN::MakeTailPoint(*this); } IterEasy ItHEasy() {return GetHeadIterEasy (); } @@ -3149,7 +3152,7 @@ namespace ZNsMain void ItNext(iterator & ARR_Iterator ) const{++ARR_Iterator;} void ItNext(IterEasyID & ARRI_IterEasyID) const{ItNext((ZCLink*&)(ARRI_IterEasyID));} void ItNext(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetNextPtr() ;} - void ItNext(iteratorC & ARR_Iterator ) const{++ARR_Iterator;} + void ItNext(iteratorN & ARR_Iterator ) const{++ARR_Iterator;} void ItNext(IterEasyIDc& ARRI_IterEasyID) const { ItNext((TypeLinkC*&)(ARRI_IterEasyID)); } @@ -3157,26 +3160,26 @@ namespace ZNsMain void ItPrev(iterator & ARR_Iterator ) const{--ARR_Iterator;} void ItPrev(IterEasyID & ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));} void ItPrev(TypeLinkC* & APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;} - void ItPrev(iteratorC & ARR_Iterator ) const{--ARR_Iterator;} + void ItPrev(iteratorN & 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 );} + 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 );} + TypeDataC& ItD(iteratorN& 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);} - TypeData & ItD(iterator& ARR_Iterator , TypeSize AI_FarNum) {return GetDataInIter(ARR_Iterator , AI_FarNum);} + TypeData & ItD(iterator & ARR_Iterator , TypeSize AI_FarNum) {return GetDataInIter(ARR_Iterator , 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);} - TypeDataC& ItD(iteratorC& ARR_Iterator , TypeSize AI_FarNum) const{return GetDataInIter(ARR_Iterator , AI_FarNum);} + TypeDataC& ItD(iteratorN& ARR_Iterator , TypeSize AI_FarNum) const{return GetDataInIter(ARR_Iterator , AI_FarNum);} diff --git a/ZCppMain/ZtCSimList.H b/ZCppMain/ZtCSimList.H index 47a9858..e8c2e0e 100644 --- a/ZCppMain/ZtCSimList.H +++ b/ZCppMain/ZtCSimList.H @@ -769,7 +769,7 @@ namespace ZNsMain public: class ZCLink ; class ZCNodePoint ; - class ZNodekPointC; + class ZNodekPointN; /**************************************************/ typedef TType Type ; typedef TType TypeData ; @@ -792,10 +792,11 @@ namespace ZNsMain typedef const TypeList TypeListC ; typedef const TypeLink TypeLinkC ; typedef const TypeNode TypeNodeC ; + typedef const TypeIter TypeIterC ; /**************************************************/ typedef ZCNodePoint iterator ; - typedef ZNodekPointC const_iterator ; - typedef ZNodekPointC iteratorC ; + typedef ZNodekPointN const_iterator ; + typedef ZNodekPointN iteratorN ; /**************************************************/ typedef typename TFeeeHeap:: template ZtCBody ZCFreeHeap; @@ -1098,61 +1099,61 @@ namespace ZNsMain class ZCNodePoint*/ - class ZNodekPointC + class ZNodekPointN { protected: const TypeList& mr_CurrList; mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0 mutable TypeSize ml_CurrPos ; public : - ZNodekPointC(const TypeList& AR_TypeList) : + ZNodekPointN(const TypeList& AR_TypeList) : mr_CurrList(AR_TypeList) { mp_CurrLink = AR_TypeList.HeadPtr(); ml_CurrPos = 1 ; } - ZNodekPointC(const ZCNodePoint & rhs) : + ZNodekPointN(const ZCNodePoint & rhs) : mr_CurrList( rhs.GetMain()), mp_CurrLink(&rhs.GetNode()), ml_CurrPos ( rhs.GetPos ()) {} - ZNodekPointC(const ZNodekPointC& rhs) : + ZNodekPointN(const ZNodekPointN& rhs) : mr_CurrList(rhs.mr_CurrList), mp_CurrLink(rhs.mp_CurrLink), ml_CurrPos (rhs.ml_CurrPos ) {} public : - static ZNodekPointC MakeTailPoint(const TypeList& AR_TypeList) + static ZNodekPointN MakeTailPoint(const TypeList& AR_TypeList) { - ZNodekPointC VO_ZCLinkPoint(AR_TypeList); + ZNodekPointN VO_ZCLinkPoint(AR_TypeList); VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink; VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize; return VO_ZCLinkPoint; /****************/ }/* - static ZNodekPointC MakeTailPoint(const TypeList& AR_TypeList)*/ - static ZNodekPointC MakeTailPoint(const ZCNodePoint& AR_TypeIter) + static ZNodekPointN MakeTailPoint(const TypeList& AR_TypeList)*/ + static ZNodekPointN MakeTailPoint(const ZCNodePoint& AR_TypeIter) { - ZNodekPointC VO_ZCLinkPoint(AR_TypeIter); + ZNodekPointN 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 ZNodekPointC MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/ - static ZNodekPointC MakeTailPoint(const ZNodekPointC& AR_TypeIter) + static ZNodekPointN MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/ + static ZNodekPointN MakeTailPoint(const ZNodekPointN& AR_TypeIter) { - ZNodekPointC VO_ZCLinkPoint(AR_TypeIter); + ZNodekPointN 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 ZNodekPointC MakeTailPoint(const ZNodekPointC& AR_TypeIter)*/ + static ZNodekPointN MakeTailPoint(const ZNodekPointN& AR_TypeIter)*/ public : @@ -1167,7 +1168,7 @@ namespace ZNsMain bool IsEmpty() const{return mr_CurrList.size()<1;} - ZNodekPointC& operator= (const ZNodekPointC& rhs){ return *this; } + ZNodekPointN& operator= (const ZNodekPointN& rhs){ return *this; } TypeDataC& operator*() const{return **mp_CurrLink;} @@ -1175,17 +1176,17 @@ namespace ZNsMain operator TypeLinkC& () const{return *mp_CurrLink;} - bool operator == (const ZNodekPointC& rhs) const + bool operator == (const ZNodekPointN& rhs) const { return ml_CurrPos == rhs.ml_CurrPos; } - bool operator != (const ZNodekPointC& rhs) const + bool operator != (const ZNodekPointN& rhs) const { return ml_CurrPos != rhs.ml_CurrPos; } - bool operator > (const ZNodekPointC& rhs) const + bool operator > (const ZNodekPointN& rhs) const { return ml_CurrPos > rhs.ml_CurrPos; } - bool operator >= (const ZNodekPointC& rhs) const + bool operator >= (const ZNodekPointN& rhs) const { return ml_CurrPos >= rhs.ml_CurrPos; } - bool operator < (const ZNodekPointC& rhs) const + bool operator < (const ZNodekPointN& rhs) const { return ml_CurrPos < rhs.ml_CurrPos; } - bool operator <= (const ZNodekPointC& rhs) const + bool operator <= (const ZNodekPointN& rhs) const { return ml_CurrPos <= rhs.ml_CurrPos; } bool operator == (TypeSize AL_Size) const @@ -1202,26 +1203,26 @@ namespace ZNsMain { return ml_CurrPos <= AL_Size; } - const ZNodekPointC& operator++() const + const ZNodekPointN& operator++() const { mp_CurrLink = mp_CurrLink->mp_NextLink; ++ml_CurrPos; return *this ; }/* - const ZNodekPointC& operator++() const*/ + const ZNodekPointN& operator++() const*/ - ZNodekPointC operator++(int) const + ZNodekPointN operator++(int) const { - ZNodekPointC VO_NowPoint(*this); + ZNodekPointN VO_NowPoint(*this); mp_CurrLink = mp_CurrLink->mp_NextLink; ++ml_CurrPos ; return VO_NowPoint ; }/* - ZNodekPointC operator++(int) const*/ + ZNodekPointN operator++(int) const*/ - const ZNodekPointC& operator+=(TypeSize AL_Distance) const + const ZNodekPointN& operator+=(TypeSize AL_Distance) const { if(IsEmpty()){return *this;} @@ -1230,11 +1231,11 @@ namespace ZNsMain return *this; /*:::::::::::::::::::::::::::*/ }/* - const ZNodekPointC& operator+=(TypeSize AL_Distance) const*/ + const ZNodekPointN& operator+=(TypeSize AL_Distance) const*/ public: };/* - class ZNodekPointC*/ + class ZNodekPointN*/ public : @@ -2318,7 +2319,7 @@ namespace ZNsMain void MoveNextIter(iterator & ARR_iterator) { ++ARR_iterator ; } - void MoveNextIter(iteratorC& ARR_iterator) const + void MoveNextIter(iteratorN& ARR_iterator) const { ++ARR_iterator ; } @@ -2337,7 +2338,7 @@ namespace ZNsMain TypeDataC& GetDataInIter(IterEasyIDc APPI_IterEasyID) const { return GetDataInIter((ZCLinkC*)APPI_IterEasyID) ; } - TypeDataC& GetDataInIter(iteratorC& ARR_iterator) const + TypeDataC& GetDataInIter(iteratorN& ARR_iterator) const { return *ARR_iterator ; } @@ -2369,7 +2370,7 @@ namespace ZNsMain void ItNext(IterEasyIDc& APPI_IterEasyID) const { MoveNextIter(APPI_IterEasyID) ; } - void ItNext(iteratorC& ARR_Iterator ) const + void ItNext(iteratorN& ARR_Iterator ) const { ++ARR_Iterator ; } @@ -2388,14 +2389,17 @@ namespace ZNsMain TypeDataC& ItD(IterEasyIDc APPI_IterEasyID ) const { return ItD((ZCLinkC*)APPI_IterEasyID); } - TypeDataC& ItD(iteratorC& ARR_Iterator ) const + TypeDataC& ItD(iteratorN& ARR_Iterator ) const { return *ARR_Iterator; } iterator begin () { return ZCNodePoint (*this); } - iteratorC begin () const{ return ZNodekPointC(*this); } + iteratorN begin () const{ return ZNodekPointN(*this); } iterator end () { return ZCNodePoint ::MakeTailPoint(*this); } - iteratorC end () const{ return ZNodekPointC::MakeTailPoint(*this); } + iteratorN end () const{ return ZNodekPointN::MakeTailPoint(*this); } + + iteratorN cbegin() const{ return ZNodekPointN(*this); } + iteratorN cend () const{ return ZNodekPointN::MakeTailPoint(*this); } ZCLink * HeadPtr() {return mp_HeadLink;} diff --git a/ZCppMainTest/ZtCBaseList_000.cpp b/ZCppMainTest/ZtCBaseList_000.cpp index ff15696..91f1c25 100644 --- a/ZCppMainTest/ZtCBaseList_000.cpp +++ b/ZCppMainTest/ZtCBaseList_000.cpp @@ -691,6 +691,12 @@ namespace ZNsMain cout<