commit 2025-08-19 14:15 edit a bit ZCppMain/ZtCMainChars.H

This commit is contained in:
2025-08-19 14:15:42 +09:00
parent 1a4120ed22
commit 15ba79c33c

View File

@ -1626,20 +1626,22 @@ namespace ZNsMain
return -1;
//endif
bool VB_IsOK=ZtCMainChars::DoStart(
APC_Origin2 ,
APC_Search +VL_MatchLen,
AL_OriginLen2 ,
AL_SearchLength-VL_MatchLen
/*/////////*/ );
bool VB_IsOK = ZtCMainChars::DoStart
(
APC_Origin2 ,
APC_Search +VL_MatchLen,
AL_OriginLen2 ,
AL_SearchLength-VL_MatchLen
);
////////////////////////////////////
if(VB_IsOK==true)
{
ARRL_SearchedPos1=AL_OriginLen1-VL_MatchLen;
ARRL_SearchedPos2=0 ;
ARRL_SearchedLen1=VL_MatchLen;
ARRL_SearchedLen2=AL_SearchLength-VL_MatchLen;
ARRL_SearchedPos1=AL_OriginLen1-VL_MatchLen
; ARRL_SearchedPos2=0
; ARRL_SearchedLen1=VL_MatchLen
; ARRL_SearchedLen2=AL_SearchLength-VL_MatchLen
;
return 0;
}/*
if(VB_IsOK==true)*/
@ -1766,14 +1768,16 @@ namespace ZNsMain
template<
typename TReadyExec, typename TTyChars, typename TString>
static bool FindPosReady(
TReadyExec AR_CReadyExec ,
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TString& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
/*//////////*/ ) ////////////////////////////////////////*/
static bool FindPosReady
(
TReadyExec AR_CReadyExec ,
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TString& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
)
/////////////////////////////////////////////////////////////
{
/*###########################################################################################
@ -1826,9 +1830,9 @@ namespace ZNsMain
if(VL_ReadyBuffSize>0)
{
ARRE_ERun=AR_CReadyExec.
ARRE_ERun =AR_CReadyExec.
OnMeetNormal(ARR_CStrReadyBuff.data(), VL_ReadyBuffSize);
ARR_CStrReadyBuff="";
ARR_CStrReadyBuff ="" ;
if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return false;
}/*
@ -1844,22 +1848,25 @@ namespace ZNsMain
TypeLength VL_ValidLen=VO_CCharsOrigin.size()-VL_MatchLen;
if(VL_MatchLen>0)
ARR_CStrReadyBuff.append(VO_CCharsOrigin.data()+VL_ValidLen, VL_MatchLen);
ARR_CStrReadyBuff.append
(VO_CCharsOrigin.data()+VL_ValidLen, VL_MatchLen);
if(VL_ValidLen>0)
ARRE_ERun=AR_CReadyExec.OnMeetNormal(VO_CCharsOrigin.data(), VL_ValidLen);
//endif
ARRE_ERun=AR_CReadyExec.OnMeetNormal
(VO_CCharsOrigin.data() , VL_ValidLen);
return false;
}/*
if(VL_ReadyBuffSize+AR_CCharsOrigin.size()<AR_CCharsSearch.size())*/
bool VB_IsOK=ZtCMainChars::DoStart(
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
AR_CCharsSearch.size()-VL_ReadyBuffSize
/*/////////*/ );
bool VB_IsOK=ZtCMainChars::DoStart
(
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
AR_CCharsSearch.size()-VL_ReadyBuffSize
);
//////////////////////////////////
if(VB_IsOK==true)
{
@ -1880,8 +1887,8 @@ namespace ZNsMain
ARRE_ERun=AR_CReadyExec.OnMeetReady(
VO_CCharsOrigin.data(), VL_ReadyLen, ZNsMain::ZNsEnum::ZERun_NO);
ARRL_StartPos +=VL_ReadyLen;
ARR_CStrReadyBuff="" ; return true;
ARRL_StartPos += VL_ReadyLen;
ARR_CStrReadyBuff = "" ; return true;
}/*
if(VB_IsOK==true)*/
@ -1907,12 +1914,18 @@ namespace ZNsMain
if(VL_FindPos<0)
{
ARRL_StartPos = -1;
ARRE_ERun=AR_CReadyExec.OnMeetNormal(
VO_CCharsOrigin.data(), VO_CCharsOrigin.size()-VL_MatchLen );
ARR_CStrReadyBuff.append(
VO_CCharsOrigin.data()+VO_CCharsOrigin.size()-VL_MatchLen, VL_MatchLen );
return false;
ARRE_ERun=AR_CReadyExec.OnMeetNormal
(
VO_CCharsOrigin.data()
, VO_CCharsOrigin.size()-VL_MatchLen
);
ARR_CStrReadyBuff.append
(
VO_CCharsOrigin.data() +
VO_CCharsOrigin.size() - VL_MatchLen
, VL_MatchLen
);
return false; //////////////////////////////////
}/*
if(VL_FindPos<0)*/
@ -1925,22 +1938,28 @@ namespace ZNsMain
}/*
if(VL_FindPos>0)*/
ARRE_ERun =AR_CReadyExec.OnMeetReady(
VO_CCharsOrigin.data()+VL_FindPos, AR_CCharsSearch.size(), ZNsMain::ZNsEnum::ZERun_NO);
ARRL_StartPos+=(VL_FindPos+AR_CCharsSearch.size());
ARRE_ERun = AR_CReadyExec.OnMeetReady
(
VO_CCharsOrigin.data()+VL_FindPos
, AR_CCharsSearch.size()
, ZNsMain::ZNsEnum::ZERun_NO
);
ARRL_StartPos += (VL_FindPos+AR_CCharsSearch.size());
return true;
return true; ////////////////////////////////////////
}/*
template<
typename TReadyExec, typename TTyChars, typename TString>
static bool FindPosReady(
TReadyExec AR_CReadyExec ,
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TString& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
////////////// ) ////////////////////////////////////////*/
static bool FindPosReady
(
TReadyExec AR_CReadyExec ,
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TString& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
)
///////////////////////////////////////////////////////////*/
template<
typename TReadyExec, typename TStringData> //////////////
@ -2014,8 +2033,8 @@ namespace ZNsMain
typedef ZNsMain::ZtCCheckRef<THelpType> ZCCheckRef ;
typedef ZCCheckRef::TypeData TypeObject ;
ZCChars VO_CCharsOrigin(
AR_CCharsOrigin.data(), AR_CCharsOrigin.size() ) ;
ZCChars VO_CCharsOrigin
(AR_CCharsOrigin.data(), AR_CCharsOrigin.size());
VO_CCharsOrigin += ARRL_StartPos ;
@ -2095,12 +2114,14 @@ namespace ZNsMain
if(VL_ReadyBuffSize+AR_CCharsOrigin.size()<AR_CCharsSearch.size())*/
bool VB_IsOK=ZtCMainChars::DoStart(
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
AR_CCharsSearch.size()-VL_ReadyBuffSize
/*////////*/ );
bool VB_IsOK=ZtCMainChars::DoStart
(
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
AR_CCharsSearch.size()-VL_ReadyBuffSize
);
//////////////////////////////////
if(VB_IsOK==true)
{
@ -2257,18 +2278,21 @@ namespace ZNsMain
TypeLength& ARRL_StartPos , // AP_OriginData 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
)
///////////////////////////////////////////////////////////////////*/
//////////////////////////////////////////////////////////////////*/
template<typename TTyChars, typename TStringData> //////////////////
static bool FindPosReadyValid(
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TStringData& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos ,
TypeLength& ARRL_ValidReady , // ARR_CStrReadyBuff 의 유효길이
TypeLength& ARRL_ValidLen
/*//////////*/ ) /////////////////////////////////////////////////*/
template
<typename TTyChars, typename TStringData>
static bool FindPosReadyValid
(
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TStringData& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos ,
TypeLength& ARRL_ValidReady , // ARR_CStrReadyBuff 의 유효길이
TypeLength& ARRL_ValidLen
)
///////////////////////////////////////////*/
{
// ARRL_ValidReady 은 0 이나 ARR_CStrReadyBuff.size() 중 한 값이다.
@ -2317,12 +2341,14 @@ namespace ZNsMain
{
// 찾는 데이타의 길이는 AR_CCharsOrigin.size() 이 된다.
bool VB_IsOK=ZtCMainChars::DoStart(
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
VO_CCharsOrigin.size()
/*////////*/ );
bool VB_IsOK=ZtCMainChars::DoStart
(
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
VO_CCharsOrigin.size()
);
//////////////////////////////////
if(VB_IsOK==true)
{
@ -2341,29 +2367,33 @@ namespace ZNsMain
ARRL_ValidReady = VL_ReadyBuffSize;
ARRL_StartPos =-1;
VL_MatchLen=ZtCMainChars::GetMatchLenFromEnd(
VO_CCharsOrigin.data(),
AR_CCharsSearch.data(),
VO_CCharsOrigin.size(),
VO_CCharsOrigin.size()
/*/////////*/ ); ////////////////////////////
VL_MatchLen = ZtCMainChars::GetMatchLenFromEnd
(
VO_CCharsOrigin.data(),
AR_CCharsSearch.data(),
VO_CCharsOrigin.size(),
VO_CCharsOrigin.size()
);
//////////////////////////////////////////////
ARRL_ValidLen=AR_CCharsOrigin.size()-VL_MatchLen;
if(VL_MatchLen>0) ARR_CStrReadyBuff.
append(VO_CCharsOrigin.data()+ARRL_ValidLen, VL_MatchLen);
if(VL_MatchLen>0) ARR_CStrReadyBuff.append
(VO_CCharsOrigin.data()+ARRL_ValidLen, VL_MatchLen);
return false;
}/*
if(VL_ReadyBuffSize+AR_CCharsOrigin.size()<AR_CCharsSearch.size())*/
bool VB_IsOK=ZtCMainChars::DoStart(
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
AR_CCharsSearch.size()-VL_ReadyBuffSize
/*/////////*/ );
bool VB_IsOK=ZtCMainChars::DoStart
(
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
AR_CCharsSearch.size()-VL_ReadyBuffSize
);
//////////////////////////////////
ARR_CStrReadyBuff="";
@ -2380,13 +2410,13 @@ namespace ZNsMain
VL_MatchLen=0;
TypeLength VL_FindPos =ZtCMainChars::FindPosLen(
VO_CCharsOrigin.data(),
AR_CCharsSearch.data(),
VO_CCharsOrigin.size(),
AR_CCharsSearch.size(),
RR(VL_MatchLen)
/*/////////*/ ); ///////////////////////////////
TypeLength VL_FindPos = ZtCMainChars::FindPosLen
(
VO_CCharsOrigin.data(), AR_CCharsSearch.data(),
VO_CCharsOrigin.size(), AR_CCharsSearch.size(),
RR(VL_MatchLen)
);
////////////////////////////////////////////////
ARRL_ValidReady = VL_ReadyBuffSize;
@ -2404,17 +2434,20 @@ namespace ZNsMain
ARRL_ValidLen =VL_FindPos;
ARRL_StartPos+=(VL_FindPos+AR_CCharsSearch.size());
return true;
return true; /////////////
}/*
template<typename TTyChars, typename TStringData> //////////////////
static bool FindPosReadyValid(
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TStringData& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos ,
TypeLength& ARRL_ValidReady , // ARR_CStrReadyBuff 의 유효길이
TypeLength& ARRL_ValidLen
////////////// ) /////////////////////////////////////////////////*/
template
<typename TTyChars, typename TStringData>
static bool FindPosReadyValid
(
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TStringData& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos ,
TypeLength& ARRL_ValidReady , // ARR_CStrReadyBuff 의 유효길이
TypeLength& ARRL_ValidLen
)
///////////////////////////////////////////*/
template<typename TString>
@ -2472,11 +2505,9 @@ namespace ZNsMain
{
++VL_SearchCount; VL_SearchOffset=0;
}/*
if(++VL_SearchOffset==AL_SearchLen)*/
/////////////////////////////////*/
}
else
VL_SearchOffset=0;
/*else*/
else VL_SearchOffset=0;
}/*
__for0(TypeLength, i, AL_OriginLen)*/
@ -2558,21 +2589,23 @@ namespace ZNsMain
template<typename TFunctor> static void SplitEach( ///////////////
TFunctor AR_TFunctor ,
TypeCharC* APC_OriginChar ,
TypeCharC* APC_SearchChar ,
TypeLength AL_OriginLen ,
TypeLength AL_SearchLen ,
TFunctor AO_Functor ,
TypeCharC* APC_OriginChar ,
TypeCharC* APC_SearchChar ,
TypeLength AL_OriginLen ,
TypeLength AL_SearchLen ,
bool AB_DoExecNull=true // 구분 문자로 잘린 문자열 길이가 0 인 경우에도 펑크터를 수행한다.
/*//////////*/ ) ///////////////////////////////////////////////*/
{
if(AL_OriginLen<1 || AL_OriginLen<AL_SearchLen) return;
int VI_SearchCount=0; // AR_TFunctor() 에게 찾은 번호를 전달하기 위한 변수
int VI_SearchCount=0; // AO_Functor() 에게 찾은 번호를 전달하기 위한 변수
if(AL_SearchLen<1)
{
AR_TFunctor(APC_OriginChar, AL_OriginLen, ++VI_SearchCount); return;
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(APC_OriginChar, AL_OriginLen, ++VI_SearchCount);
return;
}/*
if(AL_SearchLen<1)*/
@ -2600,12 +2633,18 @@ namespace ZNsMain
if(VL_Index>VL_CopyStartPos)
{
AR_TFunctor(
APC_OriginChar+VL_CopyStartPos, VL_Index-VL_CopyStartPos, ++VI_SearchCount) ;
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
APC_OriginChar+VL_CopyStartPos ,
VL_Index -VL_CopyStartPos ,
++VI_SearchCount
) ;
////////////////////////////////////////////
}
else if(AB_DoExecNull==true)
{
AR_TFunctor(0, 0, ++VI_SearchCount) ;
ZtCTypeData<TFunctor>::GetObjRef
(AO_Functor)(0, 0, ++VI_SearchCount) ;
}/*
else if(AB_DoExecNull==true)*/
@ -2618,17 +2657,23 @@ namespace ZNsMain
if(VI_SearchCount==0 && VL_CopyStartPos==0)
{
AR_TFunctor(APC_OriginChar, AL_OriginLen, ++VI_SearchCount) ;
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(APC_OriginChar, AL_OriginLen, ++VI_SearchCount) ;
}
else
{
AR_TFunctor(
APC_OriginChar+VL_CopyStartPos, AL_OriginLen-VL_CopyStartPos, ++VI_SearchCount) ;
ZtCTypeData<TFunctor>::GetObjRef(AO_Functor)
(
APC_OriginChar+VL_CopyStartPos ,
AL_OriginLen -VL_CopyStartPos ,
++VI_SearchCount
) ;
////////////////////////////////////////////
}/*
else*/
}/*
template<typename TFunctor> static void SplitEach( ///////////////
TFunctor AR_TFunctor ,
TFunctor AO_Functor ,
TypeCharC* APC_OriginChar ,
TypeCharC* APC_SearchChar ,
TypeLength AL_OriginLen ,
@ -2637,17 +2682,17 @@ namespace ZNsMain
////////////// ) ///////////////////////////////////////////////*/
template<typename TFunctor, typename TTyChars> static void SplitEach(
TFunctor AR_TFunctor, const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch, bool AB_DoExecNull=true)
TFunctor AO_Functor, const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch, bool AB_DoExecNull=true)
{
ZtCMainChars::template SplitEach<TFunctor,TTyChars>(
AR_TFunctor,
AO_Functor,
AR_CCharsOrigin.data(), AR_CCharsSearch.data(),
AR_CCharsOrigin.size(), AR_CCharsSearch.size(),
AB_DoExecNull
/*/////////*/ ); //////////////////////////////////////////////
}/*
template<typename TFunctor, typename TTyChars> static void SplitEach(
TFunctor AR_TFunctor, const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch, bool AB_DoExecNull=true) */
TFunctor AO_Functor, const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch, bool AB_DoExecNull=true) */
template<typename TString> static bool SplitTwo( /////////////////