From a1b89271b7ad391e83d635f094b2fb2d885ab68d Mon Sep 17 00:00:00 2001 From: sauron Date: Wed, 15 Oct 2025 12:54:16 +0900 Subject: [PATCH] commit 2025-10-15 12:54 add iterator and func : ZCppMain/ZtCLinkList.H --- ZCppMain/ZMainHead.H | 9 +- ZCppMain/ZtCLinkList.H | 493 +++++++++++++++++++++++++++++++++++++-- ZCppMain/ZtCObjList.H | 3 +- ZCppMainTest/ZtCLinkList_001.cpp | 15 ++ 4 files changed, 490 insertions(+), 30 deletions(-) diff --git a/ZCppMain/ZMainHead.H b/ZCppMain/ZMainHead.H index d33bd68..76290f7 100644 --- a/ZCppMain/ZMainHead.H +++ b/ZCppMain/ZMainHead.H @@ -499,7 +499,7 @@ using namespace std; #define _FOR_ITER_EASY_START0(MainType, MainObj, IterVar, SizeVar) \ { \ - typedef MainType::TypeSize IterTypeSize ; \ + typedef typename MainType::TypeSize IterTypeSize ; \ ZNsMain::IterEasyID IterVar = MainObj.ItHID(); \ \ for(IterTypeSize SizeVar=0; SizeVar ZCDataOpt; typedef ZtCObjOpt ZCLinkOpt; - public : - typedef TCLink ZCLink ; - typedef TCLink TypeData; - typedef TCLink TypeLink; - typedef TTypSize TypeSize; + + typedef TCLink ZCLink ; + typedef TCLink TypeData ; + typedef TCLink TypeLink ; + typedef TCLink TypeNode ; + typedef TTypSize TypeSize ; + + typedef ZCNodePoint TypeIter ; + typedef ZCNodePointN TypeIterN ; + + typedef const TCLink ZCLinkC ; + typedef const TCLink TypeDataC ; + typedef const TCLink TypeLinkC ; + typedef const TypeThis TypeThisC ; + typedef const TypeThis TypeListC ; + typedef const TypeNode TypeNodeC ; + typedef const TypeIter TypeIterC ; + typedef const ZCLinkOpt ZCLinkOptC; + /*************************************************************************/ + typedef TypeIter iterator ; + typedef TypeIterN const_iterator; + + typedef TypeIterN iteratorN ; + /*************************************************************************/ + public : typedef typename TCLink::TypeMain TypeMain; private: @@ -1030,6 +1057,336 @@ namespace ZNsMain }/* const TypeChild& GetChildObj() const*/ + public: + + + class ZCNodePoint + { + protected: + /*****/ TypeList& mr_CurrList; + mutable TypeLink* mp_CurrLink; // 사실상 mp_CurrLink!=0 + mutable TypeSize ml_CurrPos ; + public : + ZCNodePoint(TypeList& AR_TypeList) : + mr_CurrList(AR_TypeList) + { + mp_CurrLink = AR_TypeList.HeadPtr(); + ml_CurrPos = 1 ; + } + ZCNodePoint(const ZCNodePoint& rhs) : + mr_CurrList(rhs.mr_CurrList), + mp_CurrLink(rhs.mp_CurrLink), + ml_CurrPos (rhs.ml_CurrPos ) + {} + public : + + static ZCNodePoint MakeTailPoint(TypeList& AR_TypeList) + { + ZCNodePoint VO_ZCLinkPoint(AR_TypeList); + + VO_ZCLinkPoint.mp_CurrLink = AR_TypeList.mp_TailLink; + VO_ZCLinkPoint.ml_CurrPos = AR_TypeList.ml_LinkSize; + + return VO_ZCLinkPoint; /****************************/ + }/* + static ZCNodePoint MakeTailPoint(TypeList& AR_TypeList)*/ + static ZCNodePoint MakeTailPoint(const TypeIter& AR_TypeIter) + { + ZCNodePoint 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 ZCNodePoint MakeTailPoint(const TypeIter& AR_TypeIter)*/ + + public : + + TypeThis & GetMain() {return mr_CurrList;} + TypeNode & GetNode() {return *mp_CurrLink;} + + TypeThisC& GetMain() const{return mr_CurrList;} + TypeNodeC& GetNode() 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;} + + + ZCNodePoint& operator= (const ZCNodePoint& 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 ZCNodePoint& rhs) const + { return ml_CurrPos == rhs.ml_CurrPos; } + bool operator != (const ZCNodePoint& rhs) const + { return ml_CurrPos != rhs.ml_CurrPos; } + bool operator > (const ZCNodePoint& rhs) const + { return ml_CurrPos > rhs.ml_CurrPos; } + bool operator >= (const ZCNodePoint& rhs) const + { return ml_CurrPos >= rhs.ml_CurrPos; } + bool operator < (const ZCNodePoint& rhs) const + { return ml_CurrPos < rhs.ml_CurrPos; } + bool operator <= (const ZCNodePoint& 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 ZCNodePoint& operator++() const + { + mp_CurrLink = mp_CurrLink->mp_NextLink; + + ++ml_CurrPos; return *this ; + }/* + const ZCNodePoint& operator++() const*/ + + const ZCNodePoint& operator--() const + { + mp_CurrLink = mp_CurrLink->mp_PrevLink; + + --ml_CurrPos; return *this ; + }/* + const ZCNodePoint& operator--() const*/ + + ZCNodePoint operator++(int) const + { + ZCNodePoint VO_NowPoint(*this); + + mp_CurrLink = mp_CurrLink->mp_NextLink; + + ++ml_CurrPos ; return VO_NowPoint ; + }/* + ZCNodePoint operator++(int) const*/ + + ZCNodePoint operator--(int) const + { + ZCNodePoint VO_NowPoint(*this); + + mp_CurrLink = mp_CurrLink->mp_PrevLink; + + --ml_CurrPos; return VO_NowPoint ; + }/* + ZCNodePoint operator--(int) const*/ + + + const ZCNodePoint& operator+=(TypeSize AL_Distance) const + { + if(IsEmpty()){return *this;} + + mp_CurrLink = &((*mp_CurrLink)+AL_Distance) ; + ml_CurrPos += AL_Distance ; + + return *this; /*:::::::::::::::::::::::::::*/ + }/* + const ZCNodePoint& operator+=(TypeSize AL_Distance) const*/ + + const ZCNodePoint& operator-=(TypeSize AL_Distance) const + { + mp_CurrLink = &((*mp_CurrLink)-AL_Distance); + ml_CurrPos -= AL_Distance ; + + return *this; /*::::::::::::::::::::::::::*/ + }/* + const ZCNodePoint& operator-=(TypeSize AL_Distance) const*/ + + public: + };/* + class ZCNodePoint*/ + + + class ZCNodePointN + { + protected: + const TypeList& mr_CurrList; + mutable TypeLinkC* mp_CurrLink; // 사실상 mp_CurrLink!=0 + mutable TypeSize ml_CurrPos ; + public : + ZCNodePointN(const TypeList& AR_TypeList) : + mr_CurrList(AR_TypeList) + { + mp_CurrLink = AR_TypeList.HeadPtr(); + ml_CurrPos = 1 ; + } + ZCNodePointN(const ZCNodePoint & rhs) : + mr_CurrList( rhs.GetMain()), + mp_CurrLink(&rhs.GetNode()), + ml_CurrPos ( rhs.GetPos ()) + {} + ZCNodePointN(const ZCNodePointN& rhs) : + mr_CurrList(rhs.mr_CurrList), + mp_CurrLink(rhs.mp_CurrLink), + ml_CurrPos (rhs.ml_CurrPos ) + {} + public : + + static ZCNodePointN MakeTailPoint(const TypeList& 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 ZCNodePointN MakeTailPoint(const TypeList& AR_TypeList)*/ + static ZCNodePointN MakeTailPoint(const ZCNodePoint& 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 ZCNodePointN MakeTailPoint(const ZCNodePoint& AR_TypeIter)*/ + static ZCNodePointN MakeTailPoint(const ZCNodePointN& 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 ZCNodePointN MakeTailPoint(const ZCNodePointN& AR_TypeIter)*/ + + public : + + TypeThisC& GetMain() const{return mr_CurrList;} + TypeNodeC& GetNode() 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;} + + + ZCNodePointN& operator= (const ZCNodePointN& rhs){ return *this; } + + TypeDataC& operator*() const{return **mp_CurrLink;} + operator TypeNodeC* () const{return mp_CurrLink;} + operator TypeNodeC& () const{return *mp_CurrLink;} + operator TypeNode * () const{return 0 ;} + + + bool operator == (const ZCNodePointN& rhs) const + { return ml_CurrPos == rhs.ml_CurrPos; } + bool operator != (const ZCNodePointN& rhs) const + { return ml_CurrPos != rhs.ml_CurrPos; } + bool operator > (const ZCNodePointN& rhs) const + { return ml_CurrPos > rhs.ml_CurrPos; } + bool operator >= (const ZCNodePointN& rhs) const + { return ml_CurrPos >= rhs.ml_CurrPos; } + bool operator < (const ZCNodePointN& rhs) const + { return ml_CurrPos < rhs.ml_CurrPos; } + bool operator <= (const ZCNodePointN& 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 ZCNodePointN& operator++() const + { + mp_CurrLink = mp_CurrLink->mp_NextLink; + + ++ml_CurrPos; return *this ; + }/* + const ZCNodePointN& operator++() const*/ + + const ZCNodePointN& operator--() const + { + mp_CurrLink = mp_CurrLink->mp_PrevLink; + + --ml_CurrPos; return *this ; + }/* + const ZCNodePointN& operator--() const*/ + + ZCNodePointN operator++(int) const + { + ZCNodePointN VO_NowPoint(*this); + + mp_CurrLink = mp_CurrLink->mp_NextLink; + + ++ml_CurrPos ; return VO_NowPoint ; + }/* + ZCNodePointN operator++(int) const*/ + + ZCNodePointN operator--(int) const + { + ZCNodePointN VO_NowPoint(*this); + + mp_CurrLink = mp_CurrLink->mp_PrevLink; + + --ml_CurrPos; return VO_NowPoint ; + }/* + ZCNodePointN operator--(int) const*/ + + + const ZCNodePointN& operator+=(TypeSize AL_Distance) const + { + if(IsEmpty()){return *this;} + + mp_CurrLink = &((*mp_CurrLink)+AL_Distance) ; + ml_CurrPos += AL_Distance ; + + return *this; /*:::::::::::::::::::::::::::*/ + }/* + const ZCNodePointN& 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 ZCNodePointN& operator-=(TypeSize AL_Distance) const*/ + + public: + };/* + class ZCNodePointN*/ + + + public: + /*############################################################*/ private: ZCLink* NewLink() const @@ -1744,6 +2101,27 @@ namespace ZNsMain void clear(){DeleteAll();} + ZCLink * GetHeadLinkPtr() {return mp_HeadLink;} + ZCLink * GetTailLinkPtr() {return mp_TailLink;} + + ZCLinkC* GetHeadLinkPtr() const{return mp_HeadLink;} + ZCLinkC* GetTailLinkPtr() const{return mp_TailLink;} + + ZCLink * GetLinkPtr(TypeSize AI_Index) {return mp_HeadLink->GetNextPrevPtr(AI_Index-1);} + ZCLinkC* GetLinkPtr(TypeSize AI_Index) const{return mp_HeadLink->GetNextPrevPtr(AI_Index-1);} + + + ZCLink & GetHeadLink(TypeSize AI_Distance) {return (*mp_HeadLink)+AI_Distance;} + ZCLink & GetTailLink(TypeSize AI_Distance) {return (*mp_TailLink)-AI_Distance;} + + ZCLinkC& GetHeadLink(TypeSize AI_Distance) const{return (*mp_HeadLink)+AI_Distance;} + ZCLinkC& GetTailLink(TypeSize AI_Distance) const{return (*mp_TailLink)-AI_Distance;} + + + ZCLink & GetNode(TypeSize AI_Index) {return (*mp_HeadLink)+(AI_Index-1);} + ZCLinkC& GetNode(TypeSize AI_Index) const{return (*mp_HeadLink)+(AI_Index-1);} + + ZCDataOpt GetHeadOpt(){ return ZCDataOpt(mp_HeadLink); } ZCDataOpt GetTailOpt(){ return ZCDataOpt(mp_TailLink); } @@ -1756,34 +2134,31 @@ namespace ZNsMain ZCDataOpt GetObjOpt(TypeSize AI_Index)*/ - ZCLink& HeadRef(){return *mp_HeadLink;} - ZCLink& TailRef(){return *mp_TailLink;} + ZCLink & HeadRef() {return *mp_HeadLink;} + ZCLink & TailRef() {return *mp_TailLink;} + ZCLinkC& HeadRef() const{return *mp_HeadLink;} + ZCLinkC& TailRef() const{return *mp_TailLink;} - ZCLink& HeadRef(TypeSize AI_Distance){return (*mp_HeadLink)+AI_Distance;} - ZCLink& TailRef(TypeSize AI_Distance){return (*mp_TailLink)-AI_Distance;} - - const ZCLink& HeadRef() const{return *mp_HeadLink;} - const ZCLink& TailRef() const{return *mp_TailLink;} - - const ZCLink& HeadRef(TypeSize AI_Distance) const{return (*mp_HeadLink)+AI_Distance;} - const ZCLink& TailRef(TypeSize AI_Distance) const{return (*mp_TailLink)-AI_Distance;} + ZCLink & HeadRef(TypeSize AI_Distance) {return (*mp_HeadLink)+AI_Distance;} + ZCLink & TailRef(TypeSize AI_Distance) {return (*mp_TailLink)-AI_Distance;} + ZCLinkC& HeadRef(TypeSize AI_Distance) const{return (*mp_HeadLink)+AI_Distance;} + ZCLinkC& TailRef(TypeSize AI_Distance) const{return (*mp_TailLink)-AI_Distance;} + ZCLinkOpt HeadOpt() {return ZCLinkOpt(mp_HeadLink);} + ZCLinkOpt TailOpt() {return ZCLinkOpt(mp_TailLink);} - ZCLinkOpt HeadOpt(){return ZCLinkOpt(mp_HeadLink);} - ZCLinkOpt TailOpt(){return ZCLinkOpt(mp_TailLink);} + ZCLinkOptC HeadOpt() const{return ZCLinkOpt(mp_HeadLink);} + ZCLinkOptC TailOpt() const{return ZCLinkOpt(mp_TailLink);} - ZCLinkOpt HeadOpt(TypeSize AI_Distance) + ZCLinkOpt HeadOpt(TypeSize AI_Distance) {if(mp_HeadLink==0){return ZCLinkOpt(0);} return ZCLinkOpt((*mp_HeadLink)+AI_Distance);} - ZCLinkOpt TailOpt(TypeSize AI_Distance) + ZCLinkOpt TailOpt(TypeSize AI_Distance) {if(mp_TailLink==0){return ZCLinkOpt(0);} return ZCLinkOpt((*mp_TailLink)-AI_Distance);} - const ZCLinkOpt HeadOpt() const{return ZCLinkOpt(mp_HeadLink);} - const ZCLinkOpt TailOpt() const{return ZCLinkOpt(mp_TailLink);} - - const ZCLinkOpt HeadOpt(TypeSize AI_Distance) const + ZCLinkOptC HeadOpt(TypeSize AI_Distance) const {if(mp_HeadLink==0){return ZCLinkOpt(0);} return ZCLinkOpt((*mp_HeadLink)+AI_Distance);} - const ZCLinkOpt TailOpt(TypeSize AI_Distance) const + ZCLinkOptC TailOpt(TypeSize AI_Distance) const {if(mp_TailLink==0){return ZCLinkOpt(0);} return ZCLinkOpt((*mp_TailLink)-AI_Distance);} @@ -2375,6 +2750,74 @@ namespace ZNsMain ###############################################################################*/ + IterEasyID GetHeadIterEasyID () {return (IterEasyID) GetHeadLinkPtr();} + IterEasyID GetTailIterEasyID () {return (IterEasyID) GetTailLinkPtr();} + + IterEasyIDc GetHeadIterEasyID () const{return (IterEasyIDc)GetHeadLinkPtr();} + IterEasyIDc GetTailIterEasyID () const{return (IterEasyIDc)GetTailLinkPtr();} + + IterEasyIDc GetHeadIterEasyIDc() const{return (IterEasyIDc)GetHeadLinkPtr();} + IterEasyIDc GetTailIterEasyIDc() const{return (IterEasyIDc)GetTailLinkPtr();} + + + iterator begin () { return ZCNodePoint (*this); } + iteratorN begin () const{ return ZCNodePointN(*this); } + iterator end () { return ZCNodePoint ::MakeTailPoint(*this); } + iteratorN end () const{ return ZCNodePointN::MakeTailPoint(*this); } + + iteratorN cbegin () const{ return ZCNodePointN(*this); } + iteratorN cend () const{ return ZCNodePointN::MakeTailPoint(*this); } + + + IterEasyID ItHID () {return GetHeadIterEasyID ();} + IterEasyID ItTID () {return GetTailIterEasyID ();} + + IterEasyIDc ItHID () const{return GetHeadIterEasyIDc();} + IterEasyIDc ItTID () const{return GetTailIterEasyIDc();} + + IterEasyIDc ItHIDc () const{return GetHeadIterEasyIDc();} + IterEasyIDc ItTIDc () const{return GetTailIterEasyIDc();} + + + void ItNext(TypeLink* & APR_CLink ) const + { APR_CLink=APR_CLink->GetNextPtr(); } + void ItNext(IterEasyID & ARRI_IterEasyID ) const + { ItNext((ZCLink*&)(ARRI_IterEasyID)); } + void ItNext(TypeLinkC* & APR_CLink ) const + { APR_CLink=APR_CLink->GetNextPtr(); } + void ItNext(IterEasyIDc& ARRI_IterEasyID ) const + { ItNext((TypeLinkC*&)(ARRI_IterEasyID)); } + void ItNext(iterator & ARR_Iterator ) const{++ARR_Iterator;} + void ItNext(iteratorN & ARR_Iterator ) const{++ARR_Iterator;} + + void ItPrev(ZCLink* & APR_CLink ) const + { APR_CLink=APR_CLink->GetPrevPtr(); } + void ItPrev(IterEasyID & ARRI_IterEasyID ) const + { ItPrev((ZCLink*&)(ARRI_IterEasyID)); } + void ItPrev(TypeLinkC* & APR_CLink ) const + { APR_CLink=APR_CLink->GetPrevPtr(); } + void ItPrev(IterEasyIDc& ARRI_IterEasyID ) const + { ItPrev((TypeLinkC*&)(ARRI_IterEasyID)); } + void ItPrev(iterator & ARR_Iterator ) const{--ARR_Iterator;} + void ItPrev(iteratorN & ARR_Iterator ) const{--ARR_Iterator;} + + + TypeDataMain & ItD(TypeLink * AP_Link ) {return **AP_Link;} + TypeDataMain & ItD(IterEasyID AH_IterEasyID ) {return **(TypeLink *)(AH_IterEasyID);} + TypeDataMain & ItD(iterator & ARR_Iterator ) {return **ARR_Iterator;} + + TypeDataMainC& ItD(TypeLinkC * AP_Link ) const{return **AP_Link;} + TypeDataMainC& ItD(IterEasyIDc AH_IterEasyID ) const{return **(TypeLinkC*)(AH_IterEasyID);} + TypeDataMainC& ItD(iteratorN & ARR_Iterator ) const{return **ARR_Iterator;} + + TypeDataMain & ItD(TypeLink * AP_Link , TypeSize AI_FarNum) {return *((*AP_Link)+AI_FarNum);} + TypeDataMain & ItD(IterEasyID AH_IterEasyID, TypeSize AI_FarNum) {return *(((TypeLink *)(AH_IterEasyID))+AI_FarNum);} + TypeDataMain & ItD(iterator & ARR_Iterator , TypeSize AI_FarNum) {return *(ARR_Iterator.GetNode()+AI_FarNum);} + + TypeDataMainC& ItD(TypeLinkC * AP_Link , TypeSize AI_FarNum) const{return *((*AP_Link)+AI_FarNum);} + TypeDataMainC& ItD(IterEasyIDc AH_IterEasyID, TypeSize AI_FarNum) const{return *(((TypeLinkC*)(AH_IterEasyID))+AI_FarNum);} + TypeDataMainC& ItD(iteratorN & ARR_Iterator , TypeSize AI_FarNum) const{return *(ARR_Iterator.GetNode()+AI_FarNum);} + public : };/* template ////////////////////////////////////////////////////////////////// diff --git a/ZCppMain/ZtCObjList.H b/ZCppMain/ZtCObjList.H index 152bc7a..c4e5a37 100644 --- a/ZCppMain/ZtCObjList.H +++ b/ZCppMain/ZtCObjList.H @@ -1282,6 +1282,7 @@ namespace ZNsMain TypeDataC& operator*() const{return **mp_CurrLink;} operator TypeNodeC* () const{return mp_CurrLink;} operator TypeNodeC& () const{return *mp_CurrLink;} + operator TypeNode * () const{return 0 ;} bool operator == (const ZCNodePointN& rhs) const @@ -2660,7 +2661,7 @@ namespace ZNsMain __for0(TypeSize, i, ml_LinkSize) { ZtCTypeData:: - GetObjRef(AO_Functor)(VP_LoopLink->mo_DataObjt); + GetObjRef(AO_Functor)(**VP_LoopLink); VP_LoopLink = VP_LoopLink->mp_NextLink ; }/* diff --git a/ZCppMainTest/ZtCLinkList_001.cpp b/ZCppMainTest/ZtCLinkList_001.cpp index 2388f2c..68b0a30 100644 --- a/ZCppMainTest/ZtCLinkList_001.cpp +++ b/ZCppMainTest/ZtCLinkList_001.cpp @@ -251,6 +251,21 @@ namespace ZNsMain cout<<"***********************************************"<