commit 2025-10-19 16:28 add ZCtDataRing::IterHead() & IterTail() etc : ZCppMain/ZMainHead.H
This commit is contained in:
@ -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
|
||||
{
|
||||
private:
|
||||
@ -4123,6 +4138,9 @@ namespace ZNsMain
|
||||
class ZtCTypeSelfLink
|
||||
{
|
||||
public:
|
||||
enum{ZEUseIteHead=1};
|
||||
enum{ZEUseIteTail=1};
|
||||
public:
|
||||
class ZCDataLink ;
|
||||
public:
|
||||
typedef TTypData TypeData ;
|
||||
@ -4219,6 +4237,7 @@ namespace ZNsMain
|
||||
public TTypeSelfLink::TypeLink
|
||||
{
|
||||
public :
|
||||
typedef TTypeSelfLink TypeSelf ;
|
||||
typedef ZCtDataRing TypeThis ;
|
||||
typedef TDataNow TypeData ;
|
||||
public :
|
||||
@ -4407,6 +4426,176 @@ namespace ZNsMain
|
||||
}/*
|
||||
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 :
|
||||
};/*
|
||||
template ////////////////////////////////////////////////////////////////
|
||||
|
@ -196,6 +196,24 @@ namespace ZNsMain
|
||||
cout<<"# VO_CDataRing Size = "<<VO_CDataRing.size()<<endl;
|
||||
cout<<"# VO_CDataRing Data = "<<VO_CDataRing <<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;
|
||||
|
Reference in New Issue
Block a user