commit 2025-10-19 16:28 add ZCtDataRing::IterHead() & IterTail() etc : ZCppMain/ZMainHead.H

This commit is contained in:
2025-10-19 16:29:16 +09:00
parent d4614dcb09
commit 6d4556236e
2 changed files with 207 additions and 0 deletions

View File

@ -815,6 +815,21 @@ namespace ZNsMain
template<typename TDataNow> void ZftPrint(const TDataNow& AR_Data)
{
cout<<AR_Data;
}
/*//////////////////////////////////////////////////////////////*/
template<typename TDataNow1, typename TDataNow2> void ZftPrint2
(const TDataNow1& AR_Data1, const TDataNow2& AR_Data2)
{
cout<<AR_Data1<<AR_Data2;
}
/*//////////////////////////////////////////////////////////////*/
class ZCEndian class ZCEndian
{ {
private: private:
@ -4123,6 +4138,9 @@ namespace ZNsMain
class ZtCTypeSelfLink class ZtCTypeSelfLink
{ {
public: public:
enum{ZEUseIteHead=1};
enum{ZEUseIteTail=1};
public:
class ZCDataLink ; class ZCDataLink ;
public: public:
typedef TTypData TypeData ; typedef TTypData TypeData ;
@ -4219,6 +4237,7 @@ namespace ZNsMain
public TTypeSelfLink::TypeLink public TTypeSelfLink::TypeLink
{ {
public : public :
typedef TTypeSelfLink TypeSelf ;
typedef ZCtDataRing TypeThis ; typedef ZCtDataRing TypeThis ;
typedef TDataNow TypeData ; typedef TDataNow TypeData ;
public : public :
@ -4407,6 +4426,176 @@ namespace ZNsMain
}/* }/*
void DeleteAll()*/ void DeleteAll()*/
template<typename TFunctor> void IterThis (TFunctor AO_Functor)
{
if(TypeSelf::ZEUseIteHead<1) return;
TypeLink* VP_NowLink = &GetHead() ;
TypeSize VL_LinkSize = size() + 1 ;
__for0(TypeSize, i, VL_LinkSize)
{
ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)(VP_NowLink->GetData());
VP_NowLink = &VP_NowLink->GetNext();
}/*
__for0(TypeSize, i, VL_LinkSize)*/
}/*
template<typename TFunctor> void IterThis (TFunctor AO_Functor)*/
template<typename TFunctor> void IterThisRev(TFunctor AO_Functor)
{
if(TypeSelf::ZEUseIteTail<1) return;
TypeLink* VP_NowLink = &GetTail() ;
TypeSize VL_LinkSize= size() + 1 ;
__for0(TypeSize, i, VL_LinkSize)
{
ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)(VP_NowLink->GetData());
VP_NowLink = &VP_NowLink->GetPrev();
}/*
__for0(TypeSize, i, VL_LinkSize)*/
}/*
template<typename TFunctor> void IterThisRev(TFunctor AO_Functor)*/
template<typename TFunctor> void IterHead (TFunctor AO_Functor)
{
if(TypeSelf::ZEUseIteHead<1) return;
TypeLink* VP_NowLink = &this->GetNext();
TypeSize VL_LinkSize = size() ;
__for0(TypeSize, i, VL_LinkSize)
{
ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)(VP_NowLink->GetData());
VP_NowLink = &VP_NowLink->GetNext();
}/*
__for0(TypeSize, i, VL_LinkSize)*/
}/*
template<typename TFunctor> void IterHead (TFunctor AO_Functor)*/
template<typename TFunctor> void IterTail (TFunctor AO_Functor)
{
if(TypeSelf::ZEUseIteTail<1) return ;
TypeLinkC* VP_NowLink = &this->GetTail();
TypeSize VL_LinkSize= size() ;
__for0(TypeSize, i, VL_LinkSize)
{
ZtCTypeData<TFunctor>::
GetObjRef(AO_Functor)(VP_NowLink->GetData());
VP_NowLink = &VP_NowLink->GetPrev();
}/*
__for0(TypeSize, i, VL_LinkSize)*/
}/*
template<typename TFunctor> void IterTail (TFunctor AO_Functor)*/
template<typename TFunctor, typename TTypeHelp>
void IterThis (TFunctor AO_Functor, TTypeHelp AO_TypeHelp)
{
if(TypeSelf::ZEUseIteHead<1){return;}
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
TypeLink* VP_NowLink = &this->GetHead() ;
TypeSize VL_LinkSize= size() + 1 ;
__for0(TypeSize, i, VL_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
VP_NowLink->GetData(), ZCCheckRef::PassData(AO_TypeHelp)
);
VP_NowLink = &VP_NowLink->GetNext(); ///////
}/*
__for0(TypeSize, i, VL_LinkSize)*/
}/*
template<typename TFunctor, typename TTypeHelp>
void IterThis (TFunctor AO_Functor, TTypeHelp AO_TypeHelp)*/
template<typename TFunctor, typename TTypeHelp>
void IterThisRev(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)
{
if(TypeSelf::ZEUseIteTail<1){return;}
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
TypeLink* VP_NowLink = &this->GetTail() ;
TypeSize VL_LinkSize= size() + 1 ;
__for0(TypeSize, i, VL_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
VP_NowLink->GetData(), ZCCheckRef::PassData(AO_TypeHelp)
);
VP_NowLink = &VP_NowLink->GetPrev(); ///////
}/*
__for0(TypeSize, i, VL_LinkSize)*/
}/*
template<typename TFunctor, typename TTypeHelp>
void IterThisRev(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)*/
template<typename TFunctor, typename TTypeHelp>
void IterHead(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)
{
if(TypeSelf::ZEUseIteHead<1){return;}
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
TypeLink* VP_NowLink = &this->GetNext() ;
TypeSize VL_LinkSize= size() ;
__for0(TypeSize, i, VL_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
VP_NowLink->GetData(), ZCCheckRef::PassData(AO_TypeHelp)
);
VP_NowLink = &VP_NowLink->GetNext(); ///////
}/*
__for0(TypeSize, i, VL_LinkSize)*/
}/*
template<typename TFunctor, typename TTypeHelp>
void IterHead(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)*/
template<typename TFunctor, typename TTypeHelp>
void IterTail(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)
{
if(TypeSelf::ZEUseIteTail<1){return;}
typedef ZNsMain::
ZtCCheckRef<TTypeHelp> ZCCheckRef ;
TypeLink* VP_NowLink = &this->GetTail() ;
TypeSize VL_LinkSize= size() ;
__for0(TypeSize, i, VL_LinkSize)
{
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
VP_NowLink->GetData(), ZCCheckRef::PassData(AO_TypeHelp)
);
VP_NowLink = &VP_NowLink->GetPrev(); ///////
}/*
__for0(TypeSize, i, VL_LinkSize)*/
}/*
template<typename TFunctor, typename TTypeHelp>
void IterTail(TFunctor AO_Functor, TTypeHelp AO_TypeHelp)*/
public : public :
};/* };/*
template //////////////////////////////////////////////////////////////// template ////////////////////////////////////////////////////////////////

View File

@ -196,6 +196,24 @@ namespace ZNsMain
cout<<"# VO_CDataRing Size = "<<VO_CDataRing.size()<<endl; cout<<"# VO_CDataRing Size = "<<VO_CDataRing.size()<<endl;
cout<<"# VO_CDataRing Data = "<<VO_CDataRing <<endl; cout<<"# VO_CDataRing Data = "<<VO_CDataRing <<endl;
cout<<"************************************"<<endl; cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterThis = "<<endl;
VO_CDataRing.IterThis(&ZftPrint<string>); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterHead = "<<endl;
VO_CDataRing.IterHead(&ZftPrint<string>); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterTail = "<<endl;
VO_CDataRing.IterTail(&ZftPrint<string>); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterThisRev = "<<endl;
VO_CDataRing.IterThisRev(&ZftPrint<string>); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterThisRev(HelpType char(',')) = "<<endl;
VO_CDataRing.IterThisRev(&ZftPrint2<string, char>, char(',')); cout<<endl;
cout<<"************************************"<<endl;
cout<<"# VO_CDataRing IterTail(HelpType char(',')) = "<<endl;
VO_CDataRing.IterTail(&ZftPrint2<string, char>, char(',')); cout<<endl;
cout<<"************************************"<<endl;
typedef ZCtDataRing<ZCTypeView> ZCViewRing; typedef ZCtDataRing<ZCTypeView> ZCViewRing;