commit 2025-08-19 21:03 edit a bit ZCppMain/ZtCStringEx.H

This commit is contained in:
2025-08-19 21:03:39 +09:00
parent 7a36c47bae
commit e8cf6460cb

View File

@ -445,13 +445,13 @@ namespace ZNsMain
typedef typename
TSearchInfoList::TypeData ZCSearchInfo;
if(ml_UseLen<1 || AL_SearchLen<1) return ;
if(AL_StartPos<0) AL_StartPos=0;
if(ml_UseLen <1 || AL_SearchLen<1) return ;
if(AL_StartPos<0) AL_StartPos =0 ;
TypeLength VL_Loop =ml_UseLen-AL_SearchLen ;
ZCSearchInfo* VP_CSearchInfo=0 ;
TypeChar* VP_Origin =mpc_Data ;
TypeLength i =AL_StartPos;
ZCSearchInfo* VP_CSearchInfo=0 ;
TypeChar* VP_Origin =mpc_Data ;
TypeLength i =AL_StartPos ;
while(i<=VL_Loop)
{
@ -461,7 +461,7 @@ namespace ZNsMain
{
if(VP_Origin[i+j]!=APC_Search[j]) break;
}/*
for(j=0; j<AL_SearchLen; ++j)*/
///////////////////////////*/
if(j==AL_SearchLen)
{
@ -469,10 +469,10 @@ namespace ZNsMain
위 코드처럼 하면 ARR_InfoList 를 일반화 하기가 어렵다. */
VP_CSearchInfo=&(ZCSearchInfo&)ARR_InfoList;
VP_CSearchInfo->mp_Char=VP_Origin+i ;
VP_CSearchInfo->ml_Pos =i ;
VP_CSearchInfo->ml_Len =AL_SearchLen ;
VP_CSearchInfo= &(ZCSearchInfo&)ARR_InfoList;
VP_CSearchInfo->mp_Char= VP_Origin+i ;
VP_CSearchInfo->ml_Pos = i ;
VP_CSearchInfo->ml_Len = AL_SearchLen ;
i += AL_SearchLen ;
}
@ -526,7 +526,7 @@ namespace ZNsMain
{
if(VP_Origin[i+j]!=APC_Search[j]) break;
}/*
for(j=0; j<AL_SearchLen; ++j)*/
///////////////////////////*/
if(j==AL_SearchLen)
{
@ -573,7 +573,6 @@ namespace ZNsMain
TypeLength ml_AllLen;
TypeLength ml_UseLen;
TypeChar* mpc_Data ;
/*protected:*/
public :
ZtCStringBase()
@ -592,12 +591,12 @@ namespace ZNsMain
if(APC_Data==0 || APC_Data[0]==0) return;
MakeWord
MakeWord ////////////////////////////////
(
APC_Data, ZNsMain::ZftGetLengthType
< TypeLength, TypeChar >( APC_Data )
);
////////
/////////////////////////////////////////
}/*
ZtCStringBase(TypeCharC* APC_Data)*/
@ -849,8 +848,11 @@ namespace ZNsMain
if(ml_UseLen<1 || AL_BuffSize<1) return 0;
TypeLength VL_LoopCnt =
ml_UseLen<AL_BuffSize ? ml_UseLen : AL_BuffSize ;
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]; }
@ -1157,7 +1159,11 @@ namespace ZNsMain
{
/* 문자열의 순서를 뒤집는다. 문자열의 길이가 2 이상이어야 한다. */
if(ml_UseLen<2) return *this;
const int CI_MinLength=2 ;
if(ml_UseLen<CI_MinLength)
{ return *this; }
//////////////////////////
TypeLength i =0 ;
TypeLength j =ml_UseLen-1;
@ -1225,7 +1231,7 @@ namespace ZNsMain
ReAllocKeep(ml_UseLen+AL_Count);
__for0(TypeLength, i, AL_Count)
mpc_Data[ml_UseLen+i]=AC_CharParam;
mpc_Data[ml_UseLen+i] = AC_CharParam;
ml_UseLen += AL_Count ;
mpc_Data[ml_UseLen]=0 ; return *this;
@ -1344,9 +1350,13 @@ namespace ZNsMain
// ml_UseLen+AL_AddSize 의 크기가 가변인수 문자열을 담을 만큼 커야한다.
va_list VP_VarParam;
va_list VP_VarParam;
va_start( VP_VarParam, APC_Format);
vsprintf(mpc_Data+ml_UseLen, APC_Format, VP_VarParam);
vsprintf //////////////////////////
(
mpc_Data+ml_UseLen, APC_Format, VP_VarParam
);
///////////////////////////////////
CorrectLength(ml_UseLen); return *this;
}/*
@ -1388,8 +1398,12 @@ namespace ZNsMain
while(i>=1)
{
*VPC_Start++ =
( ( AUL_LongType << ((CI_LongByte-i)*CI_BitOfByte) ) >> ((CI_LongByte-1)*CI_BitOfByte) ) ;
*VPC_Start++ = ////////////////////////////
(
( AUL_LongType << ((CI_LongByte-i)*CI_BitOfByte) ) >>
( (CI_LongByte-1)*CI_BitOfByte)
) ;
///////////////////////////////////////////
--i;
}/*
@ -1420,8 +1434,13 @@ namespace ZNsMain
while(i>=1)
{
*VPC_Start++ =
( ( ALL_LLongType << ((CI_LLongByte-i)*CI_BitOfByte) ) >> ((CI_LLongByte-1)*CI_BitOfByte) ) ;
*VPC_Start++ = //////////////////////////////
(
( ALL_LLongType << ((CI_LLongByte-i)*CI_BitOfByte) ) >>
( (CI_LLongByte-1)*CI_BitOfByte )
) ;
/////////////////////////////////////////////
--i;
}/*
while(i>=1)*/
@ -1520,7 +1539,8 @@ namespace ZNsMain
}/*
for(i=0;i<=AL_Index2-AL_Index1;++i)*/
VP_Char[i]=0; TypeLength VB_Return=ZNsMain::ATOL(VP_Char);
/*######*/ VP_Char[i] =0 ;
TypeLength VB_Return = ZNsMain::ATOL(VP_Char);
this->DeleteMem(VP_Char); return VB_Return;
}/*
@ -1532,9 +1552,12 @@ namespace ZNsMain
if(AL_Index2>=ml_UseLen) AL_Index2=ml_UseLen-1 ;
if(ml_UseLen<1 || AL_Index1<0 || AL_Index2<0 || AL_Index1>AL_Index2)
return 0;
//endif
const bool CB_IsBad = ////////////////////
(
ml_UseLen<1 || AL_Index1<0
|| AL_Index2<0 || AL_Index1>AL_Index2
);
if(CB_IsBad) return 0; ///////////////////
return ReadLongFromIndex(AL_Index1, AL_Index2);
}/*
@ -1610,18 +1633,17 @@ namespace ZNsMain
if(AL_Index>=ml_UseLen) return ARR_CString;
TypeLength VL_Pos =
FindPos(APC_Search, AL_SearchLen, AL_Index);
TypeLength VL_Pos = FindPos
(APC_Search, AL_SearchLen, AL_Index);
if(VL_Pos==AL_Index) return ARR_CString;
if(VL_Pos<0)
VL_Pos=ml_UseLen-1;
else
VL_Pos--;
//else
VL_Pos = ml_UseLen-1;
else VL_Pos-- ;
return ReadString(ARR_CString, AL_Index, VL_Pos);
return ReadString
(ARR_CString, AL_Index, VL_Pos);
}/*
ZCStringBase& ReadString( ////////////////////////////////////////
ZCStringBase& ARR_CString,
@ -1713,22 +1735,28 @@ namespace ZNsMain
ZCStringBase& ReplaceOnce
(
TypeCharC* APC_Search , TypeCharC* APC_Replace ,
TypeLength AL_SearchLen, TypeLength AL_ReplaceLen, TypeLength AL_StartPos=0
TypeLength AL_SearchLen, TypeLength AL_ReplaceLen,
TypeLength AL_StartPos=0
)
/*#####################*/
{
TypeLength VL_PosFind =
FindPos(APC_Search, AL_SearchLen, AL_StartPos);
TypeLength VL_PosFind = FindPos
(APC_Search, AL_SearchLen, AL_StartPos);
if(VL_PosFind<0) return *this;
return ReplaceSection(
VL_PosFind, AL_SearchLen, APC_Replace, AL_ReplaceLen);
return ReplaceSection //////////////
(
VL_PosFind , AL_SearchLen ,
APC_Replace , AL_ReplaceLen
);
////////////////////////////////////
}/*
ZCStringBase& ReplaceOnce
(
TypeCharC* APC_Search , TypeCharC* APC_Replace ,
TypeLength AL_SearchLen, TypeLength AL_ReplaceLen, TypeLength AL_StartPos=0
TypeLength AL_SearchLen, TypeLength AL_ReplaceLen,
TypeLength AL_StartPos=0
)
#######################*/
@ -2059,7 +2087,11 @@ namespace ZNsMain
)
###########################################################*/
ZCStringBase& Replace(TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0)
ZCStringBase& Replace
(
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0
)
/////////////////////
{
using ZNsMain::ZftGetLengthType ;
@ -2073,10 +2105,17 @@ namespace ZNsMain
);
////////////////////////////////////////////////////////////
}/*
ZCStringBase& Replace(TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0)*/
ZCStringBase& Replace
(
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0
)
///////////////////*/
template<typename TSearchInfoList> ZCStringBase&
ReplaceType(TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0)
template<typename TSearchInfoList> ZCStringBase& ReplaceType
(
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0
)
////////////////////////////////////////////////////////////
{
using ZNsMain::ZftGetLengthType ;
@ -2090,11 +2129,19 @@ namespace ZNsMain
);
///////////////////////////////////
}/*
template<typename TSearchInfoList> ZCStringBase&
ReplaceType(TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0) */
template<typename TSearchInfoList> ZCStringBase& ReplaceType
(
TypeCharC* APC_Search, TypeCharC* APC_Replace, TypeLength AL_StartPos=0
)
//////////////////////////////////////////////////////////*/
ZCStringBase& Replace(
const ZCStringBase& AR_CStrSearch, const ZCStringBase& AR_CStrReplace, TypeLength AL_StartPos=0)
ZCStringBase& Replace
(
const ZCStringBase& AR_CStrSearch ,
const ZCStringBase& AR_CStrReplace,
TypeLength AL_StartPos=0
)
/*#################*/
{
return Replace( AR_CStrSearch. data(), //////
AR_CStrReplace.data(),
@ -2103,8 +2150,11 @@ namespace ZNsMain
AL_StartPos
/*/////////*/ ); ////////////////////////////
}/*
ZCStringBase& Replace(
const ZCStringBase& AR_CStrSearch, const ZCStringBase& AR_CStrReplace, TypeLength AL_StartPos=0) */
ZCStringBase& Replace
(
const ZCStringBase& AR_CStrSearch, const ZCStringBase& AR_CStrReplace, TypeLength AL_StartPos=0
)
###################*/
template<typename TSearchInfoList> ZCStringBase& ReplaceType(
@ -2167,13 +2217,13 @@ namespace ZNsMain
{
*VPC_Dest++ = APC_Replace[i] ;
}/*
for(int i=0;i<AL_ReplaceLen;++i)*/
//////////////////////////////*/
for(int j=AL_SectPos+AL_SectLen; j<AL_OriginLen; ++j)
{
*VPC_Dest++ = VPC_Origin2[j] ;
}/*
for(int j=AL_SectPos+AL_SectLen; j<AL_OriginLen; ++j)*/
///////////////////////////////////////////////////*/
ARR_Saver.data()[VL_AllMemSize]=0;
ARR_Saver.CorrectLength(VL_AllMemSize-1);
@ -2189,13 +2239,13 @@ namespace ZNsMain
{
*VPC_Dest-- = VPC_Origin2[VL_NowIndex--] ;
}/*
while(VL_NowIndex>=AL_SectPos+AL_SectLen)*/
///////////////////////////////////////*/
for(int i=AL_ReplaceLen-1; i>=0; --i)
{
*VPC_Dest-- = APC_Replace[i] ;
}/*
for(int i=AL_ReplaceLen-1; i>=0; --i)*/
///////////////////////////////////*/
ARR_Saver.data()[VL_AllMemSize]=0;
ARR_Saver.CorrectLength(VL_AllMemSize-1);
@ -2221,19 +2271,19 @@ namespace ZNsMain
{
*VPC_Dest-- = APC_Origin[VL_NowIndex--] ;
}/*
while(VL_NowIndex>=AL_SectPos+AL_SectLen)*/
///////////////////////////////////////*/
for(int i=AL_ReplaceLen-1; i>=0; --i)
{
*VPC_Dest-- = APC_Replace[i] ;
}/*
for(int i=AL_ReplaceLen-1; i>=0; --i)*/
///////////////////////////////////*/
for(int j=AL_SectPos-1; j>=0; --j)
{
*VPC_Dest-- = APC_Origin[j] ;
}/*
for(int j=AL_SectPos-1; j>=0; --j)*/
////////////////////////////////*/
ARR_Saver.data()[VL_AllMemSize]=0;
ARR_Saver.CorrectLength(VL_AllMemSize-1);
@ -2317,12 +2367,8 @@ namespace ZNsMain
///////////////////////////////////////////////////////////////////////////////////////////////*/
if(APC_Origin==mpc_Data)
{
ReAllocKeep(VL_AllMemCnt); APC_Origin=mpc_Data; // APC_Origin 다시 초기화
}
else
ReAllocKeep(VL_AllMemCnt);
//else
{ ReAllocKeep(VL_AllMemCnt); APC_Origin=mpc_Data;} // APC_Origin 다시 초기화
else{ ReAllocKeep(VL_AllMemCnt); }
TypeChar* VPC_CharDest = mpc_Data + (VL_AllMemCnt-1);
@ -2341,13 +2387,13 @@ namespace ZNsMain
{
*VPC_CharDest-- = APC_Origin[VL_NowIndex--];
}/*
while(VL_NowIndex>=VL_InnerPos)*/
/////////////////////////////*/
for(int p=AL_ReplaceLen-1; p>=0; --p)
{
*VPC_CharDest--=APC_Replace[p];
}/*
for(int p=AL_ReplaceLen-1; p>=0; --p)*/
///////////////////////////////////*/
VL_NowIndex=AR_InfoList.ItD(VI_InfoIter).ml_Pos-1;
@ -2433,9 +2479,12 @@ namespace ZNsMain
TypeLength VL_SearchPos1; TypeLength VL_SearchPos2;
const bool CB_IsSearched = (
const bool CB_IsSearched =
(
(VL_SearchPos1 = FindPos(mpc_Data, APC_Search1, ml_UseLen, AL_SearchLen1, AL_StartPos ))>=0 &&
(VL_SearchPos2 = FindPos(mpc_Data, APC_Search2, ml_UseLen, AL_SearchLen2, VL_SearchPos1+AL_SearchLen1))>=0 );
(VL_SearchPos2 = FindPos(mpc_Data, APC_Search2, ml_UseLen, AL_SearchLen2, VL_SearchPos1+AL_SearchLen1))>=0
);
//////////////////////////
if(CB_IsSearched)
{
@ -2445,7 +2494,7 @@ namespace ZNsMain
{
return *this; // 찾은 두 문자열 사이에 문자가 없을 때
}/*
if(VL_SearchPos2-VL_SearchPos1-AL_SearchLen1<1)*/
/////////////////////////////////////////////*/
return ReplaceSection
(
@ -2575,9 +2624,12 @@ namespace ZNsMain
while(VL_SearchPos1<ml_UseLen)
{
const bool CB_IsSearched = (
const bool CB_IsSearched =
(
(VL_SearchPos1=FindPos(mpc_Data, APC_Search1, ml_UseLen, AL_SearchLen1, VL_SearchPos1 ))>=0 &&
(VL_SearchPos2=FindPos(mpc_Data, APC_Search2, ml_UseLen, AL_SearchLen2, VL_SearchPos1+AL_SearchLen1))>=0 );
(VL_SearchPos2=FindPos(mpc_Data, APC_Search2, ml_UseLen, AL_SearchLen2, VL_SearchPos1+AL_SearchLen1))>=0
);
//////////////////////////
if(CB_IsSearched)
{
@ -2589,13 +2641,16 @@ namespace ZNsMain
{
VL_SearchPos1 = VL_SearchPos2 + AL_SearchLen2 ; continue;
}/*
if(VL_SearchPos2-VL_SearchPos1-AL_SearchLen1<1)*/
/////////////////////////////////////////////*/
ReplaceSection( VL_SearchPos1+AL_SearchLen1,
VL_SearchPos2-VL_SearchPos1-AL_SearchLen1,
APC_Replace,
AL_ReplaceLen
/*/////////*/ ); /////////////////////////////////////////
ReplaceSection //////////////////////////////////
(
VL_SearchPos1+AL_SearchLen1
, VL_SearchPos2-VL_SearchPos1-AL_SearchLen1
, APC_Replace
, AL_ReplaceLen
);
/////////////////////////////////////////////////
VL_SearchPos1 += AL_SearchLen1 + AL_ReplaceLen + AL_SearchLen2 ;
}
@ -2603,10 +2658,10 @@ namespace ZNsMain
{
ReplaceSection /////////////////////
(
VL_SearchPos1 ,
VL_SearchPos2-VL_SearchPos1+AL_SearchLen2,
APC_Replace ,
AL_ReplaceLen
VL_SearchPos1
, VL_SearchPos2-VL_SearchPos1+AL_SearchLen2
, APC_Replace
, AL_ReplaceLen
);
/////////////////////////////////////
@ -2717,8 +2772,8 @@ namespace ZNsMain
__for1(TypeLength, i, CL_MaxLoop)
{
VL_NeedMemory +=
AL_ReplaceLen-AR_InfoList.ItD(VI_SearchIter).size() ;
VL_NeedMemory += AL_ReplaceLen -
AR_InfoList.ItD(VI_SearchIter).size() ;
AR_InfoList.MoveNextIter(VI_SearchIter);
}/*
@ -2751,8 +2806,9 @@ namespace ZNsMain
ReAllocAdd(AL_InsertLen, true);
int VL_NowIndex= ml_UseLen-1 ;
TypeChar* VPC_Dest = mpc_Data+ml_UseLen+AL_InsertLen-1 ;
int VL_NowIndex = ml_UseLen-1 ;
TypeChar* VPC_Dest =
mpc_Data+ml_UseLen+AL_InsertLen-1 ;
while(VL_NowIndex>=AL_InsertPos)
{ *VPC_Dest-- = mpc_Data[VL_NowIndex--] ; }
@ -2870,7 +2926,7 @@ namespace ZNsMain
{
ARRL_StartPos=-1; return ARR_CStringSave;
}/*
if(AL_OriginLen<1 || ARRL_StartPos>=AL_OriginLen)*/
///////////////////////////////////////////////*/
TypeLength VL_Pos1 = FindPos
(
@ -3317,7 +3373,7 @@ namespace ZNsMain
template<typename TFunctor> static void Split /*#################*/
(
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_OriginChar,
TypeCharC* APC_SearchChar,
TypeLength AL_OriginLen ,
@ -3340,9 +3396,11 @@ namespace ZNsMain
if(AL_SearchLen<1)
{
AR_TFunctor(APC_OriginChar, AL_OriginLen); return;
ZtCTypeData<TFunctor>::GetObjRef(AO_TFunctor)
(APC_OriginChar, AL_OriginLen);
return; /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
}/*
if(AL_SearchLen<1)*/
////////////////*/
TypeLength VL_Loop =AL_OriginLen-AL_SearchLen;
TypeLength VL_CopyStartPos=0 ;
@ -3356,7 +3414,7 @@ namespace ZNsMain
{
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
}/*
for(j=0; j<AL_SearchLen; ++j)*/
///////////////////////////*/
if(j!=AL_SearchLen) // 못찾은 경우
{
@ -3374,22 +3432,25 @@ namespace ZNsMain
) ;
//////////////////////////////////////
}/*
if(VL_Index>VL_CopyStartPos)*/
>>>>>>>>>>>>>>>>>>>>>>>>>>*/
VL_CopyStartPos=VL_Index+=AL_SearchLen;
VL_CopyStartPos = VL_Index += AL_SearchLen;
}/*
while(VL_Index<=VL_Loop)*/
if(VL_CopyStartPos>=AL_OriginLen)
{
AR_TFunctor(RR(VO_CStringList)); return;
ZtCTypeData<TFunctor>::
GetObjRef(AO_TFunctor)(RR(VO_CStringList));
return; //////////////
}/*
if(VL_CopyStartPos>=AL_OriginLen)*/
if(VO_CStringList.IsEmpty() && VL_CopyStartPos==0)
{
AR_TFunctor(APC_OriginChar, AL_OriginLen) ;
ZtCTypeData<TFunctor>::GetObjRef
(AO_TFunctor)(APC_OriginChar, AL_OriginLen) ;
}
else
{
@ -3399,13 +3460,14 @@ namespace ZNsMain
) ;
//////////////////////////////////////
AR_TFunctor(RR(VO_CStringList)) ;
ZtCTypeData<TFunctor>::
GetObjRef(AO_TFunctor)(RR(VO_CStringList)) ;
}/*
else*/
}/*
template<typename TFunctor> static void Split ####################
(
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_OriginChar,
TypeCharC* APC_SearchChar,
TypeLength AL_OriginLen ,
@ -3415,16 +3477,16 @@ namespace ZNsMain
template<typename TFunctor> void Split( //////////////////////////
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_Search ,
TypeLength AL_SearchLen ,
TypeLength AL_StartPos=0
/*//////////*/ ) /////////////////////////////////////////////////
{
Split(AR_TFunctor, mpc_Data+AL_StartPos, APC_Search, ml_UseLen, AL_SearchLen);
Split(AO_TFunctor, mpc_Data+AL_StartPos, APC_Search, ml_UseLen, AL_SearchLen);
}/*
template<typename TFunctor> void Split( //////////////////////////
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_Search ,
TypeLength AL_SearchLen,
TypeLength AL_StartPos=0
@ -3433,7 +3495,7 @@ namespace ZNsMain
template<typename TFunctor, typename TSplitList> static void SplitEx
(
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_OriginChar ,
TypeCharC* APC_SearchChar ,
TypeLength AL_OriginLen ,
@ -3456,7 +3518,9 @@ namespace ZNsMain
if(AL_SearchLen<1)
{
AR_TFunctor(APC_OriginChar, AL_OriginLen); return;
ZtCTypeData<TFunctor>::GetObjRef
(AO_TFunctor)(APC_OriginChar, AL_OriginLen);
return; ////////////////////////
}/*
if(AL_SearchLen<1)*/
@ -3498,13 +3562,15 @@ namespace ZNsMain
if(VL_CopyStartPos>=AL_OriginLen)
{
AR_TFunctor(RR(VO_CStringList)); return;
ZtCTypeData<TFunctor>::GetObjRef
(AO_TFunctor)(RR(VO_CStringList)); return;
}/*
if(VL_CopyStartPos>=AL_OriginLen)*/
if(VO_CStringList.IsEmpty() && VL_CopyStartPos==0)
{
AR_TFunctor(APC_OriginChar,AL_OriginLen) ;
ZtCTypeData<TFunctor>::GetObjRef
(AO_TFunctor)(APC_OriginChar, AL_OriginLen) ;
}
else
{
@ -3515,13 +3581,14 @@ namespace ZNsMain
) ;
///////////////////////////////////////
AR_TFunctor(RR(VO_CStringList)) ;
ZtCTypeData<TFunctor>::GetObjRef
(AO_TFunctor)(RR(VO_CStringList)) ;
}/*
else*/
}/*
template<typename TFunctor, typename TSplitList> static void SplitEx
(
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_OriginChar,
TypeCharC* APC_SearchChar,
TypeLength AL_OriginLen ,
@ -3531,14 +3598,14 @@ namespace ZNsMain
template<typename TFunctor, typename TSplitList> /////////////////
void SplitEx( TFunctor AR_TFunctor ,
void SplitEx( TFunctor AO_TFunctor ,
TypeCharC* APC_SearchChar,
TypeLength AL_SearchLen ,
TypeLength AL_StartPos=0
/*///////*/ ) ////////////////////////////////////////////////////
{
SplitEx<TFunctor, TSplitList>( ///////////////
AR_TFunctor ,
AO_TFunctor ,
mpc_Data+AL_StartPos,
APC_SearchChar ,
ml_UseLen ,
@ -3546,7 +3613,7 @@ namespace ZNsMain
/*//////////*/ ); ////////////////////////////
}/*
template<typename TFunctor, typename TSplitList> /////////////////
void SplitEx( TFunctor AR_TFunctor ,
void SplitEx( TFunctor AO_TFunctor ,
TypeCharC* APC_SearchChar,
TypeLength AL_SearchLen ,
TypeLength AL_StartPos=0
@ -3555,7 +3622,7 @@ namespace ZNsMain
template<typename TFunctor> static void SplitEach /*############*/
(
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_OriginChar ,
TypeCharC* APC_SearchChar ,
TypeLength AL_OriginLen ,
@ -3565,13 +3632,15 @@ namespace ZNsMain
/*##############################################################*/
{
/* bool AB_DoExecNull 이 true 이면 구분 문자로 잘린 문자열 길이
가 0 인 경우에도 AR_TFunctor 를 수행한다. */
가 0 인 경우에도 AO_TFunctor 를 수행한다. */
if(AL_OriginLen<1) return; int VL_SearchCount=0; /*####################*/
if(AL_SearchLen<1)
{
AR_TFunctor( APC_OriginChar, AL_OriginLen , ++VL_SearchCount); return;
ZtCTypeData<TFunctor>::GetObjRef(AO_TFunctor)
(APC_OriginChar, AL_OriginLen , ++VL_SearchCount);
return; /////////////////////////////////////
}/*
if(AL_SearchLen<1)*/
@ -3599,17 +3668,18 @@ namespace ZNsMain
if(VL_Index>VL_CopyStartPos)
{
AR_TFunctor
ZtCTypeData<TFunctor>::GetObjRef(AO_TFunctor)
(
APC_OriginChar+VL_CopyStartPos,
VL_Index -VL_CopyStartPos,
++VL_SearchCount
) ;
///////////
/////////////////////////////////////////////
}
else if(AB_DoExecNull==true)
{
AR_TFunctor(0, 0, ++VL_SearchCount) ;
ZtCTypeData<TFunctor>::GetObjRef
(AO_TFunctor)(0, 0, ++VL_SearchCount) ;
}/*
else if(AB_DoExecNull==true)*/
@ -3622,26 +3692,26 @@ namespace ZNsMain
if(VL_SearchCount==0 && VL_CopyStartPos==0)
{
AR_TFunctor ////////
ZtCTypeData<TFunctor>::GetObjRef(AO_TFunctor)
(
APC_OriginChar, AL_OriginLen, ++VL_SearchCount
) ;
////////////////////
/////////////////////////////////////////////
}
else
{
AR_TFunctor ////////
ZtCTypeData<TFunctor>::GetObjRef(AO_TFunctor)
(
APC_OriginChar+VL_CopyStartPos,
AL_OriginLen -VL_CopyStartPos,
++VL_SearchCount
) ;
////////////////////
/////////////////////////////////////////////
}
}/*
template<typename TFunctor> static void SplitEach ################
(
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_OriginChar ,
TypeCharC* APC_SearchChar ,
TypeLength AL_OriginLen ,
@ -3652,7 +3722,7 @@ namespace ZNsMain
template<typename TFunctor> void SplitEach( /*##################*/
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_SearchChar,
TypeLength AL_SearchLen ,
TypeLength AL_StartPos=0 ,
@ -3660,7 +3730,7 @@ namespace ZNsMain
/*#########*/ ) /*##############################################*/
{
SplitEach<TFunctor>( /*####################*/
AR_TFunctor ,
AO_TFunctor ,
mpc_Data+AL_StartPos,
APC_SearchChar ,
ml_UseLen ,
@ -3669,7 +3739,7 @@ namespace ZNsMain
/*########*/ ); /*########################*/
}/*
template<typename TFunctor> void SplitEach( #####################
TFunctor AR_TFunctor ,
TFunctor AO_TFunctor ,
TypeCharC* APC_SearchChar,
TypeLength AL_SearchLen ,
TypeLength AL_StartPos=0 ,