commit 2025-09-02 12:47 delete template<typename TSearchInfoList> ZCStringBase& ReplaceType in ZCppMain/ZtCStringEx.H
This commit is contained in:
@ -514,6 +514,7 @@ namespace ZNsMain
|
|||||||
}/*
|
}/*
|
||||||
~ZtCStringBase()*/
|
~ZtCStringBase()*/
|
||||||
|
|
||||||
|
|
||||||
TypeLength GetAllLength () const{return ml_AllLen ;}
|
TypeLength GetAllLength () const{return ml_AllLen ;}
|
||||||
TypeLength GetUseLength () const{return ml_UseLen ;}
|
TypeLength GetUseLength () const{return ml_UseLen ;}
|
||||||
TypeLength GetNotUseLength() const{return ml_AllLen-ml_UseLen;}
|
TypeLength GetNotUseLength() const{return ml_AllLen-ml_UseLen;}
|
||||||
@ -521,6 +522,7 @@ namespace ZNsMain
|
|||||||
TypeChar* GetChars() {return mpc_Data;}
|
TypeChar* GetChars() {return mpc_Data;}
|
||||||
TypeCharC* GetChars() const{return mpc_Data;}
|
TypeCharC* GetChars() const{return mpc_Data;}
|
||||||
|
|
||||||
|
|
||||||
bool IsAnsi() const
|
bool IsAnsi() const
|
||||||
{
|
{
|
||||||
return ZCTypeChars::IsAnsiChars(mpc_Data, ml_UseLen);
|
return ZCTypeChars::IsAnsiChars(mpc_Data, ml_UseLen);
|
||||||
@ -1774,162 +1776,6 @@ namespace ZNsMain
|
|||||||
/*#############################################################################*/
|
/*#############################################################################*/
|
||||||
|
|
||||||
|
|
||||||
template<typename TSearchInfoList> ZCStringBase& ReplaceType
|
|
||||||
(
|
|
||||||
TypeCharC* APC_Search , TypeCharC* APC_Replace ,
|
|
||||||
TypeLength AL_SearchLen , TypeLength AL_ReplaceLen,
|
|
||||||
TypeLength AL_StartPos=0
|
|
||||||
)
|
|
||||||
/*########################################################*/
|
|
||||||
{
|
|
||||||
// 내부 연결리스트로 TSearchInfoList 를 사용한다.
|
|
||||||
|
|
||||||
if(ml_UseLen<1) return *this;
|
|
||||||
|
|
||||||
TSearchInfoList VO_CSearchInfoList; MakeInfoList
|
|
||||||
(
|
|
||||||
APC_Search , AL_SearchLen,
|
|
||||||
AL_StartPos, RR(VO_CSearchInfoList)
|
|
||||||
);
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
|
|
||||||
TypeLength VL_InfoEntrySize =
|
|
||||||
VO_CSearchInfoList.GetSize() ;
|
|
||||||
|
|
||||||
if(VL_InfoEntrySize<1) return *this ;
|
|
||||||
|
|
||||||
TypeLength VL_PrevSize = ml_UseLen ;
|
|
||||||
TypeLength VL_NewSize = 0 ;
|
|
||||||
IterEasyID VI_IterEasyID =
|
|
||||||
VO_CSearchInfoList.GetHeadIterEasyID();
|
|
||||||
|
|
||||||
VL_NewSize = ml_UseLen +
|
|
||||||
VL_InfoEntrySize * (AL_ReplaceLen-AL_SearchLen);
|
|
||||||
|
|
||||||
if(VL_NewSize>VL_PrevSize) ReAllocKeep(VL_NewSize);
|
|
||||||
|
|
||||||
TypeChar* VP_Origin=mpc_Data;
|
|
||||||
TypeLength VL_Index =0 ;
|
|
||||||
|
|
||||||
// AL_ReplaceLen==AL_SearchLen 나
|
|
||||||
// AL_ReplaceLen> AL_SearchLen 나
|
|
||||||
// AL_ReplaceLen< AL_SearchLen 각 경우에
|
|
||||||
// Replace 방식이 조금 틀리다.
|
|
||||||
|
|
||||||
if(AL_ReplaceLen==AL_SearchLen)
|
|
||||||
{
|
|
||||||
for(TypeLength i=0; i<VL_InfoEntrySize; ++i)
|
|
||||||
{
|
|
||||||
VL_Index=VO_CSearchInfoList.ItD(VI_IterEasyID).ml_Pos ;
|
|
||||||
|
|
||||||
for(TypeLength j=0; j<AL_ReplaceLen; ++j)
|
|
||||||
{ VP_Origin[VL_Index+j]=APC_Replace[j]; }
|
|
||||||
|
|
||||||
VO_CSearchInfoList.MoveNextIter(VI_IterEasyID);
|
|
||||||
}/*
|
|
||||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
|
||||||
}
|
|
||||||
else if(AL_ReplaceLen<AL_SearchLen)
|
|
||||||
{
|
|
||||||
VL_Index=VO_CSearchInfoList.GetHeadData().ml_Pos;
|
|
||||||
|
|
||||||
for(TypeLength i=1;i<=VL_InfoEntrySize;++i)
|
|
||||||
{
|
|
||||||
for(TypeLength j=0; j<AL_ReplaceLen; ++j)
|
|
||||||
{
|
|
||||||
VP_Origin[VL_Index++]=APC_Replace[j] ;
|
|
||||||
}/*
|
|
||||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
|
||||||
|
|
||||||
if(i!=VL_InfoEntrySize)
|
|
||||||
{
|
|
||||||
// 마지막 링크가 아닐 경우
|
|
||||||
|
|
||||||
TypeLength VL_IndexHead=VO_CSearchInfoList.ItD(VI_IterEasyID ).ml_Pos+AL_SearchLen;
|
|
||||||
TypeLength VL_IndexTail=VO_CSearchInfoList.ItD(VI_IterEasyID, 1).ml_Pos-1;
|
|
||||||
|
|
||||||
for(TypeLength k=VL_IndexHead; k<=VL_IndexTail; ++k)
|
|
||||||
{
|
|
||||||
VP_Origin[VL_Index++] = VP_Origin[k] ;
|
|
||||||
}/*
|
|
||||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
|
||||||
}
|
|
||||||
else // i==VL_InfoEntrySize
|
|
||||||
{
|
|
||||||
TypeLength VL_IndexTail=VL_PrevSize-1 ;
|
|
||||||
TypeLength VL_IndexHead=VO_CSearchInfoList.
|
|
||||||
ItD(VI_IterEasyID).ml_Pos + AL_SearchLen ;
|
|
||||||
|
|
||||||
for(TypeLength k=VL_IndexHead; k<=VL_IndexTail; ++k)
|
|
||||||
{
|
|
||||||
VP_Origin[VL_Index++] = VP_Origin[k] ;
|
|
||||||
}/*
|
|
||||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
|
||||||
}/*
|
|
||||||
else // i==VL_InfoEntrySize*/
|
|
||||||
|
|
||||||
VO_CSearchInfoList.MoveNextIter(VI_IterEasyID);
|
|
||||||
}/*
|
|
||||||
for(TypeLength i=1; i<=VL_InfoEntrySize; ++i)*/
|
|
||||||
}
|
|
||||||
else // AL_ReplaceLen>AL_SearchLen
|
|
||||||
{
|
|
||||||
// 뒤부터 채워 나간다.
|
|
||||||
|
|
||||||
VP_Origin[VL_NewSize]=0;
|
|
||||||
|
|
||||||
VL_Index = VL_NewSize-1 ;
|
|
||||||
VI_IterEasyID =
|
|
||||||
VO_CSearchInfoList.GetTailIterEasyID();
|
|
||||||
|
|
||||||
TypeLength VL_IndexTail=VL_PrevSize-1;
|
|
||||||
TypeLength VL_IndexHead=VO_CSearchInfoList.
|
|
||||||
ItD(VI_IterEasyID).ml_Pos + AL_SearchLen ;
|
|
||||||
|
|
||||||
for(TypeLength i=VL_IndexTail; i>=VL_IndexHead; --i)
|
|
||||||
{
|
|
||||||
VP_Origin[VL_Index--]=VP_Origin[i];
|
|
||||||
}/*
|
|
||||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
|
||||||
|
|
||||||
for(TypeLength j=VL_InfoEntrySize; j>=2; --j)
|
|
||||||
{
|
|
||||||
TypeLength k;
|
|
||||||
|
|
||||||
for(k=AL_ReplaceLen-1; k>=0; --k)
|
|
||||||
{
|
|
||||||
VP_Origin[VL_Index--] = APC_Replace[k];
|
|
||||||
}/*
|
|
||||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
|
||||||
|
|
||||||
VL_IndexHead=VO_CSearchInfoList.ItD(VI_IterEasyID, -1).ml_Pos+AL_SearchLen;
|
|
||||||
VL_IndexTail=VO_CSearchInfoList.ItD(VI_IterEasyID ).ml_Pos-1 ;
|
|
||||||
|
|
||||||
for(k=VL_IndexTail; k>=VL_IndexHead; --k)
|
|
||||||
{ VP_Origin[VL_Index--]=VP_Origin[k]; }
|
|
||||||
|
|
||||||
VO_CSearchInfoList.MovePrevIter(VI_IterEasyID);
|
|
||||||
}/*
|
|
||||||
for(TypeLength j=VL_InfoEntrySize; j>=2; --j)*/
|
|
||||||
|
|
||||||
for(TypeLength k=AL_ReplaceLen-1; k>=0 ;--k)
|
|
||||||
{
|
|
||||||
VP_Origin[VL_Index--]=APC_Replace[k];
|
|
||||||
}/*
|
|
||||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
|
||||||
}/*
|
|
||||||
else // AL_ReplaceLen>AL_SearchLen*/
|
|
||||||
|
|
||||||
VP_Origin[ml_UseLen=VL_NewSize]=0; return *this;
|
|
||||||
}/*
|
|
||||||
tempalte<typename TSearchInfoList> ZCStringBase& ReplaceType
|
|
||||||
(
|
|
||||||
TypeCharC* APC_Search , TypeCharC* APC_Replace ,
|
|
||||||
TypeLength AL_SearchLen , TypeLength AL_ReplaceLen,
|
|
||||||
TypeLength AL_StartPos=0
|
|
||||||
)
|
|
||||||
###########################################################*/
|
|
||||||
|
|
||||||
ZCStringBase& Replace
|
ZCStringBase& Replace
|
||||||
(
|
(
|
||||||
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0
|
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0
|
||||||
@ -1952,27 +1798,6 @@ namespace ZNsMain
|
|||||||
)
|
)
|
||||||
///////////////////*/
|
///////////////////*/
|
||||||
|
|
||||||
template<typename TSearchInfoList> ZCStringBase& ReplaceType
|
|
||||||
(
|
|
||||||
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0
|
|
||||||
)
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
{
|
|
||||||
return ReplaceType<TSearchInfoList>
|
|
||||||
(
|
|
||||||
APC_Search ,
|
|
||||||
APC_Replace ,
|
|
||||||
GetLength(APC_Search) ,
|
|
||||||
GetLength(APC_Replace),
|
|
||||||
AL_StartPos
|
|
||||||
);
|
|
||||||
///////////////////////////////////
|
|
||||||
}/*
|
|
||||||
template<typename TSearchInfoList> ZCStringBase& ReplaceType
|
|
||||||
(
|
|
||||||
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0
|
|
||||||
)
|
|
||||||
//////////////////////////////////////////////////////////*/
|
|
||||||
|
|
||||||
ZCStringBase& Replace /*#######################################################*/
|
ZCStringBase& Replace /*#######################################################*/
|
||||||
(
|
(
|
||||||
@ -1998,31 +1823,6 @@ namespace ZNsMain
|
|||||||
/*#############################################################################*/
|
/*#############################################################################*/
|
||||||
|
|
||||||
|
|
||||||
template<typename TSearchInfoList> ZCStringBase& ReplaceType /*################*/
|
|
||||||
(
|
|
||||||
const ZCStringBase& AR_CStrSearch ,
|
|
||||||
const ZCStringBase& AR_CStrReplace,
|
|
||||||
TypeLength AL_StartPos=0
|
|
||||||
)
|
|
||||||
/*#############################################################################*/
|
|
||||||
{
|
|
||||||
return ReplaceType<TSearchInfoList>( ///////
|
|
||||||
AR_CStrSearch. data(),
|
|
||||||
AR_CStrReplace.data(),
|
|
||||||
AR_CStrSearch. size(),
|
|
||||||
AR_CStrReplace.size(),
|
|
||||||
AL_StartPos
|
|
||||||
/*/////////*/ ); ///////////////////////////
|
|
||||||
}/*
|
|
||||||
template<typename TSearchInfoList> ZCStringBase& ReplaceType ####################
|
|
||||||
(
|
|
||||||
const ZCStringBase& AR_CStrSearch ,
|
|
||||||
const ZCStringBase& AR_CStrReplace,
|
|
||||||
TypeLength AL_StartPos=0
|
|
||||||
)
|
|
||||||
/*#############################################################################*/
|
|
||||||
|
|
||||||
|
|
||||||
static ZCStringBase& ReplaceSection /*#########################################*/
|
static ZCStringBase& ReplaceSection /*#########################################*/
|
||||||
(
|
(
|
||||||
ZCStringBase& ARR_Saver ,
|
ZCStringBase& ARR_Saver ,
|
||||||
|
Reference in New Issue
Block a user