commit 2025-08-21 00:59 edit a bit ZtCStringBase

This commit is contained in:
2025-08-21 00:59:39 +09:00
parent 21f026c1fe
commit 16dcc5199a

View File

@ -755,8 +755,8 @@ namespace ZNsMain
// 아래 몇 멤버는 STL 의 string 멤버 함수와 이름을 맞추기 위한 것.
TypeChar* data (){return mpc_Data;}
TypeChar* c_str(){return mpc_Data;}
TypeChar* data () {return mpc_Data;}
TypeChar* c_str() {return mpc_Data;}
TypeCharC* data () const{return mpc_Data;}
TypeCharC* c_str() const{return mpc_Data;}
@ -779,7 +779,7 @@ namespace ZNsMain
for(TypeLength i=VL_PrevSize; i<AL_NewSize; ++i)
{ mpc_Data[i]=AC_FillChar ; }
////////////////////////////////////////////////
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
mpc_Data[ml_UseLen = AL_NewSize]=0; return *this;
}/*
@ -855,11 +855,11 @@ namespace ZNsMain
if(ml_UseLen<1 || AL_BuffSize<1) return 0;
TypeLength VL_LoopCnt = ///////////
TypeLength VL_LoopCnt = /*>>>>>>>>>>>>>>*/
( ml_UseLen<AL_BuffSize ?
ml_UseLen : AL_BuffSize
) ;
///////////////////////////////////
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
for(TypeLength i=0;i<VL_LoopCnt;++i)
{ APC_Buff[i]=mpc_Data[i]; }
@ -895,9 +895,9 @@ namespace ZNsMain
if(AL_Index1<0 || AL_Index1>AL_Index2 || AL_Index2>=ml_UseLen)
{
return *this; /*########################################*/
return *this; /*@@@@@@@@@*/
}/*
if(AL_Index1<0 || AL_Index1>AL_Index2 || AL_Index2>=ml_UseLen)*/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
if(AL_Index2-1==ml_UseLen) return Invalid(AL_Index1);
@ -915,10 +915,18 @@ namespace ZNsMain
{
// Invalidate() 와의 차이에 주의
const bool CB_IsOK =
(AL_Index>=0 && AL_Index<=ml_AllLen && ml_AllLen>0);
const bool CB_IsOK = /*<<<<<<<<<<<<<<<<<*/
(
AL_Index >=0 &&
AL_Index <= ml_AllLen &&
ml_AllLen> 0
);
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
if(CB_IsOK) mpc_Data[ml_UseLen=AL_Index]=0; return *this;
if(CB_IsOK)
mpc_Data[ml_UseLen=AL_Index]=0;
return *this;
}/*
ZCStringBase& InvalidByForce(TypeLength AL_Index=0)*/
@ -927,10 +935,13 @@ namespace ZNsMain
{
// APC_Search 를 찾아서 그 부분을 무효화시킨다.
TypeLength VL_Pos =
FindPos(APC_Search, AL_SearchLen ,AL_Index);
TypeLength VL_Pos = FindPos
(APC_Search, AL_SearchLen ,AL_Index);
if(VL_Pos>=0) mpc_Data[ml_UseLen=VL_Pos]=0; return *this;
if(VL_Pos>=0)
mpc_Data[ml_UseLen=VL_Pos]=0;
return *this;
}/*
ZCStringBase& InvalidateSearch(
TypeCharC* APC_Search, TypeLength AL_SearchLen, TypeLength AL_Index=0)*/
@ -940,30 +951,47 @@ namespace ZNsMain
{
// APC_Search 를 뒤로부터 찾아서 그 부분을 무효화시킨다.
TypeLength VL_Pos =
FindPosFromEnd(APC_Search, AL_SearchLen, AL_StartPos);
TypeLength VL_Pos = FindPosFromEnd
(
APC_Search, AL_SearchLen, AL_StartPos
);
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
if(VL_Pos>=0) mpc_Data[ml_UseLen=VL_Pos]=0; return *this;
if(VL_Pos>=0)
mpc_Data[ml_UseLen=VL_Pos]=0;
return *this;
}/*
ZCStringBase& InvalidateSearchFromEnd(
TypeCharC* APC_Search, TypeLength AL_SearchLen, TypeLength AL_StartPos)*/
ZCStringBase& InvalidateSearchFromEnd(TypeCharC* APC_Search, TypeLength AL_SearchLen)
ZCStringBase& InvalidateSearchFromEnd
(
TypeCharC* APC_Search, TypeLength AL_SearchLen
)
/*#################################*/
{
// APC_Search 를 뒤로부터 찾아서 그 부분을 무효화시킨다.
if(ml_UseLen<1) return *this;
return InvalidateSearchFromEnd(
APC_Search, AL_SearchLen, ml_UseLen-1);
return InvalidateSearchFromEnd
(
APC_Search, AL_SearchLen, ml_UseLen-1
);
/*<<<<<<<<<<<<<<<<<<<<<<<<<<*/
}/*
ZCStringBase& InvalidateSearchFromEnd(TypeCharC* APC_Search, TypeLength AL_SearchLen)*/
ZCStringBase& InvalidateSearchFromEnd
(
TypeCharC* APC_Search, TypeLength AL_SearchLen
)
/*#################################*/
ZCStringBase& InvalidHead(TypeCharC* APC_Search, TypeLength AL_SearchLen)
{
// APC_Search 를 앞에서 찾아서 있다면 그 부분을 무효화시킨다.
if(ml_UseLen<1 || AL_SearchLen<1) return *this;
if(ml_UseLen<1 || AL_SearchLen<1 ) return *this;
const bool CB_IsOK = this->DoStart(APC_Search, AL_SearchLen);
@ -1010,13 +1038,13 @@ namespace ZNsMain
{
Invalidate(); return *this;
}/*
if(rhs.ml_UseLen<1)*/
/////////////////*/
ReAlloc(rhs.ml_UseLen); ::memcpy
(
mpc_Data, rhs.mpc_Data, rhs.ml_UseLen*sizeof(TypeChar)
);
/////////////////////////////////
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
mpc_Data[ml_UseLen=rhs.ml_UseLen]=0; return *this;
}/*
@ -1194,8 +1222,8 @@ namespace ZNsMain
if(AL_Length<1)
{
Invalidate(); return *this;
}/*
if(AL_Length<1)*/
}
/*<<<<<<<<<<<*/
ReAlloc(AL_Length); ::memcpy
(
@ -1401,7 +1429,7 @@ namespace ZNsMain
const bool CB_DoKeepString= true; ReAllocAdd
( CI_AddSize, CB_DoKeepString );
////////////////////////////////////////////
/*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
TypeChar* VPC_Start=mpc_Data+ml_UseLen;
@ -1547,7 +1575,7 @@ namespace ZNsMain
{
return 0; // Add Codes For Memory Over
}/*
if(VP_Char==0)*/
////////////*/
int i;
@ -1587,8 +1615,13 @@ namespace ZNsMain
}/*
TypeLength ReadLong(TypeLength AL_Index)*/
TypeLength ReadLong(
TypeLength AL_Index, TypeCharC* APC_Search, TypeLength AL_SearchLen)
TypeLength ReadLong /*#########################################################*/
(
TypeLength AL_Index ,
TypeCharC* APC_Search ,
TypeLength AL_SearchLen
)
/*#############################################################################*/
{
// VL_Index 부터 APC_Search 을 찾아서 그 앞에까지만 정수로 읽는다.
@ -1605,8 +1638,13 @@ namespace ZNsMain
return ReadLongFromIndex(AL_Index, VL_Pos-1);
}/*
TypeLength ReadLong(
TypeLength AL_Index, TypeCharC* APC_Search, TypeLength AL_SearchLen)*/
TypeLength ReadLong /*###########################################################
(
TypeLength AL_Index ,
TypeCharC* APC_Search ,
TypeLength AL_SearchLen
)
/*#############################################################################*/
ZCStringBase& ReadString(
@ -1620,8 +1658,13 @@ namespace ZNsMain
ZCStringBase& ARR_CString, TypeLength AL_Index1, TypeLength AL_Index2)*/
ZCStringBase& ReadString_E(
ZCStringBase& ARR_CString, TypeLength AL_Index1, TypeLength AL_Index2)
ZCStringBase& ReadString_E /*##################################################*/
(
ZCStringBase& ARR_CString ,
TypeLength AL_Index1 ,
TypeLength AL_Index2
)
/*#############################################################################*/
{
// Index1 번째 문자부터 VL_Index2 문자까지를 ARR_CString 에 전달한다.
// ReadString 과는 달리 에러검사를 한다.
@ -1638,8 +1681,13 @@ namespace ZNsMain
ARR_CString( mpc_Data+AL_Index1, AL_Index2-AL_Index1+1 );
}/*
ZCStringBase& ReadString_E(
ZCStringBase& ARR_CString, TypeLength AL_Index1, TypeLength AL_Index2)*/
ZCStringBase& ReadString_E ######################################################
(
ZCStringBase& ARR_CString ,
TypeLength AL_Index1 ,
TypeLength AL_Index2
)
/*#############################################################################*/
ZCStringBase& ReadString ////////////////////////
@ -1742,11 +1790,11 @@ namespace ZNsMain
ZCStringBase& FormatAdd(TypeLength AL_FormatSize, TypeCharC* APC_Format, ...)*/
ZCStringBase& ReplaceChar
ZCStringBase& ReplaceChar /*###################################################*/
(
TypeChar AC_SearchChar, TypeChar AC_ReplaceChar, TypeLength AI_StartPos=0
)
/////////////////////////
/*#############################################################################*/
{
for(TypeLength i=AI_StartPos; i<ml_UseLen; ++i)
{
@ -1756,20 +1804,20 @@ namespace ZNsMain
return *this;
}/*
ZCStringBase& ReplaceChar
ZCStringBase& ReplaceChar #######################################################
(
TypeChar AC_SearchChar, TypeChar AC_ReplaceChar, TypeLength AI_StartPos=0
)
///////////////////////*/
/*#############################################################################*/
ZCStringBase& ReplaceOnce
ZCStringBase& ReplaceOnce /*###################################################*/
(
TypeCharC* APC_Search , TypeCharC* APC_Replace ,
TypeLength AL_SearchLen, TypeLength AL_ReplaceLen,
TypeLength AL_StartPos=0
)
/*#####################*/
/*#############################################################################*/
{
TypeLength VL_PosFind = FindPos
(APC_Search, AL_SearchLen, AL_StartPos);
@ -1783,13 +1831,13 @@ namespace ZNsMain
);
////////////////////////////////////
}/*
ZCStringBase& ReplaceOnce
ZCStringBase& ReplaceOnce #######################################################
(
TypeCharC* APC_Search , TypeCharC* APC_Replace ,
TypeLength AL_SearchLen, TypeLength AL_ReplaceLen,
TypeLength AL_StartPos=0
)
#######################*/
/*#############################################################################*/
ZCStringBase& ReplaceOnce(
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0)
@ -1805,7 +1853,7 @@ namespace ZNsMain
ZCStringBase& ReplaceOnce(
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0)*/
ZCStringBase& Replace /*##############*/
ZCStringBase& Replace /*#######################################################*/
(
TypeCharC* APC_Search ,
TypeCharC* APC_Replace ,
@ -1813,7 +1861,7 @@ namespace ZNsMain
TypeLength AL_ReplaceLen ,
TypeLength AL_StartPos=0
)
/*####################################*/
/*#############################################################################*/
{
if(ml_UseLen<1) return *this;
@ -1949,7 +1997,7 @@ namespace ZNsMain
VP_Origin[ml_UseLen=VL_NewSize]=0; return *this;
}/*
ZCStringBase& Replace //////////////////////
ZCStringBase& Replace ###########################################################
(
TypeCharC* APC_Search ,
TypeCharC* APC_Replace ,
@ -1957,7 +2005,7 @@ namespace ZNsMain
TypeLength AL_ReplaceLen ,
TypeLength AL_StartPos=0
)
//////////////////////////////////////////*/
/*#############################################################################*/
template<typename TSearchInfoList> ZCStringBase& ReplaceType
@ -2160,13 +2208,13 @@ namespace ZNsMain
)
//////////////////////////////////////////////////////////*/
ZCStringBase& Replace
ZCStringBase& Replace /*#######################################################*/
(
const ZCStringBase& AR_CStrSearch ,
const ZCStringBase& AR_CStrReplace,
TypeLength AL_StartPos=0
)
/*#################*/
/*#############################################################################*/
{
return Replace( AR_CStrSearch. data(), //////
AR_CStrReplace.data(),
@ -2175,18 +2223,22 @@ namespace ZNsMain
AL_StartPos
/*/////////*/ ); ////////////////////////////
}/*
ZCStringBase& Replace
ZCStringBase& Replace ###########################################################
(
const ZCStringBase& AR_CStrSearch, const ZCStringBase& AR_CStrReplace, TypeLength AL_StartPos=0
const ZCStringBase& AR_CStrSearch ,
const ZCStringBase& AR_CStrReplace,
TypeLength AL_StartPos=0
)
###################*/
/*#############################################################################*/
template<typename TSearchInfoList> ZCStringBase& ReplaceType(
const ZCStringBase& AR_CStrSearch ,
const ZCStringBase& AR_CStrReplace,
TypeLength AL_StartPos=0
/*/////////*/ ) ////////////////////////////////////////////
template<typename TSearchInfoList> ZCStringBase& ReplaceType /*################*/
(
const ZCStringBase& AR_CStrSearch ,
const ZCStringBase& AR_CStrReplace,
TypeLength AL_StartPos=0
)
/*#############################################################################*/
{
return ReplaceType<TSearchInfoList>( ///////
AR_CStrSearch. data(),
@ -2196,11 +2248,13 @@ namespace ZNsMain
AL_StartPos
/*/////////*/ ); ///////////////////////////
}/*
template<typename TSearchInfoList> ZCStringBase& ReplaceType(
const ZCStringBase& AR_CStrSearch ,
const ZCStringBase& AR_CStrReplace,
TypeLength AL_StartPos=0
///////////// ) //////////////////////////////////////////*/
template<typename TSearchInfoList> ZCStringBase& ReplaceType ####################
(
const ZCStringBase& AR_CStrSearch ,
const ZCStringBase& AR_CStrReplace,
TypeLength AL_StartPos=0
)
/*#############################################################################*/
static ZCStringBase& ReplaceSection /*#########################################*/
@ -2263,8 +2317,8 @@ namespace ZNsMain
while(VL_NowIndex>=AL_SectPos+AL_SectLen)
{
*VPC_Dest-- = VPC_Origin2[VL_NowIndex--] ;
}/*
///////////////////////////////////////*/
}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
for(int i=AL_ReplaceLen-1; i>=0; --i)
{
@ -2295,20 +2349,20 @@ namespace ZNsMain
while(VL_NowIndex>=AL_SectPos+AL_SectLen)
{
*VPC_Dest-- = APC_Origin[VL_NowIndex--] ;
}/*
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
for(int i=AL_ReplaceLen-1; i>=0; --i)
{
*VPC_Dest-- = APC_Replace[i] ;
}/*
///////////////////////////////////*/
}
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
for(int j=AL_SectPos-1; j>=0; --j)
{
*VPC_Dest-- = APC_Origin[j] ;
}/*
////////////////////////////////*/
/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
ARR_Saver.data()[VL_AllMemSize]=0;
ARR_Saver.CorrectLength(VL_AllMemSize-1);
@ -2429,8 +2483,8 @@ namespace ZNsMain
while(VL_NowIndex>=0)
{
*VPC_CharDest-- = APC_Origin[VL_NowIndex--];
}/*
while(VL_NowIndex>=0)*/
}
/*>>>>>>>>>>>>>>>>>*/
}/*
if(VL_NowIndex>=0)*/