commit 2025-08-21 00:30 edit a bit ZtCStringBase

This commit is contained in:
2025-08-21 00:30:27 +09:00
parent c734e73690
commit 21f026c1fe

View File

@ -2410,13 +2410,13 @@ namespace ZNsMain
{ {
*VPC_CharDest-- = APC_Origin[VL_NowIndex--]; *VPC_CharDest-- = APC_Origin[VL_NowIndex--];
}/* }/*
/////////////////////////////*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
for(int p=AL_ReplaceLen-1; p>=0; --p) for(int p=AL_ReplaceLen-1; p>=0; --p)
{ {
*VPC_CharDest-- = APC_Replace[p]; *VPC_CharDest-- = APC_Replace[p];
}/* }/*
///////////////////////////////////*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
VL_NowIndex=AR_InfoList.ItD(VI_InfoIter).ml_Pos-1; VL_NowIndex=AR_InfoList.ItD(VI_InfoIter).ml_Pos-1;
@ -2662,16 +2662,16 @@ namespace ZNsMain
{ {
VL_SearchPos1 = VL_SearchPos2 + AL_SearchLen2 ; continue; VL_SearchPos1 = VL_SearchPos2 + AL_SearchLen2 ; continue;
}/* }/*
/////////////////////////////////////////////*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
ReplaceSection ////////////////////////////////// ReplaceSection ////////////////////////////////
( (
VL_SearchPos1+AL_SearchLen1 VL_SearchPos1+AL_SearchLen1
, VL_SearchPos2-VL_SearchPos1-AL_SearchLen1 , VL_SearchPos2-VL_SearchPos1-AL_SearchLen1
, APC_Replace , APC_Replace
, AL_ReplaceLen , AL_ReplaceLen
); );
///////////////////////////////////////////////// ///////////////////////////////////////////////
VL_SearchPos1 += AL_SearchLen1 + AL_ReplaceLen + AL_SearchLen2 ; VL_SearchPos1 += AL_SearchLen1 + AL_ReplaceLen + AL_SearchLen2 ;
} }
@ -2713,11 +2713,11 @@ namespace ZNsMain
ZCStringBase& ReplaceAllRange( //////////////////////////////// ZCStringBase& ReplaceAllRange( ////////////////////////////////
const ZCStringBase& AR_CStrSearch1, const ZCStringBase& AR_CStrSearch1 ,
const ZCStringBase& AR_CStrSearch2, const ZCStringBase& AR_CStrSearch2 ,
const ZCStringBase& AR_CStrReplace, const ZCStringBase& AR_CStrReplace ,
bool AB_DoKeepSearch=false, bool AB_DoKeepSearch=false ,
TypeLength AL_StartPos =0 TypeLength AL_StartPos =0
/*/////////*/ ) /////////////////////////////////////////////// /*/////////*/ ) ///////////////////////////////////////////////
{ {
return ReplaceAllRange( /////////////////////////////////// return ReplaceAllRange( ///////////////////////////////////
@ -2732,11 +2732,11 @@ namespace ZNsMain
/*/////////*/ ); ////////////////////////////////////////// /*/////////*/ ); //////////////////////////////////////////
}/* }/*
ZCStringBase& ReplaceAllRange( //////////////////////////////// ZCStringBase& ReplaceAllRange( ////////////////////////////////
const ZCStringBase& AR_CStrSearch1, const ZCStringBase& AR_CStrSearch1 ,
const ZCStringBase& AR_CStrSearch2, const ZCStringBase& AR_CStrSearch2 ,
const ZCStringBase& AR_CStrReplace, const ZCStringBase& AR_CStrReplace ,
bool AB_DoKeepSearch=false, bool AB_DoKeepSearch=false ,
TypeLength AL_StartPos =0 TypeLength AL_StartPos =0
//////////// ) ////////////////////////////////////////////*/ //////////// ) ////////////////////////////////////////////*/
@ -2748,16 +2748,18 @@ namespace ZNsMain
TypeLength AL_StartPos =0 TypeLength AL_StartPos =0
/*/////////*/ ) /////////////////////////////////////////////// /*/////////*/ ) ///////////////////////////////////////////////
{ {
return ReplaceAllRange( //////////////////////////////////////////// return ReplaceAllRange //>>>>>>>>>>>>>>>>>
APC_Search1 , (
APC_Search2 , APC_Search1 ,
APC_Replace , APC_Search2 ,
AB_DoKeepSearch , APC_Replace ,
AL_StartPos , AB_DoKeepSearch ,
GetLength(APC_Search1), AL_StartPos ,
GetLength(APC_Search2), GetLength(APC_Search1),
GetLength(APC_Replace) GetLength(APC_Search2),
/*/////////*/ ); GetLength(APC_Replace)
);
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
}/* }/*
ZCStringBase& ReplaceAllRange( //////////////////////////////// ZCStringBase& ReplaceAllRange( ////////////////////////////////
TypeCharC* APC_Search1 , TypeCharC* APC_Search1 ,
@ -2849,15 +2851,25 @@ namespace ZNsMain
ZCStringBase& Insert(TypeLength AL_InsertPos, const ZCStringBase& AR_CStrInsert) ZCStringBase& Insert(TypeLength AL_InsertPos, const ZCStringBase& AR_CStrInsert)
{ {
if(this==&AR_CStrInsert) return *this; if(this==&AR_CStrInsert) return *this;
return Insert( return Insert //>>>>>>>>>>>>>>>>>>>>>>
AL_InsertPos, AR_CStrInsert.data(), AR_CStrInsert.size()); (
AL_InsertPos ,
AR_CStrInsert.data() ,
AR_CStrInsert.size()
);
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
}/* }/*
ZCStringBase& Insert(TypeLength AL_InsertPos, const ZCStringBase& AR_CStrInsert)*/ ZCStringBase& Insert(TypeLength AL_InsertPos, const ZCStringBase& AR_CStrInsert)*/
ZCStringBase& Insert_E( ZCStringBase& Insert_E /*######################################################*/
TypeLength AL_InsertPos, TypeCharC* APC_Insert, TypeLength AL_InsertLen) (
TypeLength AL_InsertPos ,
TypeCharC* APC_Insert ,
TypeLength AL_InsertLen
)
/*#############################################################################*/
{ {
if(AL_InsertLen<1) return *this; if(AL_InsertLen<1) return *this;
@ -2866,22 +2878,33 @@ namespace ZNsMain
return Insert_E(AL_InsertPos, APC_Insert, AL_InsertLen) ; return Insert_E(AL_InsertPos, APC_Insert, AL_InsertLen) ;
}/* }/*
ZCStringBase& Insert_E( ZCStringBase& Insert_E
TypeLength AL_InsertPos, TypeCharC* APC_Insert, TypeLength AL_InsertLen)*/ (
TypeLength AL_InsertPos ,
TypeCharC* APC_Insert ,
TypeLength AL_InsertLen
)
/*#############################################################################*/
ZCStringBase& Insert_E(TypeLength AL_InsertPos, TypeCharC* APC_Insert) ZCStringBase& Insert_E(TypeLength AL_InsertPos, TypeCharC* APC_Insert)
{ {
return Insert_E return Insert_E /*>>>>>>>>*/
( (
AL_InsertPos, APC_Insert, GetLength(APC_Insert) AL_InsertPos, APC_Insert, GetLength(APC_Insert)
) ; ) ;
/////////////// /*<<<<<<<<<<<<<<<<<<<<<<<<*/
}/* }/*
ZCStringBase& Insert_E(TypeLength AL_InsertPos, TypeCharC* APC_Insert)*/ ZCStringBase& Insert_E(TypeLength AL_InsertPos, TypeCharC* APC_Insert)*/
ZCStringBase& GetSubString(
TypeLength AL_Index, TypeLength AL_Count, ZCStringBase& ARR_CString) ZCStringBase& GetSubString /*##################################################*/
(
TypeLength AL_Index ,
TypeLength AL_Count ,
ZCStringBase& ARR_CString
)
/*#############################################################################*/
{ {
if(AL_Index<0 || AL_Count<1) return ARR_CString; if(AL_Index<0 || AL_Count<1) return ARR_CString;
@ -2902,18 +2925,25 @@ namespace ZNsMain
ARR_CString.ReAllocAdd(AL_Count,true); ::memcpy //////// ARR_CString.ReAllocAdd(AL_Count,true); ::memcpy ////////
( (
ARR_CString.mpc_Data+ARR_CString.ml_UseLen, ARR_CString.mpc_Data +
mpc_Data+AL_Index, AL_Count*sizeof(TypeChar) ARR_CString.ml_UseLen ,
mpc_Data + AL_Index ,
AL_Count * sizeof(TypeChar)
); );
////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////
ARR_CString. ARR_CString.mpc_Data
mpc_Data[ARR_CString.ml_UseLen+=AL_Count]=0; [ARR_CString.ml_UseLen += AL_Count] =0 ;
return ARR_CString; return ARR_CString ;
}/* }/*
ZCStringBase& GetSubString( ZCStringBase& GetSubString /*####################################################
TypeLength AL_Index, TypeLength AL_Count, ZCStringBase& ARR_CString)*/ (
TypeLength AL_Index ,
TypeLength AL_Count ,
ZCStringBase& ARR_CString
)
/*#############################################################################*/
static ZCStringBase& GetSubSearch /*##########################################*/ static ZCStringBase& GetSubSearch /*##########################################*/
@ -2944,7 +2974,7 @@ namespace ZNsMain
{ {
ARRL_StartPos=-1; return ARR_CStringSave; ARRL_StartPos=-1; return ARR_CStringSave;
}/* }/*
///////////////////////////////////////////////*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
TypeLength VL_Pos1 = FindPos TypeLength VL_Pos1 = FindPos
( (
@ -3271,13 +3301,13 @@ namespace ZNsMain
{ {
ARRL_StartPos=-1; return ARR_CString; ARRL_StartPos=-1; return ARR_CString;
}/* }/*
if(AB_IsExactTwo==true)*/ >>>>>>>>>>>>>>>>>>>>>*/
ARRL_StartPos=AL_OriginLen; ARRL_StartPos=AL_OriginLen;
ARR_CString.MakeWord( ARR_CString.MakeWord(
APC_Origin+VL_Pos1, AL_OriginLen-VL_Pos1); APC_Origin+VL_Pos1, AL_OriginLen-VL_Pos1);
return ARR_CString; return ARR_CString; ///////
}/* }/*
if(VL_Pos2<0)*/ if(VL_Pos2<0)*/
@ -3420,13 +3450,13 @@ namespace ZNsMain
while(VL_Index<=VL_Loop) while(VL_Index<=VL_Loop)
{ {
TypeLength j; TypeLength j=0;
for(j=0; j<AL_SearchLen; ++j) for(; j<AL_SearchLen; ++j)
{ {
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break; if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
}/* }/*
///////////////////////////*/ >>>>>>>>>>>>>>>>>>>>>>>>*/
if(j!=AL_SearchLen) // 못찾은 경우 if(j!=AL_SearchLen) // 못찾은 경우
{ {
@ -3548,13 +3578,13 @@ namespace ZNsMain
{ {
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break; if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
}/* }/*
for(j=0; j<AL_SearchLen; ++j)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>*/
if(j!=AL_SearchLen) // 못찾은 경우 if(j!=AL_SearchLen) /*AAAAA*/
{ {
++VL_Index; continue; ++VL_Index; continue; // 못찾은 경우
}/* }/*
if(j!=AL_SearchLen)*/ AAAAAAAAAAAAAAAAAAAAAAAAAAA*/
if(VL_Index>VL_CopyStartPos) if(VL_Index>VL_CopyStartPos)
{ {
@ -3668,13 +3698,13 @@ namespace ZNsMain
{ {
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break; if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
}/* }/*
///////////////////////////*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>*/
if(j!=AL_SearchLen) // 못찾은 경우 if(j!=AL_SearchLen) /*AAAAA*/
{ {
++VL_Index; continue; ++VL_Index; continue; // 못찾은 경우
}/* }/*
/////////////////*/ AAAAAAAAAAAAAAAAAAAAAAAAAAA*/
// 찾은 경우 // 찾은 경우
@ -3804,11 +3834,11 @@ namespace ZNsMain
{ {
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break; if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
}/* }/*
for(j=0; j<AL_SearchLen; ++j)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>*/
if(j!=AL_SearchLen) // 못찾은 경우 if(j!=AL_SearchLen)
{ {
++VL_Index; continue; ++VL_Index; continue; // 못찾은 경우
}/* }/*
if(j!=AL_SearchLen)*/ if(j!=AL_SearchLen)*/
@ -4083,11 +4113,11 @@ namespace ZNsMain
{ {
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break; if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
}/* }/*
for(j=0; j<AL_SearchLen; ++j)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>*/
if(j!=AL_SearchLen) // 못찾은 경우 if(j!=AL_SearchLen)
{ {
++VL_Index; continue; ++VL_Index; continue; // 못찾은 경우
}/* }/*
if(j!=AL_SearchLen)*/ if(j!=AL_SearchLen)*/
@ -4122,13 +4152,13 @@ namespace ZNsMain
{ {
return ARR_SaveList; return ARR_SaveList;
}/* }/*
if(VL_CopyStartPos>=AL_OriginLen)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
if(VL_PrevListSize<ARR_SaveList.size() || AB_DoEndWhenNoMatch==false) if(VL_PrevListSize<ARR_SaveList.size() || AB_DoEndWhenNoMatch==false)
{ {
/* VL_PrevListSize==ARR_SaveList.size() 인 경우는, 분리 문자열을 /* VL_PrevListSize==ARR_SaveList.size() 인 경우는, 분리
찾을 수 없는 경우다. 이때는 아무짓도 하지 말자. */ 문자열을 찾을 수 없는 경우다. 이때는 아무짓도 하지 말자.
*/
VO_CStringTemp.Invalidate(); VO_CStringTemp.Invalidate();
ARR_SaveList.push_back //////// ARR_SaveList.push_back ////////
@ -4293,7 +4323,7 @@ namespace ZNsMain
{ {
if(VC_TempChar==APC_SearchChar[j]) break; if(VC_TempChar==APC_SearchChar[j]) break;
}/* }/*
for(j=0; j<AL_SearchLen; ++j)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>*/
if(j<AL_SearchLen) if(j<AL_SearchLen)
{ {
@ -4302,7 +4332,7 @@ namespace ZNsMain
((ZCString&)ARR_SaveList).append ((ZCString&)ARR_SaveList).append
( VP_CopyStartChar, i-VL_CopyStartPos ) ; ( VP_CopyStartChar, i-VL_CopyStartPos ) ;
}/* }/*
if(i>VL_CopyStartPos)*/ ///////////////////*/
VL_CopyStartPos =i+1; VL_CopyStartPos =i+1;
VP_CopyStartChar=VP_CopyCloseChar ; VP_CopyStartChar=VP_CopyCloseChar ;
@ -4421,7 +4451,7 @@ namespace ZNsMain
{ {
if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos; if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos;
}/* }/*
for(k=0; k<AL_SearchMinLen; ++k)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
// AL_SearchMinLen 개의 문자열이 일치한다면 나머지 문자열을 비교한다. // AL_SearchMinLen 개의 문자열이 일치한다면 나머지 문자열을 비교한다.
@ -4429,9 +4459,12 @@ namespace ZNsMain
{ {
for(k=AL_SearchMinLen; k<VL_SearchLen; ++k) for(k=AL_SearchMinLen; k<VL_SearchLen; ++k)
{ {
if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos; if(*VPC_CloseChar++ != *VPC_SearchChar++)
{ break; }
++VL_ClosePos;
}/* }/*
for(k=AL_SearchMinLen; k<VL_SearchLen; ++k)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
}/* }/*
if(k>=AL_SearchMinLen)*/ if(k>=AL_SearchMinLen)*/
@ -4439,7 +4472,7 @@ namespace ZNsMain
{ {
break; // 이때는 찾는 문자열이 있는 것이다. break; // 이때는 찾는 문자열이 있는 것이다.
}/* }/*
if(k>=VL_SearchLen)*/ >>>>>>>>>>>>>>>>>*/
AR_FindList.MoveNextIter(VI_Iter_OR_List); AR_FindList.MoveNextIter(VI_Iter_OR_List);
}/* }/*
@ -4541,22 +4574,22 @@ namespace ZNsMain
if(CB_IsTrue) return ARR_SaveList; if(CB_IsTrue) return ARR_SaveList;
TypeChar* VPC_StartChar=const_cast<TypeChar*>(APC_OriginChar); TypeChar* VPC_StartChar=const_cast<TypeChar*>(APC_OriginChar);
TypeChar* VPC_StartCopy=VPC_StartChar; TypeChar* VPC_StartCopy=VPC_StartChar;
TypeChar* VPC_CloseChar=VPC_StartChar; TypeChar* VPC_CloseChar=VPC_StartChar;
TypeChar* VPC_SearchChar; TypeChar* VPC_SearchChar;
ZCStringBase VO_CStringTemp; ZCStringBase VO_CStringTemp;
IterEasyID VO_Iter_OR_List(AR_FindList.GetHeadIterEasyID()) ; IterEasyID VO_Iter_OR_List(AR_FindList.GetHeadIterEasyID()) ;
TypeLength VL_StartPos=0; // VPC_StartChar 의 위치값 TypeLength VL_StartPos=0; // VPC_StartChar 의 위치값
TypeLength VL_CopyPos =0; // VPC_StartCopy 의 위치값 TypeLength VL_CopyPos =0; // VPC_StartCopy 의 위치값
TypeLength VL_ClosePos=0; // VPC_CloseChar 의 위치값 TypeLength VL_ClosePos=0; // VPC_CloseChar 의 위치값
TypeLength VL_SearchLen ; // AR_FindList 의 각 원소의 문자열 크기 TypeLength VL_SearchLen ; // AR_FindList 의 각 원소의 문자열 크기
TypeLength VL_LoopSize=AR_FindList.size(); TypeLength VL_LoopSize = AR_FindList.size();
TypeLength j; TypeLength j=0;
while(VL_StartPos<AL_OriginLen) while(VL_StartPos<AL_OriginLen)
{ {
@ -4564,19 +4597,22 @@ namespace ZNsMain
{ {
TypeLength k=0; TypeLength k=0;
VL_SearchLen =AR_FindList.ItD(VO_Iter_OR_List).size(); VL_SearchLen =
VPC_SearchChar=const_cast<TypeChar*> AR_FindList.ItD(VO_Iter_OR_List).size() ;
(AR_FindList.ItD(VO_Iter_OR_List).data()) ; VPC_SearchChar = const_cast<TypeChar*>
VPC_CloseChar =VPC_StartChar; (AR_FindList.ItD(VO_Iter_OR_List).data());
VL_ClosePos =VL_StartPos ;
if(VL_SearchLen<1 || VL_SearchLen<AL_SearchMinLen) continue; VPC_CloseChar = VPC_StartChar;
VL_ClosePos = VL_StartPos ;
if(VL_SearchLen<1 || VL_SearchLen<AL_SearchMinLen)
{ continue; }
for(k=0; k<AL_SearchMinLen; ++k) for(k=0; k<AL_SearchMinLen; ++k)
{ {
if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos; if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos;
}/* }/*
for(k=0; k<AL_SearchMinLen; ++k)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
// AL_SearchMinLen 개의 문자열이 일치한다면 나머지 문자열을 비교한다. // AL_SearchMinLen 개의 문자열이 일치한다면 나머지 문자열을 비교한다.
@ -4586,13 +4622,13 @@ namespace ZNsMain
{ {
if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos; if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos;
}/* }/*
for(k=AL_SearchMinLen; k<VL_SearchLen; ++k)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
}/* }/*
if(k>=AL_SearchMinLen)*/ if(k>=AL_SearchMinLen)*/
if(k>=VL_SearchLen) // 이때는 찾는 문자열이 있는 것이다. if(k>=VL_SearchLen) // 이때는 찾는 문자열이 있는 것이다.
break; {break;}
//endif /*@@@@@@@@@@@@@@@*/
AR_FindList.MoveNextIter(VO_Iter_OR_List); AR_FindList.MoveNextIter(VO_Iter_OR_List);
}/* }/*
@ -4708,12 +4744,12 @@ namespace ZNsMain
) )
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
{ {
VL_Pos2 = FindPos ///////////////////// VL_Pos2 = FindPos //>>>>>>>>>>>>>>>>>>>
( (
APC_OriginChar, APC_Search2Char, APC_OriginChar, APC_Search2Char,
AL_OriginLen , AL_Search2Len , VL_Pos1+AL_Search1Len AL_OriginLen , AL_Search2Len , VL_Pos1+AL_Search1Len
); );
//////////////////////////////////////// //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
if(VL_Pos2<0) { return ARR_SaveList; } if(VL_Pos2<0) { return ARR_SaveList; }
@ -4860,9 +4896,12 @@ namespace ZNsMain
) )
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
{ {
VL_Pos2=FindPos( VL_Pos2 = FindPos ///////////////////////////////
APC_OriginChar, APC_Search2Char, (
AL_OriginLen , AL_Search2Len , VL_Pos1+AL_Search1Len ); APC_OriginChar, APC_Search2Char,
AL_OriginLen , AL_Search2Len , VL_Pos1+AL_Search1Len
);
/////////////////////////////////////////////////
if(VL_Pos2<0) return ARR_SaveList; if(VL_Pos2<0) return ARR_SaveList;
@ -4977,7 +5016,7 @@ namespace ZNsMain
ARR_SaveList.ItD(VI_IterEasy).Invalidate(); ARR_SaveList.ItD(VI_IterEasy).Invalidate();
ARR_SaveList.MoveNextIter(VI_IterEasy); ARR_SaveList.MoveNextIter(VI_IterEasy);
}/* }/*
for(TypeLength i=0; i<VL_MaxLoop; ++i)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
return ARR_SaveList; return ARR_SaveList;
}/* }/*
@ -5004,14 +5043,15 @@ namespace ZNsMain
do ////// do //////
{ {
const bool CB_IsOK= const bool CB_IsOK = ////////////////////
(VC_TempChar= mpc_Data[VL_Index]) (
=='\"' || (VC_TempChar= mpc_Data[VL_Index])
VC_TempChar=='\'' || =='\"' ||
VC_TempChar=='\\' || VC_TempChar=='\'' ||
/*//////////*/ VC_TempChar=='\0' ; VC_TempChar=='\\' ||
VC_TempChar=='\0'
if(CB_IsOK) ++VL_AddedCnt; );
if(CB_IsOK) ++VL_AddedCnt; //////////////
} }
while(++VL_Index<VL_PrevSize); while(++VL_Index<VL_PrevSize);
@ -5177,7 +5217,7 @@ namespace ZNsMain
{ {
APC_Data[j++]=APC_Data[i]; APC_Data[j++]=APC_Data[i];
}/* }/*
if(i==VL_MaxLoop)*/ >>>>>>>>>>>>>>>*/
APC_Data[j]=0; return APC_Data; APC_Data[j]=0; return APC_Data;
}/* }/*
@ -5232,7 +5272,7 @@ namespace ZNsMain
{ {
APC_Data[j++]=APC_Data[i]; APC_Data[j++]=APC_Data[i];
}/* }/*
if(i==VL_MaxLoop)*/ >>>>>>>>>>>>>>>*/
APC_Data[j]=0; return APC_Data; APC_Data[j]=0; return APC_Data;
}/* }/*
@ -5277,7 +5317,7 @@ namespace ZNsMain
{ {
mpc_Data[j++]=mpc_Data[i]; mpc_Data[j++]=mpc_Data[i];
}/* }/*
if(i==VL_MaxLoop)*/ >>>>>>>>>>>>>>>*/
mpc_Data[j]=0; return *this; mpc_Data[j]=0; return *this;
}/* }/*
@ -5332,7 +5372,7 @@ namespace ZNsMain
{ {
mpc_Data[j++]=mpc_Data[i]; mpc_Data[j++]=mpc_Data[i];
}/* }/*
if(i==VL_MaxLoop)*/ >>>>>>>>>>>>>>>*/
mpc_Data[j]=0; return *this; mpc_Data[j]=0; return *this;
}/* }/*
@ -5348,10 +5388,10 @@ namespace ZNsMain
//////////////////////////////////////////// ////////////////////////////////////////////
TypeLength VL_PrevSize=ml_UseLen ; TypeLength VL_PrevSize= ml_UseLen ;
TypeLength VL_Count =(VL_PrevSize/AL_ChunkSize); TypeLength VL_Count = (VL_PrevSize/AL_ChunkSize) ;
TypeLength VL_Mod =(VL_PrevSize%AL_ChunkSize); TypeLength VL_Mod = (VL_PrevSize%AL_ChunkSize) ;
TypeLength VL_NewSize=VL_PrevSize+VL_Count*AL_AddLen; TypeLength VL_NewSize = VL_PrevSize+VL_Count*AL_AddLen;
ReAllocKeep(VL_NewSize); ReAllocKeep(VL_NewSize);
@ -5362,7 +5402,7 @@ namespace ZNsMain
{ {
mpc_Data[VL_Index--] = mpc_Data[VL_PrevSize-1-p]; mpc_Data[VL_Index--] = mpc_Data[VL_PrevSize-1-p];
}/* }/*
for(int p=0; p<VL_Mod; ++p)*/ >>>>>>>>>>>>>>>>>>>>>>>>>*/
TypeLength i=0, j=0, t=0; TypeLength i=0, j=0, t=0;
@ -5372,9 +5412,9 @@ namespace ZNsMain
for(j=AL_AddLen-1; j>=0; --j) for(j=AL_AddLen-1; j>=0; --j)
{ {
mpc_Data[VL_Index--]=APC_AddChar[j]; mpc_Data[VL_Index--] = APC_AddChar[j];
}/* }/*
for(j=AL_AddLen-1; j>=0; --j)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>*/
for(j=AL_ChunkSize-1; j>=0; --j) for(j=AL_ChunkSize-1; j>=0; --j)
{ {
@ -5436,19 +5476,25 @@ namespace ZNsMain
// 파일 기술자를 다시 처음으로 옮긴다. // 파일 기술자를 다시 처음으로 옮긴다.
::lseek(AH_FileDesc, 0/*Offset*/, SEEK_SET); ::lseek(AH_FileDesc, 0/*Offset*/, SEEK_SET);
TypeLength VL_PrevSize=(AB_DoAppend ? ml_UseLen : 0); TypeLength VL_PrevSize =
(AB_DoAppend ? ml_UseLen : 0);
ReAlloc(VL_PrevSize+VL_Offset+AL_AddAllocSize, AB_DoAppend); ReAlloc //>>>>>>>>>>>>>>>>>>>>>>>>
(
VL_PrevSize+VL_Offset+AL_AddAllocSize,
AB_DoAppend
);
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// 윈도우에서 read() 함수는 \r\n 을 한 문자로 읽어들이므로 주의 // 윈도우에서 read() 함수는 \r\n 을 한 문자로 읽어들이므로 주의
TypeLength VL_ReadSize=0; TypeLength VL_ReadSize=0;
if((VL_ReadSize=read(AH_FileDesc, mpc_Data+VL_PrevSize, VL_Offset))<0) if((VL_ReadSize = read(AH_FileDesc, mpc_Data+VL_PrevSize, VL_Offset))<0)
{ {
mpc_Data[ml_UseLen=VL_PrevSize]=0; ::close(AH_FileDesc); return false; mpc_Data[ml_UseLen=VL_PrevSize]=0; ::close(AH_FileDesc); return false;
}/* }/*
////////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////////*/
if(VL_ReadSize>0) if(VL_ReadSize>0)
mpc_Data[ml_UseLen=VL_PrevSize+VL_ReadSize]=0; mpc_Data[ml_UseLen=VL_PrevSize+VL_ReadSize]=0;
@ -5459,15 +5505,17 @@ namespace ZNsMain
TypeLength VL_PrevSize=AB_DoAppend ? ml_UseLen : 0 ; TypeLength VL_PrevSize=AB_DoAppend ? ml_UseLen : 0 ;
HANDLE VH_File=::CreateFile( //////////////////////////////////////////////////////////// HANDLE VH_File = ::CreateFile /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
APC_FileName , (
GENERIC_READ , APC_FileName ,
FILE_SHARE_READ , // 공유모드: 이미 열려 있는 파일을 열 수 있게 한다. GENERIC_READ ,
NULL , FILE_SHARE_READ , // 공유모드: 이미 열려 있는 파일을 열 수 있게 한다.
OPEN_EXISTING , NULL ,
FILE_ATTRIBUTE_NORMAL, // 반드시 단독으로 사용되는 플래그 OPEN_EXISTING ,
NULL FILE_ATTRIBUTE_NORMAL, // 반드시 단독으로 사용되는 플래그
/*/////////*/ ); ///////////////////////////////////////////////////////////////////////// NULL
);
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
if(INVALID_HANDLE_VALUE==VH_File) return false; if(INVALID_HANDLE_VALUE==VH_File) return false;
@ -5486,7 +5534,7 @@ namespace ZNsMain
{ {
Invalidate(); CloseHandle(VH_File); return false; Invalidate(); CloseHandle(VH_File); return false;
}/* }/*
if(::ReadFile(VH_File, mpc_Data+VL_PrevSize, dwRead, &dwRead2, NULL)==FALSE)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
::CloseHandle(VH_File); ::CloseHandle(VH_File);
@ -5661,10 +5709,21 @@ namespace ZNsMain
if(CB_IsFalse){ return -1; } if(CB_IsFalse){ return -1; }
VO_CStringBuff.mpc_Data[VO_CStringBuff.ml_UseLen+=VL_ReadCnt]=0; VL_InnerOffset=0; VO_CStringBuff.mpc_Data //>>>>>>>>>>>>>>>>>>>>
[
VO_CStringBuff.ml_UseLen += VL_ReadCnt
] =0 ;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
while((VL_FindedPos =VO_CStringBuff. VL_InnerOffset=0;
FindPos(APC_Search, AL_SearchLen, VL_InnerOffset))>=0)
while /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
(
( VL_FindedPos = VO_CStringBuff.FindPos
(APC_Search, AL_SearchLen, VL_InnerOffset)
) >=0
)
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
{ {
if(++VL_SearchCnt>=AL_WantSearchCnt) if(++VL_SearchCnt>=AL_WantSearchCnt)
{ {
@ -5673,9 +5732,8 @@ namespace ZNsMain
//////////////////////////////////*/ //////////////////////////////////*/
VL_InnerOffset = VL_FindedPos + AL_SearchLen ; VL_InnerOffset = VL_FindedPos + AL_SearchLen ;
}/* }
while((VL_FindedPos =VO_CStringBuff. /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
FindPos(APC_Search, AL_SearchLen, VL_InnerOffset))>=0)*/
if(VO_CStringBuff.ml_UseLen>=AL_SearchLen) if(VO_CStringBuff.ml_UseLen>=AL_SearchLen)
{ {
@ -5797,15 +5855,15 @@ namespace ZNsMain
{ return -1; } { return -1; }
//////////////////////////////////////////////// ////////////////////////////////////////////////
const bool VB_IsFalse = const bool VB_IsFalse = /*@@@@@@@@@@@@@@@@@@@@*/
( (
( VL_ReadCnt=::read ( VL_ReadCnt=::read
( (
AH_FileDesc, VO_CStringBuff.mpc_Data, VL_Offset-VL_Offset2 AH_FileDesc, VO_CStringBuff.mpc_Data, VL_Offset-VL_Offset2
) )
)<1 || VL_Offset-VL_Offset2!=VL_ReadCnt )<1 || VL_Offset-VL_Offset2 != VL_ReadCnt
); );
/*###################*/ if(VB_IsFalse) return -1; if(VB_IsFalse) return -1; /*@@@@@@@@@@@@@@@@@@*/
VO_CStringBuff.mpc_Data VO_CStringBuff.mpc_Data
[VO_CStringBuff.ml_UseLen=VL_ReadCnt]=0; [VO_CStringBuff.ml_UseLen=VL_ReadCnt]=0;
@ -5899,9 +5957,7 @@ namespace ZNsMain
lpOverlapped lpOverlapped
)==FALSE || VL_Offset-VL_Offset2 != VL_ReadCnt )==FALSE || VL_Offset-VL_Offset2 != VL_ReadCnt
); );
////////////////////////////////////////////////////// if(CB_IsFalse) return -1; ////////////////////////////
if(CB_IsFalse) return -1;
VO_CStringBuff.mpc_Data VO_CStringBuff.mpc_Data
@ -5912,7 +5968,7 @@ namespace ZNsMain
VL_InnerOffset=VO_CStringBuff.ml_UseLen-1; VL_InnerOffset=VO_CStringBuff.ml_UseLen-1;
while ( ( VL_FindedPos = VO_CStringBuff.FindPosFromEnd while ( ( VL_FindedPos = VO_CStringBuff.FindPosFromEnd
( APC_Search, AL_SearchLen, VL_InnerOffset ) ( APC_Search, AL_SearchLen, VL_InnerOffset )
) >= 0 ) >= 0
) )
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
@ -6070,7 +6126,7 @@ namespace ZNsMain
VL_SearchIndex=0; VL_SearchIndex=0;
}/* }/*
if(++VL_SearchIndex>=AL_SearchLen)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
}/* }/*
for(i=0; i<VL_ReadSize; ++i)*/ for(i=0; i<VL_ReadSize; ++i)*/
@ -6097,13 +6153,13 @@ namespace ZNsMain
{ {
if(AL_SearchLen<1 || AL_SearchCnt<1) return 0; if(AL_SearchLen<1 || AL_SearchCnt<1) return 0;
TypeLength VL_ReadSize ; TypeLength VL_ReadSize ;
TypeLength VL_AllReadSize=0; TypeLength VL_AllReadSize =0;
TypeLength VL_SearchIndex=0; TypeLength VL_SearchIndex =0;
TypeLength i ; TypeLength i =0;
TypeLength VL_NowSearchCnt=0; TypeLength VL_NowSearchCnt=0;
TypeChar VC_TempChar; TypeChar VC_TempChar =0;
TypeChar VCA_FileBuff[BUFSIZ+1]; TypeChar VCA_FileBuff[BUFSIZ+1];
while((VL_ReadSize = ::fread( while((VL_ReadSize = ::fread(
@ -6125,7 +6181,7 @@ namespace ZNsMain
VL_SearchIndex=0; VL_SearchIndex=0;
}/* }/*
if(++VL_SearchIndex>=AL_SearchLen)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
}/* }/*
for(i=0; i<VL_ReadSize; ++i)*/ for(i=0; i<VL_ReadSize; ++i)*/
@ -6179,7 +6235,7 @@ namespace ZNsMain
AH_FileDesc, APC_Search, AL_SearchLen, AL_SearchCnt); AH_FileDesc, APC_Search, AL_SearchLen, AL_SearchCnt);
MyCloseFleHandle(AH_FileDesc); MyCloseFleHandle(AH_FileDesc);
return VL_ReadSize; ////////// return VL_ReadSize; //////////////////
#undef MyCloseFleHandle #undef MyCloseFleHandle
}/* }/*
@ -6281,7 +6337,7 @@ namespace ZNsMain
VL_SearchIndex=0; VL_SearchIndex=0;
}/* }/*
if(++VL_SearchIndex>=AL_SearchLen)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
}/* }/*
for(i=0;i<VL_ReadSize;++i)*/ for(i=0;i<VL_ReadSize;++i)*/
@ -6527,8 +6583,7 @@ namespace ZNsMain
return FindPos ////////////// return FindPos //////////////
( (
mpc_Data , APC_Search, mpc_Data , APC_Search,
ml_UseLen, ZNsMain::ZftLengthType ml_UseLen, GetLength(APC_Search)
<TypeLength, TypeChar>(APC_Search)
); );
///////////////////////////// /////////////////////////////
}/* }/*
@ -6642,13 +6697,15 @@ namespace ZNsMain
TypeLength FindPosFromEnd(TypeCharC* APC_Search) const*/ TypeLength FindPosFromEnd(TypeCharC* APC_Search) const*/
template<typename TList> static TypeLength FindPosType( /*######*/ template<typename TList> static TypeLength FindPosType
TypeCharC* APC_Origin , (
TList& AR_SearchList, TypeCharC* APC_Origin ,
TypeLength AL_OriginLen , TList& AR_SearchList ,
TypeLength& ARRL_MatchLen, TypeLength AL_OriginLen ,
TypeLength AL_StartPos=0 TypeLength& ARRL_MatchLen ,
/*#########*/ ) /*##############################################*/ TypeLength AL_StartPos=0
)
/*##################################################*/
{ {
/*//////////////////////////////////////////////////////////////////// /*////////////////////////////////////////////////////////////////////
@ -6690,7 +6747,7 @@ namespace ZNsMain
AR_SearchList.MoveNextIter(VI_IterEasyID); AR_SearchList.MoveNextIter(VI_IterEasyID);
}/* }/*
for(TypeLength j=0; j<VL_SearchCnt; ++j)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
}/* }/*
for(TypeLength i=AL_StartPos; i<AL_OriginLen; ++i)*/ for(TypeLength i=AL_StartPos; i<AL_OriginLen; ++i)*/
@ -6780,7 +6837,7 @@ namespace ZNsMain
} }
else {VL_SearchOffset=0;} else {VL_SearchOffset=0;}
}/* }/*
for(TypeLength i=0; i<AL_OriginLen; ++i)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
return VL_SearchCount; return VL_SearchCount;
}/* }/*
@ -6872,7 +6929,7 @@ namespace ZNsMain
{ {
return false; return false;
}/* }/*
else if(VC_CharTemp<'0' || VC_CharTemp>'9')*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
}/* }/*
for(TypeLength i=0; i<AL_CheckLen; ++i)*/ for(TypeLength i=0; i<AL_CheckLen; ++i)*/
@ -7059,7 +7116,7 @@ namespace ZNsMain
{ {
*VPC_CharDest-- = *VPC_CharOrgin-- ; *VPC_CharDest-- = *VPC_CharOrgin-- ;
}/* }/*
for(; i<=ml_UseLen; ++i)*/ >>>>>>>>>>>>>>>>>>>>>>*/
/* 오른쪽으로 문자열을 이동시키게 됨에 따라, 앞에서 /* 오른쪽으로 문자열을 이동시키게 됨에 따라, 앞에서
@ -7071,7 +7128,7 @@ namespace ZNsMain
{ {
*VPC_CharOrgin++ = AC_FillChar ; *VPC_CharOrgin++ = AC_FillChar ;
}/* }/*
for(i=1; i<=AL_RightMoveCnt; ++i)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
mpc_Data[ml_UseLen+=AL_RightMoveCnt]=0; return *this; mpc_Data[ml_UseLen+=AL_RightMoveCnt]=0; return *this;
}/* }/*
@ -7179,7 +7236,7 @@ namespace ZNsMain
{ {
if( *VPC_StartChar++ =='.' ) break; if( *VPC_StartChar++ =='.' ) break;
}/* }/*
////////////////////////////////////////////////////////////*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
// 마침표가 없거나, 맨 앞에 오거나 맨 끝에 오는 경우도 유효하지 않다. // 마침표가 없거나, 맨 앞에 오거나 맨 끝에 오는 경우도 유효하지 않다.
@ -7227,7 +7284,7 @@ namespace ZNsMain
if(VL_PeriodPos<1 || VL_PeriodPos>=AI_LengthDec-1) if(VL_PeriodPos<1 || VL_PeriodPos>=AI_LengthDec-1)
{ return *this; } { return *this; }
////////////////////////////////////////////////// //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
VPC_StartChar = mpc_Data+(VL_CurrentPos=AI_LengthDec-1) ; VPC_StartChar = mpc_Data+(VL_CurrentPos=AI_LengthDec-1) ;
@ -7253,7 +7310,7 @@ namespace ZNsMain
{ {
*VPC_StartChar=0; --ml_UseLen; *VPC_StartChar=0; --ml_UseLen;
}/* }/*
if(VL_PeriodPos==VL_CurrentPos)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
return *this; return *this;
}/* }/*
@ -7329,7 +7386,7 @@ namespace ZNsMain
++VPC_Start; ++VPC_Start;
}/* }/*
while(VC_Temp=*VPC_Start)*/ >>>>>>>>>>>>>>>>>>>>>>>*/
return APC_Data; return APC_Data;
}/* }/*
@ -7405,7 +7462,7 @@ namespace ZNsMain
return ARR_CStrDir(APC_FullPath, AL_FullPathLen-1); return ARR_CStrDir(APC_FullPath, AL_FullPathLen-1);
}/* }/*
if(APC_FullPath[AL_FullPathLen-1]==ZNsMain::ZNsConst::CC_DirDelimiter)*/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
using ZNsMain::ZNsConst::CPC_DirDelimiter ; using ZNsMain::ZNsConst::CPC_DirDelimiter ;