commit 2025-08-25 03:26 edit a bit ZCppMain/ZtCMainChars.H

This commit is contained in:
2025-08-25 03:26:15 +09:00
parent 4015ba2758
commit 490eed99c1

View File

@ -935,12 +935,20 @@ namespace ZNsMain
template<typename TTyChars> static TypeLength FindPos(
const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength AL_StartPos=0) */
static TypeLength FindPos(
TypeCharC* APC_Origin , TypeCharC* APC_Search ,
TypeLength AL_OriginLength, TypeLength AL_SearchLength, TypeLength AL_StartPos=0)
static TypeLength FindPos /*############################################*/
(
TypeCharC* APC_Origin , TypeCharC* APC_Search ,
TypeLength AL_OriginLength, TypeLength AL_SearchLength,
TypeLength AL_StartPos=0
)
/*######################################################################*/
{
const bool CB_IsBad = (
AL_OriginLength<1 || AL_SearchLength<1 || AL_StartPos<0 || AL_StartPos>=AL_OriginLength );
const bool CB_IsBad = ////////////////////////////////////
(
AL_OriginLength< 1 || AL_SearchLength< 1 ||
AL_StartPos < 0 || AL_StartPos >= AL_OriginLength
);
//////////////////////////////////////////////////////////
if(CB_IsBad) return -1;
@ -978,9 +986,13 @@ namespace ZNsMain
return -1;
}/*
static TypeLength FindPos(
TypeCharC* APC_Origin , TypeCharC* APC_Search ,
TypeLength AL_OriginLength, TypeLength AL_SearchLength, TypeLength AL_StartPos=0)*/
static TypeLength FindPos ###############################################
(
TypeCharC* APC_Origin , TypeCharC* APC_Search ,
TypeLength AL_OriginLength, TypeLength AL_SearchLength,
TypeLength AL_StartPos=0
)
/*######################################################################*/
template<typename TTyChars> static TypeLength FindPosLen(
@ -1002,8 +1014,12 @@ namespace ZNsMain
TypeLength AL_StartPos=0
/*////////*/ ) /*//////////////////////////////////////////////*/
{
const bool CB_IsBad =
(AL_OriginLength<1 || AL_SearchLength<1 || AL_StartPos<0 || AL_StartPos>=AL_OriginLength );
const bool CB_IsBad = /////////////////////////////////////////
(
AL_OriginLength< 1 || AL_SearchLength< 1 ||
AL_StartPos < 0 || AL_StartPos >= AL_OriginLength
);
///////////////////////////////////////////////////////////////
if(CB_IsBad) return -1;
@ -1037,11 +1053,11 @@ namespace ZNsMain
{
for(j=0; j<AL_OriginLength-i; ++j)
{
if(APC_Origin[i+j]!=APC_Search[j])
if(APC_Origin[i+j] != APC_Search[j])
{
VL_MatchLen=0; break;
}/*
if(APC_Origin[i+j]!=APC_Search[j])*/
//////////////////////////////////*/
++VL_MatchLen;
}/*
@ -1073,18 +1089,26 @@ namespace ZNsMain
TypeLength AL_StartPos=0
/*//////////*/ ) /////////////////////////////////////////////////
{
if(AL_EscapeLen<1) return ZtCMainChars::
FindPos(APC_Origin, APC_Search, AL_OriginLen, AL_SearchLen, AL_StartPos);
if(AL_EscapeLen<1) return ZtCMainChars::FindPos
(
APC_Origin, APC_Search, AL_OriginLen, AL_SearchLen, AL_StartPos
);
///////////////////////////////////////////////
const bool CB_IsBad = (
AL_OriginLen<1 || AL_SearchLen<1 || AL_OriginLen<AL_SearchLen+AL_StartPos );
const bool CB_IsBad = /////////////////////////
(
AL_OriginLen< 1 || AL_SearchLen<1 ||
AL_OriginLen< AL_SearchLen+AL_StartPos
);
///////////////////////////////////////////////
if(CB_IsBad) return -1;
const TypeChar* VP_Origin = APC_Origin+AL_StartPos ;
bool VB_DoEscape= false; TypeLength i=0 ;
TypeLength VL_MaxLoop =
AL_OriginLen-AL_SearchLen-AL_StartPos ;
const TypeChar* VP_Origin = APC_Origin+AL_StartPos ;
bool VB_DoEscape= false ;
TypeLength i = 0 ;
TypeLength VL_MaxLoop =
AL_OriginLen-AL_SearchLen-AL_StartPos ;
while(i<=VL_MaxLoop)
{
@ -1092,30 +1116,31 @@ namespace ZNsMain
if(VB_DoEscape==false)
{
VB_DoEscape=ZtCMainChars::
DoStart(VP_Origin, APC_Escape, AL_OriginLen-i, AL_EscapeLen);
VB_DoEscape = ZtCMainChars::DoStart
(VP_Origin, APC_Escape, AL_OriginLen-i, AL_EscapeLen);
if(VB_DoEscape==true)
{
VP_Origin+=AL_EscapeLen;
i +=AL_EscapeLen;
VP_Origin += AL_EscapeLen ;
i += AL_EscapeLen ;
}/*
if(VB_DoEscape==true)*/
}/*
if(VB_DoEscape==false)*/
#define __TEMP_DOSTART__ ZtCMainChars::DoStart( \
VP_Origin , \
APC_Search , \
AL_OriginLen-i-AL_StartPos, \
AL_SearchLen \
/*//////////////*/ )
#define __TEMP_DOSTART__ ZtCMainChars::DoStart \
( \
VP_Origin , \
APC_Search , \
AL_OriginLen-i-AL_StartPos, \
AL_SearchLen \
) /*:::::::::::::::::::::::::::::::::::::::*/
if(__TEMP_DOSTART__==false)
if(__TEMP_DOSTART__ == false)
{
VB_DoEscape=false; ++VP_Origin; ++i; continue;
VB_DoEscape=false; ++VP_Origin; ++i; continue;
}/*
if(__TEMP_DOSTART__==false)*/
if(__TEMP_DOSTART__ == false)*/
#undef __TEMP_DOSTART__
@ -1171,8 +1196,12 @@ namespace ZNsMain
TypeLength AL_StartPos=0
/*//////////*/ ) ///////////////////////////////////////////////*/
{
const bool CB_IsBad =
(AL_OriginLen<1 || AL_SearchLen<1 || AL_OriginLen<AL_SearchLen+AL_StartPos) ;
const bool CB_IsBad = ///////////////////////
(
AL_OriginLen<1 || AL_SearchLen<1 ||
AL_OriginLen<AL_SearchLen+AL_StartPos
) ;
/////////////////////////////////////////////
if(CB_IsBad) return -1;
@ -1186,7 +1215,7 @@ namespace ZNsMain
if(CB_DoStart)
{
TypeLength VL_WrapClosePos=ZtCMainChars::FindPosEsc(
TypeLength VL_WrapClosePos = ZtCMainChars::FindPosEsc(
APC_Origin ,
APC_WrapClose ,
APC_Escape ,
@ -1194,7 +1223,7 @@ namespace ZNsMain
AL_WrapCloseLen ,
AL_EscapeLen ,
AL_StartPos+AL_WrapStartLen
/*/////////*/ ); ///////////////////////////////////
/*/////////*/ ); /////////////////////////////////////
if(VL_WrapClosePos<0) return -1;
@ -1404,8 +1433,12 @@ namespace ZNsMain
////////////////////////////////////////////////////////////////*/
static TypeLength FindPosFromEnd(
TypeCharC* APC_Origin, TypeCharC* APC_Search, TypeLength AL_OriginLen, TypeLength AL_SearchLen)
static TypeLength FindPosFromEnd /*######################################################*/
(
TypeCharC* APC_Origin , TypeCharC* APC_Search,
TypeLength AL_OriginLen, TypeLength AL_SearchLen
)
/*#######################################################################################*/
{
// APC_Origin 문자열에서 APC_Search을 AL_StartPos 번째 부터 역방향으로 접근해서 찾는다.
@ -1416,13 +1449,13 @@ namespace ZNsMain
while(i>=0)
{
TypeLength j;
TypeLength j=0;
for(j=0; j<AL_SearchLen; ++j)
for(; j<AL_SearchLen; ++j)
{
if(APC_Origin[i+j]!=APC_Search[j]) break;
}/*
for(j=0; j<AL_SearchLen; ++j)*/
}
/*//////////////////////*/
if(j==AL_SearchLen) return i; --i;
}/*
@ -1430,51 +1463,64 @@ namespace ZNsMain
return -1;
}/*
static TypeLength FindPosFromEnd(
TypeCharC* APC_Origin, TypeCharC* APC_Search, TypeLength AL_OriginLen, TypeLength AL_SearchLen)*/
static TypeLength FindPosFromEnd ##########################################################
(
TypeCharC* APC_Origin , TypeCharC* APC_Search,
TypeLength AL_OriginLen, TypeLength AL_SearchLen
)
/*#######################################################################################*/
template<typename TTyChars>
static TypeLength FindPosFromEnd(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch)
template<typename TTyChars> static TypeLength FindPosFromEnd
(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch)
{
return ZCMainChars::FindPosFromEnd(AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size());
}/*
template<typename TTyChars>
static TypeLength FindPosFromEnd(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */
template<typename TTyChars> static TypeLength FindPosFromEnd
(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */
template<typename TTyChars>
static TypeLength GetMatchLenFromEnd(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch)
template<typename TTyChars> static TypeLength GetMatchLenFromEnd
(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch)
{
return ZtCMainChars::GetMatchLenFromEnd(AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size());
}/*
template<typename TTyChars>
static TypeLength GetMatchLenFromEnd(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */
template<typename TTyChars> static TypeLength GetMatchLenFromEnd
(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */
static TypeLength GetMatchLenFromEnd(
TypeCharC* APC_Origin, TypeCharC* APC_Search, TypeLength AL_OriginLength, TypeLength AL_SearchLength)
static TypeLength GetMatchLenFromEnd /*#################################*/
(
TypeCharC* APC_Origin , TypeCharC* APC_Search,
TypeLength AL_OriginLength, TypeLength AL_SearchLength
)
/*######################################################################*/
{
if(AL_OriginLength<1 || AL_SearchLength<1) return 0;
TypeLength VL_LoopCnt =
(AL_SearchLength>AL_OriginLength ? AL_OriginLength : AL_SearchLength);
( AL_SearchLength>AL_OriginLength ?
AL_OriginLength : AL_SearchLength
);
TypeCharC* VP_OriTemp =
( AL_SearchLength>AL_OriginLength ?
APC_Origin :
APC_Origin+ (AL_OriginLength-AL_SearchLength)
) ;
TypeCharC* VP_OriTemp=
(AL_SearchLength>AL_OriginLength ? APC_Origin : APC_Origin+(AL_OriginLength-AL_SearchLength) );
TypeCharC* VP_OriTempIn= 0 ;
TypeCharC* VP_SeaTemp = APC_Search;
TypeCharC* VP_OriTempIn; TypeCharC* VP_SeaTemp=APC_Search;
TypeLength i=0; TypeLength j=0;
TypeLength i=0; TypeLength j=0 ;
for(i=VL_LoopCnt; i>0; --i)
{
VP_OriTempIn=VP_OriTemp++;
VP_SeaTemp =APC_Search ;
VP_OriTempIn= VP_OriTemp++;
VP_SeaTemp = APC_Search ;
for(j=0; j<i; ++j)
{
if(*VP_OriTempIn++ != *VP_SeaTemp++) break;
}/*
for(j=0; j<i; ++j)*/
}
/*::::::::::::::*/
if(j>=i) return i;
}/*
@ -1482,8 +1528,12 @@ namespace ZNsMain
return 0;
}/*
static TypeLength GetMatchLenFromEnd(
TypeCharC* APC_Origin, TypeCharC* APC_Search, TypeLength AL_OriginLength, TypeLength AL_SearchLength)*/
static TypeLength GetMatchLenFromEnd #####################################
(
TypeCharC* APC_Origin , TypeCharC* APC_Search,
TypeLength AL_OriginLength, TypeLength AL_SearchLength
)
/*######################################################################*/
/* 앞에서부터 감싸는 문자열 APC_WrapStart 와 APC_WrapClose 사이에 있는 문자열이 n 회
@ -1575,8 +1625,8 @@ namespace ZNsMain
APC_Origin1 에서 발견된 위치는 ARRL_SearchedPos1 에
APC_Origin2 에서 발견된 위치는 ARRL_SearchedPos2 에 셋팅한다.
APC_Origin1 에서 발견된 길이는 ARRL_SearchedLen1 에
APC_Origin2 에서 발견된 길이는 ARRL_SearchedLen2 에 셋팅한다. */
APC_Origin2 에서 발견된 길이는 ARRL_SearchedLen2 에 셋팅한다.
*/
ARRL_SearchedPos1=-1;
ARRL_SearchedPos2=-1;
ARRL_SearchedLen1= 0;
@ -1591,40 +1641,38 @@ namespace ZNsMain
if(APC_Origin1<APC_Search)
{
VL_FindPos=ZtCMainChars::FindPosLen(
APC_Origin1 ,
APC_Search ,
AL_OriginLen1 ,
AL_SearchLength ,
RR(VL_MatchLen) ,
0
/*/////////*/ ); ///////////////////
VL_FindPos = ZtCMainChars::FindPosLen
(
APC_Origin1 , APC_Search ,
AL_OriginLen1 , AL_SearchLength ,
RR(VL_MatchLen) , 0
);
//////////////////////////////////////
}
else
{
VL_FindPos=ZtCMainChars::FindPosLen(
APC_Origin1 ,
APC_Search ,
AL_OriginLen1 ,
AL_SearchLength ,
RR(VL_MatchLen) ,
AL_OriginLen1-AL_SearchLength
/*/////////*/ );
VL_FindPos = ZtCMainChars::FindPosLen
(
APC_Origin1 , APC_Search ,
AL_OriginLen1 , AL_SearchLength ,
RR(VL_MatchLen) , AL_OriginLen1-AL_SearchLength
);
//////////////////////////////////////
}/*
else*/
if(VL_FindPos>=0)
{
ARRL_SearchedLen1=AL_SearchLength; return ARRL_SearchedPos1=VL_FindPos ;
ARRL_SearchedLen1=AL_SearchLength; return ARRL_SearchedPos1=VL_FindPos ;
}/*
if(VL_FindPos>=0)*/
if(VL_MatchLen>0)
{
if(AL_SearchLength-VL_MatchLen>AL_OriginLen2)
return -1;
//endif
if(AL_SearchLength-VL_MatchLen > AL_OriginLen2)
{ return -1; }
/*:::::::::::::::::::::::::::::::::::::::::::*/
bool VB_IsOK = ZtCMainChars::DoStart
(
@ -1706,15 +1754,15 @@ namespace ZNsMain
/*////////////////////////////////////////////////////////////////////////////////////////////
■ template<typename TReadyExec, typename TString>
bool FindPosReady(
TReadyExec AR_CReadyExec ,
const ZCChars& AR_CCharsOrigin ,
const ZCChars& AR_CCharsSearch ,
TString& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
///////////// )
■ template<typename TReadyExec, typename TString> bool FindPosReady
(
TReadyExec AR_CReadyExec ,
const ZCChars& AR_CCharsOrigin ,
const ZCChars& AR_CCharsSearch ,
TString& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
)
어떤 문자열에서 찾으려고 하는 데이타가 있는데, 문자열이 너무 길어서 한 번에 다 읽지 못하는 경우,
문자열을 조금씩 읽어서 찾는 문자열을 탐색할 필요가 있다. 구체적으로 아래 문자열로 예를 들어보자.
@ -1747,7 +1795,7 @@ namespace ZNsMain
이 알고리즘을 구현한 것이 FindPosReady(~) 이다.
FindPosReady() 은 읽어들인 문자열을 AR_CCharsSearch.data() 에 대입하여 AR_CCharsOrigin.data() 을 찾는다.
못찾았으면 다음에 읽어들인 문자열에 찾는 문자열이 존재할 수 있으므로, 일단 AR_CCharsOrigin.data() 의
찾았으면 다음에 읽어들인 문자열에 찾는 문자열이 존재할 수 있으므로, 일단 AR_CCharsOrigin.data() 의
뒤에서 AR_CCharsSearch.data() 의 앞부분과 일치하는 문자를 ARR_CStrReadyBuff 에 저장한다. (이 문자들은
찾는 문자열의 일부일 수 있다.)
@ -1767,7 +1815,7 @@ namespace ZNsMain
////////////////////////////////////////////////////////////////////////////////////////////*/
template<
typename TReadyExec, typename TTyChars, typename TString>
typename TReadyExec, typename TTyChars, typename TString> /*###########################*/
static bool FindPosReady
(
TReadyExec AR_CReadyExec ,
@ -1777,9 +1825,9 @@ namespace ZNsMain
TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
)
/////////////////////////////////////////////////////////////
/*##########################################################################################*/
{
/*###########################################################################################
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
■ ARR_CStrReadyBuff 에는 AR_CCharsSearch.data() 의 앞부분과 일치하는 문자열이 들어 있다.
다른 엉뚱한 데이타가 들어있지 않도록 만전을 기해야 한다.
@ -1789,24 +1837,25 @@ namespace ZNsMain
하는 위치로 셋팅된다. 그래서 다음 번 조회시에는 AR_CCharsOrigin.data()+ARRL_StartPos 부터
조회하면 된다.
###########################################################################################*/
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
ZCChars VO_CCharsOrigin(AR_CCharsOrigin.data(), AR_CCharsOrigin.size());
ZCChars VO_CCharsOrigin
(AR_CCharsOrigin.data(), AR_CCharsOrigin.size());
VO_CCharsOrigin += ARRL_StartPos;
if(VO_CCharsOrigin.size()<1 || AR_CCharsSearch.size()<1)
{ return false; }
////////////////////////////////////////////////////////
/*::::::::::::::::::::::::::::::::::::::::::::::::::::*/
TypeLength VL_ReadyBuffSize=ARR_CStrReadyBuff.size();
TypeLength VL_MatchLen =0;
TypeLength VL_ReadyBuffSize= ARR_CStrReadyBuff.size();
TypeLength VL_MatchLen = 0 ;
if(VL_ReadyBuffSize+VO_CCharsOrigin.size()<AR_CCharsSearch.size())
{
// 찾는 데이타의 길이는 AR_CCharsOrigin.size() 이 된다.
bool VB_IsOK=ZtCMainChars::DoStart( ////////////////////
bool VB_IsOK = ZtCMainChars::DoStart( //////////////////
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
@ -1823,50 +1872,50 @@ namespace ZNsMain
if(VB_IsOK==true)*/
/* 찾지 못한 경우 ARR_CStrReadyBuff 버퍼 앞 1 바이트가 아니라
그 버퍼 전체가 찾는 대상에 포함되지 않는다. */
/* 찾지 못한 경우 ARR_CStrReadyBuff 버퍼 앞 1 바이트가
아니라, 그 버퍼 전체가 찾는 대상에 포함되지 않는다.
*/
ARRL_StartPos = -1;
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;
}/*
if(VL_ReadyBuffSize>0)*/
VL_MatchLen=ZtCMainChars::GetMatchLenFromEnd(
VL_MatchLen = ZtCMainChars::GetMatchLenFromEnd( ///////////
VO_CCharsOrigin.data(),
AR_CCharsSearch.data(),
VO_CCharsOrigin.size(),
VO_CCharsOrigin.size()
/*/////////*/ ); ////////////////////////////
/*/////////*/ ); //////////////////////////////////////////
TypeLength VL_ValidLen=VO_CCharsOrigin.size()-VL_MatchLen;
TypeLength VL_ValidLen = VO_CCharsOrigin.size()-VL_MatchLen;
if(VL_MatchLen>0)
ARR_CStrReadyBuff.append
(VO_CCharsOrigin.data()+VL_ValidLen, VL_MatchLen);
( VO_CCharsOrigin.data()+VL_ValidLen, VL_MatchLen );
if(VL_ValidLen>0)
ARRE_ERun=AR_CReadyExec.OnMeetNormal
(VO_CCharsOrigin.data() , VL_ValidLen);
( VO_CCharsOrigin.data() , VL_ValidLen );
return false;
}/*
if(VL_ReadyBuffSize+AR_CCharsOrigin.size()<AR_CCharsSearch.size())*/
bool VB_IsOK=ZtCMainChars::DoStart
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)
{
@ -1903,13 +1952,13 @@ namespace ZNsMain
}/*
if(VL_ReadyBuffSize>0)*/
VL_MatchLen=0; TypeLength VL_FindPos=ZtCMainChars::FindPosLen(
VO_CCharsOrigin.data(),
AR_CCharsSearch.data(),
VO_CCharsOrigin.size(),
AR_CCharsSearch.size(),
RR(VL_MatchLen)
/*/////////*/ ); /////////////////////////////////////////////
VL_MatchLen=0; TypeLength VL_FindPos = ZtCMainChars::FindPosLen
(
VO_CCharsOrigin.data(), AR_CCharsSearch.data(),
VO_CCharsOrigin.size(), AR_CCharsSearch.size(),
RR(VL_MatchLen)
);
////////////////////////////////////////////////////////////////
if(VL_FindPos<0)
{
@ -2008,18 +2057,21 @@ namespace ZNsMain
////////////////////////////////////////////////////////////////////////////////*/
template< typename TReadyExec , typename TTyChars,
typename TStringData, typename THelpType> ////////////
static bool FindPosReady(
TReadyExec AR_CReadyExec ,
THelpType AO_CHelpType ,
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TStringData& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
/*//////////*/ ) ///////////////////////////////////////////////*/
typename TStringData, typename THelpType
>
static bool FindPosReady /*#####################################*/
(
TReadyExec AR_CReadyExec ,
THelpType AO_CHelpType ,
const TTyChars& AR_CCharsOrigin ,
const TTyChars& AR_CCharsSearch ,
TStringData& ARR_CStrReadyBuff,
TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() 의 offset 이다.
ZNsEnum::ZERun& ARRE_ERun
)
/*##############################################################*/
{
/*########################################################################################
/*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
■ ARR_CStrReadyBuff 에는 AR_CCharsSearch.data() 의 앞부분과 일치하는 문자열이 들어 있다.
다른 엉뚱한 데이타가 들어있지 않도록 만전을 기해야 한다.
@ -2028,7 +2080,7 @@ namespace ZNsMain
AR_CCharsOrigin.data() 에서 다시 조회를 시작해야 하는 위치로 셋팅된다. 그래서 다음 번
조회시에는 AR_CCharsOrigin.data()+ARRL_StartPos 부터 조회하면 된다.
########################################################################################*/
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
typedef ZNsMain::ZtCCheckRef<THelpType> ZCCheckRef ;
typedef typename ZCCheckRef::TypeData TypeObject ;
@ -2048,7 +2100,7 @@ namespace ZNsMain
{
// 찾는 데이타의 길이는 AR_CCharsOrigin.size() 이 된다.
bool VB_IsOK=ZtCMainChars::DoStart( ////////////////////
bool VB_IsOK = ZtCMainChars::DoStart( //////////////////
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
@ -2084,12 +2136,12 @@ namespace ZNsMain
}/*
if(VL_ReadyBuffSize>0)*/
VL_MatchLen=ZtCMainChars::GetMatchLenFromEnd(
VL_MatchLen = ZtCMainChars::GetMatchLenFromEnd(
VO_CCharsOrigin.data(),
AR_CCharsSearch.data(),
VO_CCharsOrigin.size(),
VO_CCharsOrigin.size()
/*/////////*/ ); ////////////////////////////
/*/////////*/ ); //////////////////////////////
TypeLength VL_ValidLen=VO_CCharsOrigin.size()-VL_MatchLen;
@ -2114,14 +2166,12 @@ namespace ZNsMain
if(VL_ReadyBuffSize+AR_CCharsOrigin.size()<AR_CCharsSearch.size())*/
bool VB_IsOK=ZtCMainChars::DoStart
bool VB_IsOK = ZtCMainChars::DoStart
(
VO_CCharsOrigin.data() ,
AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() ,
AR_CCharsSearch.size()-VL_ReadyBuffSize
VO_CCharsOrigin.data() , AR_CCharsSearch.data()+VL_ReadyBuffSize,
VO_CCharsOrigin.size() , AR_CCharsSearch.size()-VL_ReadyBuffSize
);
//////////////////////////////////
////////////////////////////////////
if(VB_IsOK==true)
{
@ -2204,13 +2254,13 @@ namespace ZNsMain
if(VL_FindPos>0)
{
ARRE_ERun=AR_CReadyExec.template OnMeetNormal<TypeObject>
ARRE_ERun = AR_CReadyExec.template OnMeetNormal<TypeObject>
(
VO_CCharsOrigin.data(),
VL_FindPos ,
ZCCheckRef::PassData(AO_CHelpType)
);
/////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return true;
}/*