commit 2025-08-29 10:01 edit a bit FindPosLinear in ZCppMain/ZtCMainChars.H

This commit is contained in:
2025-08-29 10:01:48 +09:00
parent 50b3ea97b8
commit dcce3e7e31

View File

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