commit 2025-08-29 10:01 edit a bit FindPosLinear in ZCppMain/ZtCMainChars.H
This commit is contained in:
@ -1835,15 +1835,15 @@ namespace ZNsMain
|
||||
|
||||
이 알고리즘을 구현한 것이 FindPosReady(~) 이다.
|
||||
|
||||
FindPosReady() 은 읽어들인 문자열을 AR_CCharsSearch.data() 에 대입하여 AR_CCharsOrigin.data() 을 찾는다.
|
||||
못 찾았으면 다음에 읽어들인 문자열에 찾는 문자열이 존재할 수 있으므로, 일단 AR_CCharsOrigin.data() 의
|
||||
뒤에서 AR_CCharsSearch.data() 의 앞부분과 일치하는 문자를 ARR_CStrReadyBuff 에 저장한다. (이 문자들은
|
||||
찾는 문자열의 일부일 수 있다.)
|
||||
FindPosReady() 은 읽을 문자열을 AR_CCharsSearch.data() 로 설정하여 AR_CCharsOrigin.data() 에서 찾는다.
|
||||
못 찾았으면 다음에 읽을 문자열에 찾는 문자열이 존재할 수 있으므로, 일단 AR_CCharsOrigin.data() 의 뒤에
|
||||
서 AR_CCharsSearch.data() 의 앞부분과 일치하는 문자를 ARR_CStrReadyBuff 에 저장한다. (이 문자들은 찾는
|
||||
문자열의 일부일 수 있다.)
|
||||
|
||||
■ TReadyExec 는 아래 두 멤버를 가져야 하며 참조형일 수 있다.
|
||||
|
||||
std::ZNsEnum::ZERun TReadyExec::OnMeetNormal(TypeCharC*, TypeLength);
|
||||
std::ZNsEnum::ZERun TReadyExec::OnMeetReady (TypeCharC*, TypeLength,std::ZNsEnum::ZERun);
|
||||
std::ZNsEnum::ZERun TReadyExec::OnMeetReady (TypeCharC*, TypeLength, ZNsMain::ZNsEnum::ZERun);
|
||||
|
||||
찾는 문자열은 ARR_CStrReadyBuff 와 AR_CCharsOrigin.data() 에 동시에 갈라져 있을 수 있는데, 찾는 문자열을
|
||||
완전히 찾은 경우는
|
||||
@ -1908,14 +1908,14 @@ namespace ZNsMain
|
||||
);
|
||||
////////////////////////////////////////////////
|
||||
|
||||
if(VB_IsOK==true)
|
||||
if(VB_IsOK)
|
||||
{
|
||||
ARR_CStrReadyBuff.append(
|
||||
VO_CCharsOrigin.data(), VO_CCharsOrigin.size());
|
||||
|
||||
ARRL_StartPos = -1; return false;
|
||||
}/*
|
||||
if(VB_IsOK==true)*/
|
||||
if(VB_IsOK)*/
|
||||
|
||||
|
||||
/* 찾지 못한 경우 ARR_CStrReadyBuff 버퍼 앞 1 바이트가
|
||||
@ -2128,6 +2128,9 @@ namespace ZNsMain
|
||||
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
|
||||
|
||||
using ZNsMain::ZNsEnum::ZERun_NO ;
|
||||
using ZNsMain::ZNsEnum::ZERun_OK ;
|
||||
|
||||
typedef ZNsMain::ZtCCheckRef<THelpType> ZCCheckRef ;
|
||||
typedef typename ZCCheckRef::TypeData TypeObject ;
|
||||
|
||||
@ -2178,7 +2181,7 @@ namespace ZNsMain
|
||||
);
|
||||
ARR_CStrReadyBuff = ""; //////////////////////////////////
|
||||
|
||||
if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return false;
|
||||
if(ARRE_ERun==ZERun_NO) return false;
|
||||
}/*
|
||||
if(VL_ReadyBuffSize>0)*/
|
||||
|
||||
@ -2229,18 +2232,18 @@ namespace ZNsMain
|
||||
ARRE_ERun= AR_CReadyExec.template OnMeetReady<TypeObject>
|
||||
(
|
||||
ARR_CStrReadyBuff.data(), VL_ReadyBuffSize,
|
||||
ZNsMain::ZNsEnum::ZERun_OK, ZCCheckRef::PassData(AO_CHelpType)
|
||||
ZERun_OK , ZCCheckRef::PassData(AO_CHelpType)
|
||||
);
|
||||
/////////////////////////////////////////////////////////
|
||||
|
||||
if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return true;
|
||||
if(ARRE_ERun==ZERun_NO) return true;
|
||||
}
|
||||
//if(VL_ReadyBuffSize>0)
|
||||
|
||||
ARRE_ERun= AR_CReadyExec.template OnMeetReady<TypeObject>
|
||||
(
|
||||
VO_CCharsOrigin.data(), VL_ReadyLen ,
|
||||
ZNsMain::ZNsEnum::ZERun_NO, ZCCheckRef::PassData(AO_CHelpType)
|
||||
ZERun_NO , ZCCheckRef::PassData(AO_CHelpType)
|
||||
);
|
||||
/////////////////////////////////////////////////////////
|
||||
|
||||
@ -2264,8 +2267,7 @@ namespace ZNsMain
|
||||
|
||||
ARR_CStrReadyBuff = "";
|
||||
|
||||
if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO)
|
||||
{ return false; }
|
||||
if(ARRE_ERun==ZERun_NO){ return false; }
|
||||
}/*
|
||||
if(VL_ReadyBuffSize>0)*/
|
||||
|
||||
@ -2309,14 +2311,14 @@ namespace ZNsMain
|
||||
);
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return true;
|
||||
if(ARRE_ERun==ZERun_NO) return true;
|
||||
}/*
|
||||
if(VL_FindPos>0)*/
|
||||
|
||||
ARRE_ERun = AR_CReadyExec.template OnMeetReady<TypeObject>
|
||||
(
|
||||
VO_CCharsOrigin.data()+VL_FindPos, AR_CCharsSearch.size(),
|
||||
ZNsMain::ZNsEnum::ZERun_NO , ZCCheckRef::PassData(AO_CHelpType)
|
||||
ZERun_NO , ZCCheckRef::PassData(AO_CHelpType)
|
||||
);
|
||||
ARRL_StartPos += (VL_FindPos+AR_CCharsSearch.size()); return true;
|
||||
}/*
|
||||
|
Reference in New Issue
Block a user