commit 2025-09-01 11:37 add Replace() in ZCppMain/ZCStringStd.H
This commit is contained in:
@ -17,7 +17,9 @@ namespace ZNsMain
|
|||||||
typedef ZNsChars::ZNsType::ZtCTypeChars<char> ZCTypeChars;
|
typedef ZNsChars::ZNsType::ZtCTypeChars<char> ZCTypeChars;
|
||||||
typedef ZNsChars::ZtCMainChars<ZCTypeChars> ZCMainChars;
|
typedef ZNsChars::ZtCMainChars<ZCTypeChars> ZCMainChars;
|
||||||
public:
|
public:
|
||||||
typedef char TypeData ;
|
typedef char TypeChar ;
|
||||||
|
typedef char* TypePChar ;
|
||||||
|
typedef const char* TypeCPChar;
|
||||||
typedef std::string TypeBase ;
|
typedef std::string TypeBase ;
|
||||||
typedef std::string TypeStrStd;
|
typedef std::string TypeStrStd;
|
||||||
typedef ZTypLength TypeLength;
|
typedef ZTypLength TypeLength;
|
||||||
@ -29,28 +31,46 @@ namespace ZNsMain
|
|||||||
ZCStringStd(const char* APC_Origin, TypeLength AL_Length): TypeStrStd(APC_Origin, AL_Length){}
|
ZCStringStd(const char* APC_Origin, TypeLength AL_Length): TypeStrStd(APC_Origin, AL_Length){}
|
||||||
ZCStringStd(const char* APC_Origin): TypeStrStd(APC_Origin){}
|
ZCStringStd(const char* APC_Origin): TypeStrStd(APC_Origin){}
|
||||||
|
|
||||||
ZCStringStd& operator==(const ZCStringStd& rhs)
|
ZCStringStd& operator=(const ZCStringStd& rhs)
|
||||||
{
|
{
|
||||||
|
if(this==&rhs){ return *this; }
|
||||||
|
|
||||||
this->TypeStrStd::operator=(rhs); return *this;
|
this->TypeStrStd::operator=(rhs); return *this;
|
||||||
}/*
|
}/*
|
||||||
ZCStringStd& operator==(const ZCStringStd& rhs)*/
|
ZCStringStd& operator=(const ZCStringStd& rhs)*/
|
||||||
|
|
||||||
|
ZCStringStd& operator=(const TypeBase& rhs)
|
||||||
|
{
|
||||||
|
if(this->data()==rhs.data()){ return *this; }
|
||||||
|
|
||||||
|
this->TypeStrStd::operator=(rhs); return *this;
|
||||||
|
}/*
|
||||||
|
ZCStringStd& operator=(const TypeBase& rhs)*/
|
||||||
|
|
||||||
|
|
||||||
template<typename TPosList> void FindPosToList
|
template<typename TPosList> void FindPosToList
|
||||||
(const char* APC_SearchData, TypeLength AL_SearchLen, TPosList& ARR_CPosList)
|
(
|
||||||
|
const char* APC_SearchData, TypeLength AL_SearchLen,
|
||||||
|
TPosList& ARR_CPosList , TypeLength AL_Offset=0
|
||||||
|
)
|
||||||
|
/*########################################################*/
|
||||||
{
|
{
|
||||||
// TPosList : ZNsMain::ZtCList<TypeLength> etc
|
// TPosList : ZNsMain::ZtCList<TypeLength> etc
|
||||||
|
|
||||||
|
if(0 > AL_Offset) AL_Offset=0 ;
|
||||||
|
if(this->size() <= AL_Offset) return ;
|
||||||
if(this->size() < 1 ) return ;
|
if(this->size() < 1 ) return ;
|
||||||
|
|
||||||
const char* VPC_OriginStart = this->data();
|
const char* VPC_OriginStart = this->data();
|
||||||
TypeLength VL_OriginLen = this->size();
|
TypeLength VL_OriginLen = this->size();
|
||||||
TypeLength VL_FindPos = -1 ;
|
TypeLength VL_FindPos = -1 ;
|
||||||
TypeLength VL_Offset = 0 ;
|
TypeLength VL_OffsetNow = AL_Offset ;
|
||||||
|
|
||||||
while /*::::::::::::::::::::::::::::::::::::::::::::::*/
|
while /*::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||||
( ( VL_FindPos = ZCMainChars::FindPos
|
(
|
||||||
|
( VL_FindPos = ZCMainChars::FindPos
|
||||||
( VPC_OriginStart, APC_SearchData,
|
( VPC_OriginStart, APC_SearchData,
|
||||||
VL_OriginLen , AL_SearchLen, VL_Offset
|
VL_OriginLen , AL_SearchLen , VL_OffsetNow
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
>= 0
|
>= 0
|
||||||
@ -59,18 +79,22 @@ namespace ZNsMain
|
|||||||
{
|
{
|
||||||
ARR_CPosList.push_back(VL_FindPos);
|
ARR_CPosList.push_back(VL_FindPos);
|
||||||
|
|
||||||
VL_Offset = VL_FindPos + AL_SearchLen;
|
VL_OffsetNow = VL_FindPos + AL_SearchLen;
|
||||||
}
|
}
|
||||||
/*::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
/*::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||||
}/*
|
}/*
|
||||||
template<typename TPosList> void FindPosToList
|
template<typename TPosList> void FindPosToList
|
||||||
(const char* APC_SearchData, TypeLength AL_SearchLen, TFindList& ARR_CPosList)
|
(
|
||||||
*/
|
const char* APC_SearchData, TypeLength AL_SearchLen,
|
||||||
|
TPosList& ARR_CPosList , TypeLength AL_Offset=0
|
||||||
|
)
|
||||||
|
##########################################################*/
|
||||||
|
|
||||||
|
|
||||||
template<typename TPosList> ZCStringStd& ReplaceToOutByPosList
|
template<typename TPosList> ZCStringStd& ReplaceToOutByPosList
|
||||||
(
|
(
|
||||||
TPosList& AR_CPosList ,
|
TPosList& AR_CPosList ,
|
||||||
const char* APC_Replace ,
|
TypeCPChar APC_Replace ,
|
||||||
TypeLength AL_Replace ,
|
TypeLength AL_Replace ,
|
||||||
TypeLength AL_Searched ,
|
TypeLength AL_Searched ,
|
||||||
ZCStringStd& ARR_SaveOut
|
ZCStringStd& ARR_SaveOut
|
||||||
@ -89,20 +113,20 @@ namespace ZNsMain
|
|||||||
TypeLength VL_NeedSize = VL_ThisSize +
|
TypeLength VL_NeedSize = VL_ThisSize +
|
||||||
(AL_Replace-AL_Searched) * VL_PosListSize ;
|
(AL_Replace-AL_Searched) * VL_PosListSize ;
|
||||||
|
|
||||||
char* VPC_ThisStart = this->data() ;
|
TypePChar VPC_ThisStart = this->data() ;
|
||||||
IterEasyID VH_IterEasyID = AR_CPosList.ItHID();
|
IterEasyID VH_IterEasyID = AR_CPosList.ItHID();
|
||||||
TypeLength VL_SearchedPos= 0 ;
|
TypeLength VL_SearchedPos= 0 ;
|
||||||
TypeLength VL_SearchedPre= 0 ; // VL_SearchedPos 의 이전 값
|
TypeLength VL_SearchedPre= 0 ; // VL_SearchedPos 의 이전 값
|
||||||
|
|
||||||
if(AL_Replace<=AL_Searched) // 메모리 증가 불필요
|
if(AL_Replace<=AL_Searched) // 메모리 증가 불필요
|
||||||
{
|
{
|
||||||
char* VPC_MoveStart = 0 ;
|
TypePChar VPC_MoveStart = 0 ;
|
||||||
char* VPC_DestStart = 0 ;
|
TypePChar VPC_DestStart = 0 ;
|
||||||
TypeLength VL_MoveStart = 0 ;
|
TypeLength VL_MoveStart = 0 ;
|
||||||
TypeLength VL_DestStart = 0 ;
|
TypeLength VL_DestStart = 0 ;
|
||||||
|
|
||||||
TypeLength VL_MemMoveSize= 0 ;
|
TypeLength VL_MemMoveSize= 0 ;
|
||||||
char* VPC_RepalcePos= 0 ;
|
TypePChar VPC_RepalcePos= 0 ;
|
||||||
|
|
||||||
__for1(TypeLength, i, VL_PosListSize)
|
__for1(TypeLength, i, VL_PosListSize)
|
||||||
{
|
{
|
||||||
@ -155,14 +179,14 @@ namespace ZNsMain
|
|||||||
|
|
||||||
ARR_SaveOut.resize(VL_NeedSize);
|
ARR_SaveOut.resize(VL_NeedSize);
|
||||||
|
|
||||||
char* VPC_OutStart = ARR_SaveOut.data() ;
|
TypePChar VPC_OutStart = ARR_SaveOut.data() ;
|
||||||
char* VPC_CopyStart = 0 ;
|
TypePChar VPC_CopyStart = 0 ;
|
||||||
char* VPC_DestStart = 0 ;
|
TypePChar VPC_DestStart = 0 ;
|
||||||
TypeLength VL_CopyStart = 0 ;
|
TypeLength VL_CopyStart = 0 ;
|
||||||
TypeLength VL_DestStart = 0 ;
|
TypeLength VL_DestStart = 0 ;
|
||||||
|
|
||||||
TypeLength VL_MemCopySize= 0 ;
|
TypeLength VL_MemCopySize= 0 ;
|
||||||
char* VPC_RepalcePos= 0 ;
|
TypePChar VPC_RepalcePos= 0 ;
|
||||||
|
|
||||||
__for1(TypeLength, i, VL_PosListSize)
|
__for1(TypeLength, i, VL_PosListSize)
|
||||||
{
|
{
|
||||||
@ -218,20 +242,64 @@ namespace ZNsMain
|
|||||||
template<typename TPosList> ZCStringStd& ReplaceToOutByPosList
|
template<typename TPosList> ZCStringStd& ReplaceToOutByPosList
|
||||||
(
|
(
|
||||||
TPosList& AR_CPosList ,
|
TPosList& AR_CPosList ,
|
||||||
const char* APC_Replace ,
|
TypeCPChar APC_Replace ,
|
||||||
TypeLength AL_Replace ,
|
TypeLength AL_Replace ,
|
||||||
TypeLength AL_Searched ,
|
TypeLength AL_Searched ,
|
||||||
ZCStringStd& ARR_SaveOut
|
ZCStringStd& ARR_SaveOut
|
||||||
)
|
)
|
||||||
############################################################*/
|
############################################################*/
|
||||||
|
|
||||||
|
|
||||||
|
ZCStringStd& Replace /*####################################################*/
|
||||||
|
(
|
||||||
|
TypeCPChar APC_Search , TypeLength AL_Search ,
|
||||||
|
TypeCPChar APC_Replace, TypeLength AL_Replace, TypeLength AL_Offset=0
|
||||||
|
)
|
||||||
|
/*#########################################################################*/
|
||||||
|
{
|
||||||
|
if(0 > AL_Offset) AL_Offset=0 ;
|
||||||
|
if(this->size() <= AL_Offset) return *this;
|
||||||
|
if(this->size() < 1 ) return *this;
|
||||||
|
|
||||||
|
ZtCList<TypeLength> VO_CPosCList; FindPosToList
|
||||||
|
(
|
||||||
|
APC_Search, AL_Search, RR(VO_CPosCList), AL_Offset
|
||||||
|
);
|
||||||
|
/*////////////////////////////////////////////*/
|
||||||
|
|
||||||
|
ZCStringStd VO_CStringOut; return *this = ReplaceToOutByPosList
|
||||||
|
(
|
||||||
|
VO_CPosCList, APC_Replace, AL_Replace, AL_Search, RR(VO_CStringOut)
|
||||||
|
);
|
||||||
|
/*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||||
|
|
||||||
|
}/*
|
||||||
|
ZCStringStd& Replace /*######################################################
|
||||||
|
(
|
||||||
|
TypeCPChar APC_Search , TypeLength AL_Search ,
|
||||||
|
TypeCPChar APC_Replace, TypeLength AL_Replace, TypeLength AL_Offset=0
|
||||||
|
)
|
||||||
|
###########################################################################*/
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
};/*
|
};/*
|
||||||
class ZCStringStd : public std::string*/
|
class ZCStringStd : public std::string*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
std::ostream& operator <<
|
||||||
|
(std::ostream& AR_COStream, const ZCStringStd& AR_CStringBase)
|
||||||
|
{
|
||||||
|
AR_COStream<<static_cast<const std::string&>(AR_CStringBase); return AR_COStream;
|
||||||
|
}/*
|
||||||
|
std::ostream& operator <<
|
||||||
|
(std::ostream& AR_COStream, const ZCStringStd& AR_CStringBase)*/
|
||||||
|
|
||||||
|
|
||||||
}/*
|
}/*
|
||||||
namespace ZNsMain*/
|
namespace ZNsMain*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif //__ZCPPMAIIN_ZCSTRINGSTD_H__
|
#endif //__ZCPPMAIIN_ZCSTRINGSTD_H__
|
||||||
|
@ -2872,6 +2872,7 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
template<typename DeriveType> DeriveType& GetDataType(long AL_Index) */
|
template<typename DeriveType> DeriveType& GetDataType(long AL_Index) */
|
||||||
|
|
||||||
|
|
||||||
void FreeAll()
|
void FreeAll()
|
||||||
{
|
{
|
||||||
ZCLink* VP_Link=mp_HeadLink;
|
ZCLink* VP_Link=mp_HeadLink;
|
||||||
@ -2885,6 +2886,7 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
void FreeAll()*/
|
void FreeAll()*/
|
||||||
|
|
||||||
|
|
||||||
void DeleteAll()
|
void DeleteAll()
|
||||||
{
|
{
|
||||||
ZCLink* VP_CutLink=0;
|
ZCLink* VP_CutLink=0;
|
||||||
@ -2902,6 +2904,7 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
void DeleteAll()*/
|
void DeleteAll()*/
|
||||||
|
|
||||||
|
|
||||||
void ClearAll()
|
void ClearAll()
|
||||||
{
|
{
|
||||||
ZCLink* VP_CutLink=0;
|
ZCLink* VP_CutLink=0;
|
||||||
@ -3714,10 +3717,14 @@ namespace ZNsMain
|
|||||||
template<> string& ZftMakeStr(string& ARR_SaveCStr, bool AB_Bool)*/
|
template<> string& ZftMakeStr(string& ARR_SaveCStr, bool AB_Bool)*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// class ZtCList : simple circular double linked list
|
||||||
|
|
||||||
template ///////////////////////////////////////////////
|
template ///////////////////////////////////////////////
|
||||||
<
|
<
|
||||||
typename TType ,
|
typename TType ,
|
||||||
typename TTypeArg = const TType&,
|
typename TTypeArg = const TType&,
|
||||||
|
typename TTypCAlloc = ZCAllocator ,
|
||||||
typename TTypSize = ZTypLong
|
typename TTypSize = ZTypLong
|
||||||
>
|
>
|
||||||
class ZtCList /*######################################*/
|
class ZtCList /*######################################*/
|
||||||
@ -3727,29 +3734,33 @@ namespace ZNsMain
|
|||||||
public:
|
public:
|
||||||
typedef TType TypeData;
|
typedef TType TypeData;
|
||||||
typedef TTypeArg TypeArg ;
|
typedef TTypeArg TypeArg ;
|
||||||
|
typedef TTypCAlloc TypeAlloc;
|
||||||
typedef TTypSize TypeSize;
|
typedef TTypSize TypeSize;
|
||||||
typedef ZCLink* IterEasy; // 가장 대표적으로 쓰일 수 있는 반복자.
|
typedef ZCLink* IterEasy; // 가장 대표적으로 쓰일 수 있는 반복자.
|
||||||
typedef ZCLink* iterator;
|
typedef ZCLink* iterator;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
class ZCLink
|
class ZCLink : public TypeAlloc
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
friend class ZtCList;
|
friend class ZtCList;
|
||||||
private:
|
private:
|
||||||
TypeData mo_Data ;
|
TypeData mo_Data ;
|
||||||
ZCLink* mp_NextLink ;
|
ZCLink* mp_NextLink ;
|
||||||
|
ZCLink* mp_PrevLink ;
|
||||||
private:
|
private:
|
||||||
|
|
||||||
ZCLink* GetNextPtr() {return mp_NextLink;}
|
ZCLink* GetNextPtr() {return mp_NextLink;}
|
||||||
|
ZCLink* GetPrevPtr() {return mp_PrevLink;}
|
||||||
const ZCLink* GetNextPtr()const{return mp_NextLink;}
|
const ZCLink* GetNextPtr()const{return mp_NextLink;}
|
||||||
|
const ZCLink* GetPrevPtr()const{return mp_PrevLink;}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ZCLink()
|
ZCLink()
|
||||||
{
|
{
|
||||||
mp_NextLink = 0;
|
mp_NextLink = mp_PrevLink = 0;
|
||||||
}/*
|
}/*
|
||||||
ZCLink()*/
|
ZCLink()*/
|
||||||
|
|
||||||
@ -3757,6 +3768,7 @@ namespace ZNsMain
|
|||||||
{
|
{
|
||||||
mo_Data = rhs.mo_Data ;
|
mo_Data = rhs.mo_Data ;
|
||||||
mp_NextLink = 0 ;
|
mp_NextLink = 0 ;
|
||||||
|
mp_PrevLink = 0 ;
|
||||||
}/*
|
}/*
|
||||||
ZCLink(const ZCLink& rhs)*/
|
ZCLink(const ZCLink& rhs)*/
|
||||||
|
|
||||||
@ -3764,6 +3776,7 @@ namespace ZNsMain
|
|||||||
{
|
{
|
||||||
mo_Data = AR_Data ;
|
mo_Data = AR_Data ;
|
||||||
mp_NextLink = 0 ;
|
mp_NextLink = 0 ;
|
||||||
|
mp_PrevLink = 0 ;
|
||||||
}/*
|
}/*
|
||||||
ZCLink(const ZCLink& rhs)*/
|
ZCLink(const ZCLink& rhs)*/
|
||||||
|
|
||||||
@ -3774,6 +3787,31 @@ namespace ZNsMain
|
|||||||
ZCLink& operator=(const ZCLink& rhs)*/
|
ZCLink& operator=(const ZCLink& rhs)*/
|
||||||
|
|
||||||
|
|
||||||
|
ZCLink* GetNextPrevPtr(TypeSize AL_FarNum)
|
||||||
|
{
|
||||||
|
ZCLink* VP_TmpLink=this;
|
||||||
|
|
||||||
|
if(AL_FarNum>=0)
|
||||||
|
{ while(--AL_FarNum>=0) VP_TmpLink=VP_TmpLink->mp_NextLink; }
|
||||||
|
else{ while(++AL_FarNum<=0) VP_TmpLink=VP_TmpLink->mp_PrevLink; }
|
||||||
|
|
||||||
|
return VP_TmpLink;
|
||||||
|
}/*
|
||||||
|
ZCLink* GetNextPrevPtr(TypeSize AL_FarNum)*/
|
||||||
|
|
||||||
|
const ZCLink* GetNextPrevPtr(TypeSize AL_FarNum) const
|
||||||
|
{
|
||||||
|
ZCLink* VP_TmpLink=const_cast<ZCLink*>(this);
|
||||||
|
|
||||||
|
if(AL_FarNum>=0)
|
||||||
|
{ while(--AL_FarNum>=0) VP_TmpLink=VP_TmpLink->mp_NextLink; }
|
||||||
|
else{ while(++AL_FarNum<=0) VP_TmpLink=VP_TmpLink->mp_PrevLink; }
|
||||||
|
|
||||||
|
return VP_TmpLink;
|
||||||
|
}/*
|
||||||
|
const ZCLink* GetNextPrevPtr(TypeSize AL_FarNum) const*/
|
||||||
|
|
||||||
|
|
||||||
operator TypeData& (){return mo_Data;}
|
operator TypeData& (){return mo_Data;}
|
||||||
operator TypeData (){return mo_Data;}
|
operator TypeData (){return mo_Data;}
|
||||||
TypeData& GetData (){return mo_Data;}
|
TypeData& GetData (){return mo_Data;}
|
||||||
@ -3791,6 +3829,61 @@ namespace ZNsMain
|
|||||||
ZCLink* mp_HeadLink;
|
ZCLink* mp_HeadLink;
|
||||||
ZCLink* mp_TailLink;
|
ZCLink* mp_TailLink;
|
||||||
TypeSize ml_LinkCnt ;
|
TypeSize ml_LinkCnt ;
|
||||||
|
private :
|
||||||
|
|
||||||
|
ZCLink* AddTailLink(ZCLink* AP_NewLink)
|
||||||
|
{
|
||||||
|
if(ml_LinkCnt<1)
|
||||||
|
{
|
||||||
|
mp_HeadLink = AP_NewLink;
|
||||||
|
mp_TailLink = AP_NewLink;
|
||||||
|
|
||||||
|
mp_HeadLink->mp_NextLink = mp_HeadLink ;
|
||||||
|
mp_HeadLink->mp_PrevLink = mp_HeadLink ;
|
||||||
|
|
||||||
|
ml_LinkCnt= 1; return AP_NewLink;
|
||||||
|
}/*
|
||||||
|
if(ml_LinkCnt<1)*/
|
||||||
|
|
||||||
|
mp_TailLink->mp_NextLink = AP_NewLink ;
|
||||||
|
AP_NewLink ->mp_PrevLink = mp_TailLink ;
|
||||||
|
|
||||||
|
AP_NewLink ->mp_NextLink = mp_HeadLink ;
|
||||||
|
mp_HeadLink->mp_PrevLink = AP_NewLink ;
|
||||||
|
|
||||||
|
mp_TailLink = AP_NewLink; ++ml_LinkCnt;
|
||||||
|
|
||||||
|
return AP_NewLink; /*:::::::::::::::::*/
|
||||||
|
}/*
|
||||||
|
ZCLink* AddTailLink(ZCLink* AP_CLink)*/
|
||||||
|
|
||||||
|
ZCLink* AddHeadLink(ZCLink* AP_NewLink)
|
||||||
|
{
|
||||||
|
if(ml_LinkCnt<1)
|
||||||
|
{
|
||||||
|
mp_HeadLink = AP_NewLink;
|
||||||
|
mp_TailLink = AP_NewLink;
|
||||||
|
|
||||||
|
mp_HeadLink->mp_NextLink = mp_HeadLink ;
|
||||||
|
mp_HeadLink->mp_PrevLink = mp_HeadLink ;
|
||||||
|
|
||||||
|
ml_LinkCnt= 1; return AP_NewLink;
|
||||||
|
}/*
|
||||||
|
if(ml_LinkCnt<1)*/
|
||||||
|
|
||||||
|
AP_NewLink ->mp_NextLink = mp_HeadLink ;
|
||||||
|
mp_HeadLink->mp_PrevLink = AP_NewLink ;
|
||||||
|
|
||||||
|
AP_NewLink ->mp_PrevLink = mp_TailLink ;
|
||||||
|
mp_TailLink->mp_NextLink = AP_NewLink ;
|
||||||
|
|
||||||
|
mp_HeadLink = AP_NewLink; ++ml_LinkCnt;
|
||||||
|
|
||||||
|
return AP_NewLink; /*:::::::::::::::::*/
|
||||||
|
}/*
|
||||||
|
ZCLink* AddHeadLink(ZCLink* AP_CLink)
|
||||||
|
|
||||||
|
private :*/
|
||||||
public :
|
public :
|
||||||
|
|
||||||
ZtCList()
|
ZtCList()
|
||||||
@ -3807,11 +3900,12 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
~ZtCList()*/
|
~ZtCList()*/
|
||||||
|
|
||||||
|
|
||||||
void DeleteAll()
|
void DeleteAll()
|
||||||
{
|
{
|
||||||
ZCLink* VP_NowLink = mp_HeadLink;
|
ZCLink* VP_NowLink = mp_HeadLink;
|
||||||
|
|
||||||
while(VP_NowLink!=0)
|
while(--ml_LinkCnt>=0)
|
||||||
{
|
{
|
||||||
ZCLink* VP_NextLink =
|
ZCLink* VP_NextLink =
|
||||||
VP_NowLink->mp_NextLink ;
|
VP_NowLink->mp_NextLink ;
|
||||||
@ -3820,7 +3914,7 @@ namespace ZNsMain
|
|||||||
|
|
||||||
VP_NowLink = VP_NextLink;
|
VP_NowLink = VP_NextLink;
|
||||||
}/*
|
}/*
|
||||||
while(VP_NowLink!=0)*/
|
while(--ml_LinkCnt>=0)*/
|
||||||
|
|
||||||
mp_HeadLink =0 ;
|
mp_HeadLink =0 ;
|
||||||
mp_TailLink =0 ;
|
mp_TailLink =0 ;
|
||||||
@ -3829,60 +3923,80 @@ namespace ZNsMain
|
|||||||
void DeleteAll()*/
|
void DeleteAll()*/
|
||||||
|
|
||||||
|
|
||||||
TypeData& AddTail()
|
TypeData& AddTail( /*++++++++++++*/ )
|
||||||
{
|
{ return AddTailLink(new ZCLink )->mo_Data; }
|
||||||
ZCLink* VP_NewLink = new ZCLink;
|
|
||||||
|
|
||||||
if(ml_LinkCnt<1)
|
|
||||||
{
|
|
||||||
mp_HeadLink = VP_NewLink;
|
|
||||||
mp_TailLink = VP_NewLink;
|
|
||||||
ml_LinkCnt = 1 ;
|
|
||||||
|
|
||||||
return VP_NewLink->mo_Data;
|
|
||||||
}/*
|
|
||||||
if(ml_LinkCnt<1)*/
|
|
||||||
|
|
||||||
mp_TailLink->
|
|
||||||
mp_NextLink = VP_NewLink;
|
|
||||||
mp_TailLink = VP_NewLink;
|
|
||||||
ml_LinkCnt ++ ;
|
|
||||||
|
|
||||||
return VP_NewLink->mo_Data;
|
|
||||||
}/*
|
|
||||||
TypeData& AddTail()*/
|
|
||||||
|
|
||||||
TypeData& AddTail(TypeArg AO_ArgData)
|
TypeData& AddTail(TypeArg AO_ArgData)
|
||||||
|
{ return AddTailLink(new ZCLink(AO_ArgData))->mo_Data; }
|
||||||
|
|
||||||
|
|
||||||
|
void DeleteHead()
|
||||||
{
|
{
|
||||||
ZCLink* VP_NewLink = new ZCLink(AO_ArgData);
|
if(ml_LinkCnt<1) return;
|
||||||
|
|
||||||
if(ml_LinkCnt<1)
|
ZCLink* VP_TempLink = mp_HeadLink ;
|
||||||
|
mp_HeadLink = mp_HeadLink->mp_NextLink ;
|
||||||
|
|
||||||
|
delete VP_TempLink;
|
||||||
|
|
||||||
|
if(--ml_LinkCnt<1)
|
||||||
{
|
{
|
||||||
mp_HeadLink = VP_NewLink;
|
mp_HeadLink = mp_TailLink =0; return;
|
||||||
mp_TailLink = VP_NewLink;
|
|
||||||
ml_LinkCnt = 1 ;
|
|
||||||
|
|
||||||
return VP_NewLink->mo_Data;
|
|
||||||
}/*
|
}/*
|
||||||
if(ml_LinkCnt<1)*/
|
if(--ml_LinkCnt<1)*/
|
||||||
|
|
||||||
mp_TailLink->
|
mp_HeadLink->mp_PrevLink = mp_TailLink ;
|
||||||
mp_NextLink = VP_NewLink;
|
mp_TailLink->mp_NextLink = mp_HeadLink ;
|
||||||
mp_TailLink = VP_NewLink;
|
|
||||||
ml_LinkCnt ++ ;
|
|
||||||
|
|
||||||
return VP_NewLink->mo_Data;
|
|
||||||
}/*
|
}/*
|
||||||
TypeData& AddTail(TypeArg AO_ArgData)*/
|
void DeleteHead()*/
|
||||||
|
|
||||||
|
|
||||||
|
void DeleteTail()
|
||||||
|
{
|
||||||
|
if(ml_LinkCnt<1) return;
|
||||||
|
|
||||||
|
ZCLink* VP_TempLink = mp_TailLink ;
|
||||||
|
mp_TailLink = mp_TailLink->mp_PrevLink ;
|
||||||
|
|
||||||
|
delete VP_TempLink;
|
||||||
|
|
||||||
|
if(--ml_LinkCnt<1)
|
||||||
|
{
|
||||||
|
mp_HeadLink = mp_TailLink =0; return;
|
||||||
|
}/*
|
||||||
|
if(--ml_LinkCnt<1)*/
|
||||||
|
|
||||||
|
mp_HeadLink->mp_PrevLink = mp_TailLink ;
|
||||||
|
mp_TailLink->mp_NextLink = mp_HeadLink ;
|
||||||
|
}/*
|
||||||
|
void DeleteTail()*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TypeData& GetHeadData(){return mp_HeadLink->mo_Data;}
|
||||||
|
TypeData& GetTailData(){return mp_TailLink->mo_Data;}
|
||||||
|
|
||||||
|
const TypeData& GetHeadData() const{return mp_HeadLink->mo_Data;}
|
||||||
|
const TypeData& GetTailData() const{return mp_TailLink->mo_Data;}
|
||||||
|
|
||||||
operator TypeData&() { return AddTail() ; }
|
operator TypeData&() { return AddTail() ; }
|
||||||
|
|
||||||
|
|
||||||
TypeSize size() const{ return ml_LinkCnt; }
|
TypeSize size() const{ return ml_LinkCnt; }
|
||||||
|
TypeSize GetSize() const{ return ml_LinkCnt; }
|
||||||
|
|
||||||
|
|
||||||
void push_back (TypeArg AO_ArgData){AddTail(AO_ArgData);}
|
|
||||||
void push_front(TypeArg AO_ArgData){AddHead(AO_ArgData);}
|
void push_front(TypeArg AO_ArgData){AddHead(AO_ArgData);}
|
||||||
|
void push_back (TypeArg AO_ArgData){AddTail(AO_ArgData);}
|
||||||
|
|
||||||
|
void pop_front(){DeleteHead();}
|
||||||
|
void pop_back (){DeleteTail();}
|
||||||
|
|
||||||
|
|
||||||
|
TypeData& front(){return GetHeadData();}
|
||||||
|
TypeData& back (){return GetTailData();}
|
||||||
|
|
||||||
|
const TypeData& front() const{return GetHeadData();}
|
||||||
|
const TypeData& back () const{return GetTailData();}
|
||||||
|
|
||||||
|
|
||||||
template<typename TFunctor> void IterElement(TFunctor AO_Functor)
|
template<typename TFunctor> void IterElement(TFunctor AO_Functor)
|
||||||
@ -3999,21 +4113,46 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID) const*/
|
void MoveNextIter(IterEasyIDc& ARRI_IterEasyID) const*/
|
||||||
|
|
||||||
|
|
||||||
|
void MovePrevIter(ZCLink*& APR_CLink ) const
|
||||||
|
{
|
||||||
|
APR_CLink=APR_CLink->GetPrevPtr();
|
||||||
|
}
|
||||||
|
void MovePrevIter(IterEasyID& ARRI_IterEasyID) const
|
||||||
|
{
|
||||||
|
MovePrevIter((ZCLink*&)(ARRI_IterEasyID));
|
||||||
|
}
|
||||||
|
void MovePrevIter(const ZCLink*& APR_CLink ) const
|
||||||
|
{
|
||||||
|
APR_CLink=APR_CLink->GetPrevPtr();
|
||||||
|
}
|
||||||
|
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID) const
|
||||||
|
{
|
||||||
|
MovePrevIter((const ZCLink*&)(ARRI_IterEasyID));
|
||||||
|
}/*
|
||||||
|
void MovePrevIter(IterEasyIDc& ARRI_IterEasyID) const*/
|
||||||
|
|
||||||
|
|
||||||
TypeData& GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
|
TypeData& GetDataInIter(ZCLink* AP_CLink ){return **AP_CLink ;}
|
||||||
TypeData& GetDataInIter(IterEasyID ARRI_IterEasyID)
|
TypeData& GetDataInIter(IterEasyID ARRI_IterEasyID)
|
||||||
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID); }
|
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID); }
|
||||||
|
|
||||||
const TypeData& GetDataInIter(const ZCLink* AP_CLink ) const
|
const TypeData& GetDataInIter(const ZCLink* AP_CLink ) const
|
||||||
{
|
{ return **AP_CLink ; }
|
||||||
return **AP_CLink;
|
|
||||||
}/*
|
|
||||||
const TypeData& GetDataInIter(const ZCLink* AP_CLink) const*/
|
|
||||||
|
|
||||||
const TypeData& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const
|
const TypeData& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const
|
||||||
{
|
{ return GetDataInIter((const ZCLink*)ARRI_IterEasyID); }
|
||||||
return GetDataInIter((const ZCLink*)ARRI_IterEasyID);
|
|
||||||
}/*
|
|
||||||
const TypeData& GetDataInIter(IterEasyIDc ARRI_IterEasyID) const*/
|
TypeData& GetDataInIter( ZCLink* 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); }
|
||||||
|
|
||||||
|
const TypeData& GetDataInIter( const ZCLink* AP_CLink , TypeSize AI_FarNum) const
|
||||||
|
{return **(AP_CLink->GetNextPrePtr(AI_FarNum)) ; }
|
||||||
|
const TypeData& GetDataInIter( IterEasyIDc ARRI_IterEasyID, TypeSize AI_FarNum) const
|
||||||
|
{ return GetDataInIter((ZCLink*)ARRI_IterEasyID, AI_FarNum); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
IterEasy ItHEasy(){return GetHeadIterEasy ();}
|
IterEasy ItHEasy(){return GetHeadIterEasy ();}
|
||||||
@ -4035,14 +4174,23 @@ namespace ZNsMain
|
|||||||
void ItNext(IterEasyIDc& ARRI_IterEasyID) const
|
void ItNext(IterEasyIDc& ARRI_IterEasyID) const
|
||||||
{ ItNext((const ZCLink*&)(ARRI_IterEasyID)); }
|
{ ItNext((const ZCLink*&)(ARRI_IterEasyID)); }
|
||||||
|
|
||||||
|
void ItPrev(ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
||||||
|
void ItPrev(IterEasyID& ARRI_IterEasyID) const{ItPrev((ZCLink*&)(ARRI_IterEasyID));}
|
||||||
|
void ItPrev(const ZCLink*& APR_CLink ) const{ APR_CLink=APR_CLink->GetPrevPtr() ;}
|
||||||
|
void ItPrev(IterEasyIDc& ARRI_IterEasyID) const
|
||||||
|
{ ItPrev((const ZCLink*&)(ARRI_IterEasyID)); }
|
||||||
|
|
||||||
TypeData& ItD(IterEasy AP_CLink ){return GetDataInIter(AP_CLink );}
|
TypeData& ItD(IterEasy AP_CLink ){return GetDataInIter(AP_CLink );}
|
||||||
TypeData& ItD(IterEasyID ARRI_IterEasyID){return GetDataInIter(ARRI_IterEasyID);}
|
TypeData& ItD(IterEasyID ARRI_IterEasyID){return GetDataInIter(ARRI_IterEasyID);}
|
||||||
TypeData& ItD(ZCLink* 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);}
|
|
||||||
|
|
||||||
const TypeData& ItD(const IterEasy AP_CLink ) const{return GetDataInIter(AP_CLink );}
|
const TypeData& ItD(const IterEasy AP_CLink ) const{return GetDataInIter(AP_CLink );}
|
||||||
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID);}
|
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID ) const{return GetDataInIter(ARRI_IterEasyID);}
|
||||||
const TypeData& ItD(const ZCLink* AP_CLink , TypeSize AI_FarNum) const{return GetDataInIter(AP_CLink );}
|
|
||||||
|
|
||||||
|
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);}
|
||||||
|
|
||||||
|
const TypeData& ItD(const IterEasy AP_CLink , TypeSize AI_FarNum) const{return GetDataInIter(AP_CLink , AI_FarNum);}
|
||||||
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID , TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
const TypeData& ItD(IterEasyIDc ARRI_IterEasyID , TypeSize AI_FarNum) const{return GetDataInIter(ARRI_IterEasyID, AI_FarNum);}
|
||||||
|
|
||||||
public :
|
public :
|
||||||
@ -4051,6 +4199,7 @@ namespace ZNsMain
|
|||||||
<
|
<
|
||||||
typename TType ,
|
typename TType ,
|
||||||
typename TTypeArg = const TType&,
|
typename TTypeArg = const TType&,
|
||||||
|
typename TTypCAlloc = ZCAllocator ,
|
||||||
typename TTypSize = ZTypLong
|
typename TTypSize = ZTypLong
|
||||||
>
|
>
|
||||||
class ZtCList /*######################################*/
|
class ZtCList /*######################################*/
|
||||||
|
@ -1515,7 +1515,8 @@ namespace ZNsMain
|
|||||||
typedef typename ZCStringData::TypeAlloc TypeAlloc ;
|
typedef typename ZCStringData::TypeAlloc TypeAlloc ;
|
||||||
typedef typename ZCStringData::ZCTypeChars ZCTypeChars ;
|
typedef typename ZCStringData::ZCTypeChars ZCTypeChars ;
|
||||||
typedef typename ZCStringData::ZCMainChars ZCMainChars ;
|
typedef typename ZCStringData::ZCMainChars ZCMainChars ;
|
||||||
typedef typename ZCStringData::ZCStringList ZCStringList ;
|
public :
|
||||||
|
typedef ZtCObjList<ZCStringData> ZCStringList ;
|
||||||
private:
|
private:
|
||||||
ZTypInt mi_Depth ;
|
ZTypInt mi_Depth ;
|
||||||
ZCXmlInfo mo_CXmlInfo ;
|
ZCXmlInfo mo_CXmlInfo ;
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include "ZCppMain/ZMainHead.H"
|
#include "ZCppMain/ZMainHead.H"
|
||||||
#include "ZCppMain/ZMainHeadEx.H"
|
#include "ZCppMain/ZMainHeadEx.H"
|
||||||
#include "ZCppMain/ZtCMainChars.H"
|
#include "ZCppMain/ZtCMainChars.H"
|
||||||
#include "ZCppMain/ZtCObjList.H"
|
|
||||||
|
|
||||||
|
|
||||||
using namespace std ;
|
using namespace std ;
|
||||||
@ -158,7 +157,7 @@ namespace ZNsMain
|
|||||||
template<typename TDeriveString> class ZtCHelpBase
|
template<typename TDeriveString> class ZtCHelpBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef ZNsMain::ZtCObjList< //////////////////
|
typedef ZNsMain::ZtCList< /////////////////////
|
||||||
TDeriveString ,
|
TDeriveString ,
|
||||||
const TDeriveString&,
|
const TDeriveString&,
|
||||||
TAlloc
|
TAlloc
|
||||||
@ -203,7 +202,7 @@ namespace ZNsMain
|
|||||||
class ZCSearchInfo*/
|
class ZCSearchInfo*/
|
||||||
|
|
||||||
|
|
||||||
typedef ZNsMain::ZtCObjList /////////////////////
|
typedef ZNsMain::ZtCList ////////////////////////
|
||||||
<
|
<
|
||||||
ZCSearchInfo, const ZCSearchInfo&, TAlloc
|
ZCSearchInfo, const ZCSearchInfo&, TAlloc
|
||||||
>
|
>
|
||||||
|
Reference in New Issue
Block a user