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(~) 이다.
|
||||||
|
|
||||||
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;
|
||||||
}/*
|
}/*
|
||||||
|
Reference in New Issue
Block a user