#ifndef __ZCPPMAIIN__ZTCMAINCHARS_H__ #define __ZCPPMAIIN__ZTCMAINCHARS_H__ #include "ZCppMain/ZMainHead.H" namespace ZNsMain { namespace ZNsChars { typedef ZNsMain::IterEasyID IterEasyID ; typedef ZNsMain::IterEasyIDc IterEasyIDc; namespace ZNsEnum { typedef ZNsMain::ZNsEnum::ZERun ZERun ; typedef ZNsMain::ZNsEnum::ZERunEx ZERunEx; enum ZESearchMax { ZESearchMax_Over, ZESearchMax_Stop };/* enum ZESearchMax*/ /*//////////////////////////////////////////////////////////////////////////// ¡á ESearchMaxFind Àº ZtCMainChars<>::GetLength_Repeat_Find() µîÀÇ ÇÔ¼ö¿¡¼­, ÃÖ´ë ¹ß°ß È½¼ö(AI_RepeatMax)°¡ À¯È¿ÇÑ °ªÀÎ °æ¿ì, AI_RepeatMax ¸¸Å­ ¹ß°ßÇÑ ½ÃÁ¡¿¡¼­ ¹®ÀÚ¿­ Á¶È¸¸¦ ¸ØÃâ °ÍÀÎÁö, ÇÑ ¹ø ´õ Á¶È¸ÇÒ °ÍÀÎÁö(±×·¡¼­ ÇØ´ç ¹® ÀÚ¿­À» ¶Ç ´Ù½Ã ¹ß°ßÇϸé, AI_RepeatMax+1 ¹ø ¹ß°ßÇÑ °ÍÀÌ µÇ°í, À̰ÍÀº Á¶°Ç¿¡ ¸ÂÁö ¾Ê´Â °ÍÀ¸·Î ÆÇ´ÜÇØ¾ß ÇÑ´Ù)¸¦ °áÁ¤ÇÑ´Ù. -- 2011-07-16 03:49:00 ////////////////////////////////////////////////////////////////////////////*/ /*////////////////////////////////////////////////////// ¡á ÇØ´ç Ç¥Çö½Ä°ú ÀÏÄ¡ÇÏ´Â ¹®ÀÚ¿­ÀÌ ÀÖÀ¸¸é ½ÃÀÛ À§Ä¡°ªÀ» ZERegMatch_MoveNot À̸é À̵¿ÇÏÁö ¾Ê´Â´Ù. ZERegMatch_MovePos À̸é À̵¿½ÃŲ´Ù. //////////////////////////////////////////////////////*/ enum ZERegMatch { ZERegMatch_MoveNot, ZERegMatch_MovePos };/* enum ZERegMatch*/ /*////////////////////////////////////////////////////// ¡á ÇØ´ç Ç¥Çö½Ä°ú ÀÏÄ¡ÇÏ´Â ¹®ÀÚ¿­ÀÌ ÀÖÀ¸¸é, À§Ä¡ Á¤º¸¸¦ ZERegMatchSavePos_Not À̸é ÀúÀåÇÏÁö ¾Ê´Â´Ù. ZERegMatchSavePos_Yes À̸é ÀúÀåÇÑ´Ù. //////////////////////////////////////////////////////*/ enum ZERegMatchSavePos { ZERegMatchSavePos_Not, ZERegMatchSavePos_Yes };/* enum ZERegMatchSavePos*/ enum ZERegFlag { ZERegFlag_Nothing , ZERegFlag_Permit , // ã´Â ¹®ÀÚ¿­ÀÇ ¸ñ·Ï Áß¿¡ Çϳª¶óµµ ÀÏÄ¡ÇØ¾ß ... ZERegFlag_PermitRange , // ã´Â ¹®ÀÚ¿­ÀÇ ¸ñ·Ï ¹üÀ§¿¡ ¼ÓÇØ ÀÖÀ¸¸é ... ZERegFlag_PermitChar , // ã´Â ¹®ÀÚ¿­ÀÇ °¢ ¹®ÀÚ Áß¿¡ Çϳª¶óµµ ÀÏÄ¡ÇØ¾ß ... ZERegFlag_PermitCharRange , // ã´Â ¹®ÀÚ¿­ÀÇ 2 °³ ¹®ÀÚ´ÜÀ§·Î Çã¿ë ¹üÀ§¸¦ ³ªÅ¸³»´Âµ¥, ÀÌ ¹üÀ§¿¡ ¹®ÀÚ°¡ ÀÖ¾î¾ß... ZERegFlag_NoPermit , // ã´Â ¹®ÀÚ¿­ÀÇ ¸ñ·Ï°ú ¸ðµÎ°¡ ÀÏÄ¡ÇÏÁö ¾Ê¾Æ¾ß ... ZERegFlag_NoPermitRange , // ã´Â ¹®ÀÚ¿­ÀÇ ¸ñ·Ï ¹üÀ§¿¡ ¼ÓÇØ ÀÖÁö ¾ÊÀ¸¸é ... ZERegFlag_NoPermitChar , // ã´Â ¹®ÀÚ¿­ÀÇ ¸ðµç ¹®ÀÚ¿¡ ÀÏÄ¡ÇÏÁö ¾Ê¾Æ¾ß ... ZERegFlag_NoPermitCharRange, // ã´Â ¹®ÀÚ¿­ÀÇ 2 °³ ¹®ÀÚ´ÜÀ§·Î Çã¿ëÇÏÁö ¾Ê´Â ¹üÀ§¸¦ ³ªÅ¸³»´Âµ¥, ÀÌ ¹üÀ§ ¹Û¿¡ ¹®ÀÚ°¡ ÀÖ¾î¾ß... ZERegFlag_Find , // ã´Â ¹®ÀÚ¿­ÀÇ ¸ñ·Ï Áß¿¡ Çϳª¶óµµ ÀÏÄ¡ÇÏ¸é ±× ±æÀ̱îÁö ±¸Çؿ´Ù. ZERegFlag_FindChar , // ã´Â ¹®ÀÚ¿©ÀÇ °¢ ¹®ÀÚ Áß¿¡ Çϳª¶óµµ ÀÏÄ¡ÇÏ¸é ±× ±æÀ̱îÁö ±¸Çؿ´Ù. ZERegFlag_FindSerial , // ã´Â ¹®ÀÚ¿­ÀÇ ¸ñ·ÏÀ» ¼ø¼­´ë·Î ã¾Æ¾ß ÇÑ´Ù. ZERegFlag_FindSerialChar , // ã´Â ¹®ÀÚ¿­ÀÇ °¢ ¹®ÀÚ¸¦ ¼ø¼­´ë·Î ã¾Æ¾ß ÇÑ´Ù. ZERegFlag_FindEscape , // ã´Â ¹®ÀÚ¿­ÀÇ ¸ñ·Ï Áß¿¡ Çϳª¶óµµ ÀÏÄ¡Çϰí escape ¹®ÀÚ¿­·Î ½ÃÀÛÇÏÁö ¾ÊÀ¸¸é ±× ±æÀ̱îÁö ±¸ÇÑ´Ù. ZERegFlag_StartFind , // ã´Â ¹®ÀÚ¿­ÀÇ ¸ñ·Ï Áß, 1 ¹ø ¿ø¼ÒºÎÅÍ ½ÃÀÛÇϰí, 2 ¹ø ¿ø¼ÒºÎÅÍ Ã£±â ½ÃÀÛÇÑ´Ù. ZERegFlag_StartFindChar , // ZERegFlag_FindSerialChar ¿Í ºñ½ÁÇϳª, 1 ¹ø ¹®ÀÚ·Î ½ÃÀÛÇØ¾ß ÇÏ´Â Á¡ÀÌ ´Ù¸£´Ù. ZERegFlag_BlockStart , // 'Á¶È¸ Block'ÀÇ ½ÃÀÛ ºÎºÐ ZERegFlag_BlockClose // 'Á¶È¸ Block'ÀÇ Á¾·á ºÎºÐ };/* enum ZERegFlag*/ /*//////////////////////////////////////////////////////////////////////////// ¡á enum ZERegErr Àº class ZtCSearchCChars ¿¡¼­ »ç¿ëÇÏ´Â ¿¡·¯ ÄÚµå´Ù. ¡à ZERegErr_CharCount : ãÀº ¹®ÀÚ °¹¼ö°¡ ZtCSearchCChars::mi_SearchCharMin ¿Í ZtCSearchCChars::mi_SearchCharMax »çÀÌ¿¡ ÀÖÁö ¾Ê´Ù. ¡à ZERegErr_CharSum : ZtCSearchCChars ÀÇ ÄÁÅ×À̳Ê(ÁÖ·Î ¹è¿­)À» Àμö·Î ¹Þ¾Æ¼­, ¿¬¼ÓÇØ¼­ ZtCSearchCChars ¿Í ÀÏÄ¡ÇÏ´Â ¹®ÀÚ¸¦ ã´Â °æ¿ì, ÀÏÄ¡ÇÏ´Â ¹®ÀÚ¸¦ ƯÁ¤ º¯¼ö(ÁÖ·Î Áö¿ª º¯¼ö)¿¡ °è¼Ó ´õÇÏ°Ô µÇ´Âµ¥, ãÀº ÃÑ ¹®ÀÚ ¹®ÀÚ °¹¼ö°¡, Áï ÀÌ º¯¼öÀÇ °ªÀÌ ZtCSearchCChars::mi_SearchSumMin ¿Í ZtCSearchCChars::mi_SearchSumMax »çÀÌ¿¡ ÀÖÁö ¾ÊÀº °æ¿ìÀÌ´Ù. ¡à -- ¡á Á¶È¸ Block ÁöÁ¤µÈ ¹®ÀÚ¿­¿¡¼­ ƯÁ¤ ÆÐÅÏÀ» ã´Â Á¶°ÇÀÌ º¹ÀâÇÒ °æ¿ì´Â, ã´Â Á¶°Ç object ¸¦ ¹è¿­À̳ª tree ÇüÅ·Π¼³°èÇÏ°Ô µÇ´Âµ¥, À̶§ÀÇ Ã£´Â Á¶°ÇÀÇ Ã³À½ ¿ø¼Ò¿Í ³¡ ¿ø¼Ò ÀÇ ´ÜÀ§¸¦ 'Á¶È¸ Block'À̶ó°í ÇÑ´Ù. ƯÈ÷ tree ÇüÅÂÀÏ ¶§ ÇÏÀ§ ³ëµå·Î ³»·Á°¡¸é »õ·Î¿î ³ëµå ¸®½ºÆ®°¡ ÀÖ°í, µû¶ó¼­ »õ·Î¿î 'Á¶È¸ Block' ÀÌ ¹ß»ýÇÏ´Â °ÍÀ» ¼³¸í Çϱâ À§ÇØ ÇÊ¿äÇÑ ¿ë¾îÀÌ´Ù. -- 2013-06-25 23:37:00 ////////////////////////////////////////////////////////////////////////////*/ enum ZERegErr // Á¤±Ô Ç¥Çö½Ä °ü·Ã ¿¡·¯ ÄÚµå. { ZERegErr_None , // ¿¡·¯ ¾øÀ½. ZERegErr_CharCount, // ãÀº ¹®ÀÚ °¹¼ö ¿¡·¯. ZERegErr_CharSum // ãÀº ¹®ÀÚ ´©Àû °¹¼ö ¿¡·¯. };/* enum ZERegErr*/ enum ZETypeCharTmplChain { ZETypeCharTmplChain_No , ZETypeCharTmplChain_Char , ZETypeCharTmplChain_Char2 };/* enum ZETypeCharTmplChain*/ }/* namespace ZNsEnum*/ namespace ZNsInterface { template class ZtCStackOfTmplChain { private: TTypeLength ml_SearchSum; public : ZtCStackOfTmplChain() { ml_SearchSum=0; }/* ZtCStackOfTmplChain()*/ TTypeLength GetSearchSum() const{return ml_SearchSum;} void SetSearchSum(TTypeLength AI_Length){ml_SearchSum =AI_Length;} void AddSearchSum(TTypeLength AL_Length){ml_SearchSum+=AL_Length;} public : };/* template class ZtCStackOfTmplChain */ }/* namespace ZNsInterface*/ namespace ZNsIFace { // À̸§°ø°£ ZNsInterface À» ª°Ô ZNsIFace À¸·Îµµ Ç¥±â °¡´ÉÇÏ°Ô ÇÑ´Ù. using namespace ZNsInterface; }/* namespace ZNsIFace*/ namespace ZNsType { // °æ¿ì¿¡ µû¶ó TTypeChar ´Â short int ³ª int °¡ µÉ ¼ö ÀÖ´Ù. template< typename TTypeChar =char, typename TTypeLength=ZTypLength // signed ÇüÀ̾î¾ß ÇÑ´Ù. > class ZtCTypeChars /*////////////////////*/ { public: typedef TTypeChar TypeChar ; typedef TTypeLength TypeLength; // signed ÇüÀ̾î¾ß ÇÑ´Ù. public: typedef const TypeChar TypeCharC ; typedef const TypeChar* TypeCharCP; public: static TypeChar GetCharOfAnsi(char AC_AnsiChar) { return AC_AnsiChar; }/* static TypeChar GetCharOfAnsi(char AC_AnsiChar)*/ static bool IsAnsiChars(TypeCharC* APC_Char,TypeLength AI_Length) { // Ansi 7bit ¹®ÀÚÀ̸é true ¸¦ ¸®ÅÏ. // AI_Length<1 ÀÎ °æ¿ì¿¡µµ true ¸¦ ¸®ÅÏ while(--AI_Length>=0) { if((*APC_Char++)<0) return false; }/* while(--AI_Length>=0)*/ return true; }/* static bool IsAnsiChars(TypeCharC* APC_Char,TypeLength AI_Length)*/ static TypeLength GetLength(TypeCharC* APC_TypeChar) { if(APC_TypeChar==0) return 0; TypeLength VL_Length=0; while(*(APC_TypeChar+VL_Length)!=ZtCTypeChars::GetCharOfAnsi('\0')) { ++VL_Length; }/* while(*(APC_TypeChar+VL_Length)!=ZtCTypeChars::GetCharOfAnsi('\0'))*/ return VL_Length; }/* static TypeLength GetLength(TypeCharC* APC_TypeChar) public:*/ public: class ZCChars { public : template friend class ZtCMainChars; public : typedef ZtCTypeChars ZCTypeChars; typedef TTypeChar TypeChar ; typedef TTypeLength TypeLength ; public: typedef const TTypeChar TypeCharC ; typedef const TTypeChar* TypeCharCP ; private: TypeChar* mp_TypeChar ; TypeLength ml_TypeLength; public : ZCChars() { mp_TypeChar =0; ml_TypeLength=0; }/* ZCChars()*/ ZCChars(TypeCharC* APC_TypeChar) { mp_TypeChar =const_cast (APC_TypeChar); ml_TypeLength=ZtCTypeChars::GetLength(mp_TypeChar ); }/* ZCChars(TypeCharC* APC_TypeChar)*/ ZCChars(TypeCharC* APC_TypeChar, TypeLength AL_Length) { mp_TypeChar = const_cast (APC_TypeChar) ; ml_TypeLength=AL_Length ; }/* ZCChars(TypeCharC* APC_TypeChar, TypeLength AL_Length)*/ void Init(TypeCharC* APC_TypeChar=0, TypeLength AL_Length=0) { mp_TypeChar =const_cast (APC_TypeChar) ; ml_TypeLength=AL_Length ; }/* void Init(TypeCharC* APC_TypeChar=0, TypeLength AL_Length=0)*/ void InitData(TypeCharC* APC_TypeChar) { mp_TypeChar=const_cast(APC_TypeChar); }/* void InitData(TypeCharC* APC_TypeChar)*/ void InitLength(TypeLength AL_Length) { ml_TypeLength=AL_Length; }/* void InitLength(TypeLength AL_Length)*/ TypeChar* data() { return mp_TypeChar; }/* TypeChar* data()*/ TypeCharC* data() const { return mp_TypeChar; }/* TypeCharC* data() const*/ TypeLength size() const { return ml_TypeLength; }/* TypeLength size() const*/ ZCChars& operator+=(TypeLength AI_MovePos) { return MoveChar(AI_MovePos); }/* ZCChars& operator+=(TypeLength AI_MovePos)*/ int operator-(const ZCChars& rhs) const { // µÎ ¹®ÀÚ¿­ÀÌ °°À¸¸é 0 // ¿ÞÂÊ ¹®ÀÚ¿­ÀÌ Å©¸é 0 º¸´Ù Å« ¾î¶² ¼ö // ¿À¸¥ÂÊ ¹®ÀÚ¿­ÀÌ Å©¸é 0 º¸´Ù ÀÛÀº ¾î¶² ¼ö¸¦ ¹Ýȯ TypeCharC* VP_Left = mp_TypeChar; TypeCharC* VP_Right=rhs.mp_TypeChar; #if(_CODE_OLD_) TypeChar VC_Minus=0; #else int VI_Minus=0; // ÆäÀÌÁö ÇÏ´ÜÀÇ 'char ÀÇ int È®Àå¿¡ µû¸¥ ¹®Á¦ÀÇ ÄÚµå' Âü°í. #endif TypeLength VL_Index=0; TypeLength VL_Loop =(ml_TypeLength<=rhs.ml_TypeLength ? ml_TypeLength : rhs.ml_TypeLength) ; while(VL_Index (const ZCChars& rhs) const{return (*this)-rhs > 0 ;} bool operator< (const ZCChars& rhs) const{return (*this)-rhs < 0 ;} bool operator>=(const ZCChars& rhs) const{return (*this)-rhs >= 0 ;} bool operator<=(const ZCChars& rhs) const{return (*this)-rhs <= 0 ;} ZCChars& MoveChar(TypeLength AI_MovePos) { mp_TypeChar +=AI_MovePos; ml_TypeLength-=AI_MovePos; return *this; }/* ZCChars& MoveChar(TypeLength AI_MovePos)*/ ZTypIntI GetInt(bool AB_IsBigEndian=true) const { const ZTypIntI CI_IntByte = sizeof(ZTypIntI); const ZTypIntI CI_SearchSize = (ml_TypeLength=0; --i) { VI_Result += (ZTypIntI)(ZTypUChar)(mp_TypeChar[i]) * VI_TempInt ; VI_TempInt*= 256 ; }/* for(ZTypIntI i=CI_SearchSize-1; i>=0; --i)*/ return VI_Result; }/* if(AB_IsBigEndian)*/ for(ZTypIntI i=0; i=0; --i) { VI_Result += (ZTypIntI)(ZTypUChar)(mp_TypeChar[i]) * VI_TempInt ; VI_TempInt*= 256 ; }/* for(ZTypIntI i=CI_SearchSize-1; i>=0; --i)*/ return VI_Result; }/* if(AB_IsBigEndian)*/ for(ZTypIntI i=0; i=0; --i) { VI_Result += (ZTypIntI)(ZTypUChar)(mp_TypeChar[i]) * VI_TempInt ; VI_TempInt*= 256 ; }/* for(ZTypIntI i=CI_SearchSize-1; i>=0; --i)*/ return VI_Result; }/* if(AB_IsBigEndian)*/ for(ZTypIntI i=0; i TypeInt GetIntType(bool AB_IsBigEndian=true) const { const ZTypIntI CI_IntByte = sizeof(TypeInt); const ZTypIntI CI_SearchSize = (ml_TypeLength=0; --i) { VI_Result += (ZTypIntI)(ZTypUChar)(mp_TypeChar[i]) * VI_TempInt ; VI_TempInt*= 256 ; }/* for(ZTypIntI i=CI_SearchSize-1; i>=0; --i)*/ return VI_Result; }/* if(AB_IsBigEndian)*/ for(ZTypIntI i=0; i TypeInt GetIntType(bool AB_IsBigEndian=true) const*/ public: };/* class ZCChars*/ static TypeChar GetUpperChar(TypeChar AC_TypeChar) { const int CI_Distance='a'-'A'; return (AC_TypeChar>='a' && AC_TypeChar<='z') ? AC_TypeChar-CI_Distance : AC_TypeChar ; }/* static TypeChar GetUpperChar(TypeChar AC_TypeChar)*/ static TypeChar GetLowerChar(TypeChar AC_TypeChar) { const int CI_Distance='a'-'A'; return (AC_TypeChar>='A' && AC_TypeChar<='Z') ? AC_TypeChar-CI_Distance : AC_TypeChar ; }/* static TypeChar GetLowerChar(TypeChar AC_TypeChar)*/ public: };/* template< typename TTypeChar =char, typename TTypeLength=ZTypLength > class ZtCTypeChars //////////////////////*/ }/* namespace ZNsType*/ template< typename TTypeChars=ZNsType::ZtCTypeChars > class ZtCMainChars //////////////////////////////////////// { public: typedef TTypeChars ZCTypeChars; typedef ZtCMainChars ZCMainChars; typedef typename ZCTypeChars::ZCChars ZCChars ; typedef typename ZCTypeChars::TypeChar TypeChar ; typedef typename ZCTypeChars::TypeLength TypeLength ; public: typedef const TypeChar TypeCharC ; typedef const TypeChar* TypeCharCP; public: static int Minus(const ZCChars& AR_CChars1, const ZCChars& AR_CChars2) { return ZtCMainChars::Minus( AR_CChars1.data, AR_CChars2.data(), AR_CChars1.size(), AR_CChars2.size()); }/* static int Minus(const ZCChars& AR_CChars1, const ZCChars& AR_CChars2)*/ static int Minus( const TypeChar* APC_Left , const TypeChar* APC_Right, TypeLength AL_LeftLength, TypeLength AL_RightLength ) { // µÎ ¹®ÀÚ¿­ÀÌ °°À¸¸é 0 // ¿ÞÂÊ ¹®ÀÚ¿­ÀÌ Å©¸é 0 º¸´Ù Å« ¾î¶² ¼ö // ¿À¸¥ÂÊ ¹®ÀÚ¿­ÀÌ Å©¸é 0 º¸´Ù ÀÛÀº ¾î¶² ¼ö¸¦ ¹Ýȯ if(AL_LeftLength<1 || AL_RightLength<1) { return AL_LeftLength - AL_RightLength; }/* if(AL_LeftLength<1 || AL_RightLength<1)*/ const TypeChar* VP_Left =APC_Left ; const TypeChar* VP_Right=APC_Right; TypeLength VL_Index=0; TypeLength VL_Loop = (AL_LeftLength<=AL_RightLength ? AL_LeftLength : AL_RightLength) ; #if(_CODE_OLD_) TypeChar VC_Minus=0; while(VL_Index0) { // ¹®ÀÚ¸¦ i °³ ¾ÕÀ¸·Î ´ç±ä´Ù. for(TypeLength t=i; t0)*/ VPC_Char = APC_Char+(ARRL_Length-1); // ¸Ç ³¡À» °¡¸®Å²´Ù. for(i=ARRL_Length-1; i>=0; --i) { const bool CB_IsTrue = ( ////////////////////////////////////////// (VC_Char=*VPC_Char--)!=' ' && VC_Char!=ZCTypeChars::GetCharOfAnsi('\t') && VC_Char!=ZCTypeChars::GetCharOfAnsi('\r') && VC_Char!=ZCTypeChars::GetCharOfAnsi('\n') && VC_Char!=ZCTypeChars::GetCharOfAnsi('\0') /*/////////*/ ); ////////////////////////////////////////////////// if(CB_IsTrue) break; APC_Char[--ARRL_Length] = ZCTypeChars::GetCharOfAnsi('\0'); }/* for(i=ARRL_Length-1; i>=0; --i)*/ return APC_Char; }/* static TypeChar* Trim(TypeChar* APC_Char,TypeLength& ARRL_Length)*/ static ZCChars& Trim(ZCChars& ARR_CChars) { ZtCMainChars::Trim(ARR_CChars.mp_TypeChar, RR(ARR_CChars.ml_TypeLength)); return ARR_CChars; }/* static ZCChars& Trim(ZCChars& ARR_CChars)*/ template static int GetStartCStrObjNum( TypeCharC* APC_Origin, TypeLength AL_OriginLength, TStringArray& ARA_SearchArray) { long VL_ArrSize=ARA_SearchArray.size(); if(AL_OriginLength<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); __for1(TypeLength, i, VL_ArrSize) { const bool CB_IsOK= ZtCMainChars::DoStart( APC_Origin , ARA_SearchArray.ItD(CI_IterEasyID).data(), AL_OriginLength, ARA_SearchArray.ItD(CI_IterEasyID).size() /*//////////*/ ); if(CB_IsOK) return i; ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); }/* __for1(TypeLength, i, VL_ArrSize)*/ return 0; }/* template static int GetStartCStrObjNum( TypeCharC* APC_Origin, TypeLength AL_OriginLength, TStringArray& ARA_SearchArray) */ template static TypeLength GetStartCStrObjNum(const TTyChars& AR_CCharsOrigin, TStringArray& ARA_SearchArray) { return ZtCMainChars::GetStartCStrObjNum(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetStartCStrObjNum(const TTyChars& AR_CCharsOrigin, TStringArray& ARA_SearchArray) */ template static TypeLength GetStartCStrObjNum2( /*###############*/ TypeCharC* APC_Origin , TypeLength AL_OriginLength, TStringArray& ARA_SearchArray, TString*& APR_CStringStart /*#####*/ ) /*##########################################*/ { APR_CStringStart=0; long VL_ArrSize=ARA_SearchArray.size(); if(AL_OriginLength<1) return 0; //////////////////////////// IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); /* »ó¼ö ¹Ýº¹ÀÚ const_iterator À¸·Î ÄÚµùÇϸé APR_CStringStart ´Â ÇÔ¼ö ¿ÜºÎ¿¡¼­ const TString* VP_CStringData ÇüÅ·Π¼±¾ðµÇ¾î¾ß ÇÑ´Ù. */ for(TypeLength i=1; i<=VL_ArrSize; ++i) { const bool CB_IsOK=ZtCMainChars::DoStart( APC_Origin , ARA_SearchArray.ItD(CI_IterEasyID).data(), AL_OriginLength, ARA_SearchArray.ItD(CI_IterEasyID).size() /*//////////*/ ); if(CB_IsOK) { APR_CStringStart=&(ARA_SearchArray.ItD(CI_IterEasyID)); return i; }/* if(CB_IsOK)*/ ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); }/* for(TypeLength i=1; i<=VL_ArrSize; ++i)*/ return 0; }/* template static TypeLength GetStartCStrObjNum2( TypeCharC* APC_Origin , TypeLength AL_OriginLength, TStringArray& ARA_SearchArray, TString*& APR_CStringStart ) */ template static TypeLength GetStartCStrObjNum2(const TTyChars& AR_CCharsOrigin, TStringArray& ARA_SearchArray, TString*& APR_CStringStart) { return ZtCMainChars::GetStartCStrObjNum2( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray, RR(APR_CStringStart)); }/* template static TypeLength GetStartCStrObjNum2(const TTyChars& AR_CCharsOrigin, TStringArray& ARA_SearchArray, TString*& APR_CStringStart)*/ /*////////////////////////////////////////////////////////////////// ¡á ¾Æ·¡ typename TTyChars ÀÎÀÚ¸¦ °¡Áø ÅÛÇø´ ÇÔ¼ö´Â TTyChars ÀÇ ÀÚ¸® ¿¡, ZCChars Ŭ·¡½º°°ÀÌ data(), size() ¸â¹ö¸¦ °®´Â Ŭ·¡½º°¡ ¿Ã ¼ö ÀÖ´Ù. -- 2011-07-13 05:39:00 //////////////////////////////////////////////////////////////////*/ template static bool DoStart(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) { return ZtCMainChars::DoStart(AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size()); }/* template static bool DoStart(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */ static bool DoStart( TypeCharC* APC_Origin, TypeCharC* APC_Search, TypeLength AL_OriginLength, TypeLength AL_SearchLength) { if(AL_OriginLength<1 || AL_SearchLength<1 || AL_OriginLength static bool DoClose(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) { return ZtCMainChars::DoClose(AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size()); }/* template static bool DoClose(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */ static bool DoClose( TypeCharC* APC_Origin, TypeCharC* APC_Search, TypeLength AL_OriginLength, TypeLength AL_SearchLength) { const bool CB_IsBad = ( AL_OriginLength<1 || AL_SearchLength<1 || AL_OriginLength static bool DoEndLinear( const TTyChars& AR_CCharsOrigin1, const TTyChars& AR_CCharsOrigin2, const TTyChars& AR_CCharsSearch) { return ZtCMainChars::DoEndLinear( AR_CCharsOrigin1.data(), AR_CCharsOrigin2.data(), AR_CCharsSearch.data(), AR_CCharsOrigin1.size(), AR_CCharsOrigin2.size(), AR_CCharsSearch.size() ); }/* template static bool DoEndLinear( const TTyChars& AR_CCharsOrigin1, const TTyChars& AR_CCharsOrigin2, const TTyChars& AR_CCharsSearch) */ static bool DoEndLinear( TypeCharC* APC_Origin1 , TypeCharC* APC_Origin2 , TypeCharC* APC_Search, TypeLength AL_OriginLength1, TypeLength AL_OriginLength2, TypeLength AL_SearchLength ) { /* APC_Origin1 ¿Í APC_Origin2 À» ¿¬¼ÓµÈ ¹®ÀÚ¿­·Î º¸¾ÒÀ»¶§, Àüü ¹®ÀÚ¿­ÀÌ APC_Search ·Î ³¡³ª¸é true ¸¦ ¹ÝȯÇÑ´Ù. */ const bool CB_IsBad = ( AL_SearchLength<1 || AL_OriginLength1+AL_OriginLength2AL_SearchLength APC_Origin1, APC_Origin2 ¢Ñ ABCDEFGH IJKLMNOPQRSTU APC_Search ¢Ñ LMNOPQRSTU ¡á °æ¿ì2 : AL_OriginLength2<=AL_SearchLength APC_Origin1, APC_Origin2 ¢Ñ ABCDEFGH IJKLMNOPQRSTU APC_Search ¢Ñ GHIJKLMNOPQRSTU ¡á -- 2011-03-09 09:49:00 /////////////////////////////////////////////////////*/ TypeCharC* VPC_OrginStart =APC_Origin2+AL_OriginLength2; TypeCharC* VPC_SearchStart=APC_Search +AL_SearchLength ; TypeLength VI_CompareCnt =( AL_OriginLength2>AL_SearchLength ? AL_SearchLength : AL_OriginLength2); for(TypeLength i=0; i=AL_SearchLength) return true ; if(AL_OriginLength1+VI_CompareCnt< AL_SearchLength) return false; VI_CompareCnt =AL_SearchLength-VI_CompareCnt; VPC_OrginStart=APC_Origin1+AL_OriginLength1; for(TypeLength i=0; iAL_OriginLen) return false; return ZtCMainChars::DoStart(APC_Origin,APC_Search,AL_OriginLen,AL_SearchLen) && ZtCMainChars::DoClose(APC_Origin,APC_Search,AL_OriginLen,AL_SearchLen) ; }/* bool DoWrap(TypeCharC* APC_Origin, TypeCharC* APC_Search, TypeLength AL_OriginLen, TypeLength AL_SearchLen) */ template static TypeLength FindPos( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength AL_StartPos=0) { return ZtCMainChars::FindPos( AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), AL_StartPos); }/* template 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) { const bool CB_IsBad = ( AL_OriginLength<1 || AL_SearchLength<1 || AL_StartPos<0 || AL_StartPos>=AL_OriginLength ); if(CB_IsBad) return -1; TypeLength VL_Loop=AL_OriginLength-AL_SearchLength; TypeLength i =AL_StartPos; TypeLength j =0 ; /*////////////////////////////////////////////////////// ¡á ¾Æ·¡ while ¹® Äڵ忡¼­ if(j<1) ++i; else i+=j; ºÎºÐÀ» ÁÖ¸ñÇÒ °Í. ¿¬¼ÓµÈ N °³ÀÇ ¹®ÀÚ¸¦ ã¾Æ¾ß Çϴµ¥, M( static TypeLength FindPosLen( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength& ARRL_MatchLen, TypeLength AL_StartPos=0) { return ZtCMainChars::FindPosLen( AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), RR(ARRL_MatchLen), AL_StartPos); }/* template static TypeLength FindPosLen( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength& ARRL_MatchLen, TypeLength AL_StartPos=0) */ static TypeLength FindPosLen( //////////////////////////////////// TypeCharC* APC_Origin , TypeCharC* APC_Search , TypeLength AL_OriginLength , TypeLength AL_SearchLength , TypeLength& ARRL_MatchLen , TypeLength AL_StartPos=0 /*////////*/ ) /*//////////////////////////////////////////////*/ { const bool CB_IsBad = (AL_OriginLength<1 || AL_SearchLength<1 || AL_StartPos<0 || AL_StartPos>=AL_OriginLength ); if(CB_IsBad) return -1; TypeLength VL_Loop=AL_OriginLength-AL_SearchLength; TypeLength i =AL_StartPos; TypeLength j =0 ; while(i<=VL_Loop) { for(j=0; j static TypeLength FindPosEsc( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, const TTyChars& AR_CCharsEscape, TypeLength AL_StartPos=0) { return ZtCMainChars::FindPosEsc( AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsEscape.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), AR_CCharsEscape.size(), AL_StartPos); }/* template static TypeLength FindPosEsc( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, const TTyChars& AR_CCharsEscape, TypeLength AL_StartPos=0) */ /* APC_Search ¹®ÀÚ¿­À» ã´Âµ¥ APC_WrapStart ·Î ½ÃÀÛÇÑ´Ù¸é APC_WrapClose À» ã°í ¹Ù·Î ´ÙÀ½¿¡ APC_Search ÀÌ ÀÖ¾î¾ß ±× À§Ä¡¸¦ ¹ÝȯÇÑ´Ù. */ static TypeLength FindPosEscWrap( //////////////////////////////// TypeCharC* APC_Origin , TypeCharC* APC_Search , TypeCharC* APC_Escape , TypeCharC* APC_WrapStart , TypeCharC* APC_WrapClose , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TypeLength AL_EscapeLen , TypeLength AL_WrapStartLen , TypeLength AL_WrapCloseLen , TypeLength AL_StartPos=0 /*//////////*/ ) ///////////////////////////////////////////////*/ { const bool CB_IsBad = (AL_OriginLen<1 || AL_SearchLen<1 || AL_OriginLen static TypeLength FindPosEscWrap( ////// const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , const TTyChars& AR_CCharsEscape , const TTyChars& AR_CCharsWrapStart, const TTyChars& AR_CCharsWrapClose, TypeLength AL_StartPos=0 /*//////////*/ ) ///////////////////////////////////////////////*/ { return ZtCMainChars::FindPosEscWrap( AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsEscape.data(), AR_CCharsWrapStart.data(), AR_CCharsWrapClose.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), AR_CCharsEscape.size(), AR_CCharsWrapStart.size(), AR_CCharsWrapClose.size(), AL_StartPos /*/////////*/ ); }/* template static TypeLength FindPosEscWrap( ////// const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , const TTyChars& AR_CCharsEscape , const TTyChars& AR_CCharsWrapStart, const TTyChars& AR_CCharsWrapClose, TypeLength AL_StartPos=0 ////////////// ) ///////////////////////////////////////////////*/ /*//////////////////////////////////////////////////////////////// ¡á FindPosEscWrap() Å×½ºÆ®. typedef std::NsChars::ZNsType::ZtCTypeChars ZCTypeChars; typedef std::NsChars::ZtCMainChars ZCMainChars; std::string CStrOrigin("{{ABC\\}}\"}},ABC"); std::string CStrSearch(","); std::string CStrEscape("\\"); std::string CStrWrapStart("{{"); std::string CStrWrapClose("}}"); cout<<"FindPosEscWrap="<"); VO_Vec.push_back("<"); cout<<"pos="<=0) { TypeLength j; for(j=0; j=0)*/ return -1; }/* static TypeLength FindPosFromEnd( TypeCharC* APC_Origin, TypeCharC* APC_Search, TypeLength AL_OriginLen, TypeLength AL_SearchLen)*/ template 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 static TypeLength FindPosFromEnd(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */ template 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 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) { if(AL_OriginLength<1 || AL_SearchLength<1) return 0; TypeLength VL_LoopCnt = (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_OriTempIn; TypeCharC* VP_SeaTemp=APC_Search; TypeLength i=0; TypeLength j=0; for(i=VL_LoopCnt; i>0; --i) { VP_OriTempIn=VP_OriTemp++; VP_SeaTemp =APC_Search ; for(j=0; j=i) return i; }/* for(i=VL_LoopCnt; i>0; --i)*/ return 0; }/* static TypeLength GetMatchLenFromEnd( TypeCharC* APC_Origin, TypeCharC* APC_Search, TypeLength AL_OriginLength, TypeLength AL_SearchLength)*/ /* ¾Õ¿¡¼­ºÎÅÍ °¨½Î´Â ¹®ÀÚ¿­ APC_WrapStart ¿Í APC_WrapClose »çÀÌ¿¡ ÀÖ´Â ¹®ÀÚ¿­ÀÌ n ȸ ¹Ýº¹µÈ Àüü ±æÀ̸¦ °¡Á®¿Â´Ù. APC_WrapStart ¿Í APC_WrapClose ±æÀ̸¦ Æ÷ÇÔÇÑ´Ù. APC_WrapStart ¿Í APC_WrapClose ÀÌ " ÀÎ °æ¿ì "ABC""AAABBDD"ABC ¶ó´Â ¹®ÀÚ¿­¿¡ ´ëÇØ¼­ "ABC""AAABBDD" ¿©±â±îÁöÀÇ ±æÀ̸¦ ¹ÝȯÇÑ´Ù. */ static TypeLength GetWrapLen( //////////////////////////////////// TypeCharC* APC_OriginChar , TypeCharC* APC_WrapStart , TypeCharC* APC_WrapClose , TypeLength AL_OriginLen , TypeLength AL_WrapStartLen , TypeLength AL_WrapCloseLen /*//////////*/ ) ///////////////////////////////////////////////*/ { if(AL_OriginLen<1) return 0; TypeLength VL_SearchPos=0; TypeLength VL_SearchLen=0; TypeLength VL_FindPos =0; do //// { const bool CB_DoStart = ZtCMainChars::DoStart( APC_OriginChar+VL_SearchPos, APC_WrapStart, AL_OriginLen-VL_SearchPos, AL_WrapStartLen); if(CB_DoStart==false) return VL_SearchLen; // APC_WrapStart ·Î ½ÃÀÛÇÏ´Â °æ¿ì VL_SearchPos+=AL_WrapStartLen; VL_SearchLen+=AL_WrapStartLen; VL_FindPos=ZtCMainChars::FindPos( APC_OriginChar, APC_WrapClose, AL_OriginLen, AL_WrapStartLen, VL_SearchPos); if(VL_FindPos<0) { // APC_WrapCloase ¸¦ ¸ø ãÀº °æ¿ì. return VL_SearchLen-AL_WrapStartLen; }/* if(VL_FindPos<0)*/ VL_SearchPos=VL_FindPos+AL_WrapCloseLen; VL_SearchLen=VL_FindPos+AL_WrapCloseLen; } while(VL_SearchLen static TypeLength GetWrapLen( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsWrapStart, const TTyChars& AR_CCharsWrapClose) { return ZtCMainChars::GetWrapLen( AR_CCharsOrigin.data(), AR_CCharsWrapStart.data(), AR_CCharsWrapClose.data(), AR_CCharsOrigin.size(), AR_CCharsWrapStart.size(), AR_CCharsWrapClose.size()); }/* template static TypeLength GetWrapLen( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsWrapStart, const TTyChars& AR_CCharsWrapClose)*/ static TypeLength FindPosLinear( ///////////////////////////////// TypeCharC* APC_Origin1 , TypeCharC* APC_Origin2 , TypeCharC* APC_Search , TypeLength AL_OriginLen1 , TypeLength AL_OriginLen2 , TypeLength AL_SearchLength , TypeLength& ARRL_SearchedPos1 , TypeLength& ARRL_SearchedPos2 , TypeLength& ARRL_SearchedLen1 , TypeLength& ARRL_SearchedLen2 /*//////////*/ ) ///////////////////////////////////////////////*/ { /* APC_Origin1 °ú APC_Origin2 ÀÌ À̾îÁø ¹®ÀÚ¿­·Î º¸¾ÒÀ»¶§ APC_Search ÀÌ ³ª¿À´Â À§Ä¡¸¦ ±¸ÇÑ´Ù. APC_Origin1 ¿¡¼­ ¹ß°ßµÈ À§Ä¡´Â ARRL_SearchedPos1 ¿¡ APC_Origin2 ¿¡¼­ ¹ß°ßµÈ À§Ä¡´Â ARRL_SearchedPos2 ¿¡ ¼ÂÆÃÇÑ´Ù. APC_Origin1 ¿¡¼­ ¹ß°ßµÈ ±æÀÌ´Â ARRL_SearchedLen1 ¿¡ APC_Origin2 ¿¡¼­ ¹ß°ßµÈ ±æÀÌ´Â ARRL_SearchedLen2 ¿¡ ¼ÂÆÃÇÑ´Ù. */ ARRL_SearchedPos1=-1; ARRL_SearchedPos2=-1; ARRL_SearchedLen1= 0; ARRL_SearchedLen2= 0; if(AL_SearchLength<1) return -1; TypeLength VL_MatchLen= 0; TypeLength VL_FindPos =-1; /* APC_Origin1 ¿¡¼­´Â ³¡¿¡¼­ ÃÖ´ë AL_SearchLength °³ÀÇ ¹®ÀÚ¿­¸¸ ºñ±³ÇÑ´Ù. */ if(APC_Origin1=0) { 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 bool VB_IsOK=ZtCMainChars::DoStart( APC_Origin2 , APC_Search +VL_MatchLen, AL_OriginLen2 , AL_SearchLength-VL_MatchLen /*/////////*/ ); if(VB_IsOK==true) { ARRL_SearchedPos1=AL_OriginLen1-VL_MatchLen; ARRL_SearchedPos2=0 ; ARRL_SearchedLen1=VL_MatchLen; ARRL_SearchedLen2=AL_SearchLength-VL_MatchLen; return 0; }/* if(VB_IsOK==true)*/ }/* if(VL_MatchLen>0)*/ ARRL_SearchedPos2=ZtCMainChars::FindPos( APC_Origin2 , APC_Search , AL_OriginLen2 , AL_SearchLength , 0 /*/////////*/ ); /////////////////////// if(ARRL_SearchedPos2>=0) ARRL_SearchedLen2=AL_SearchLength; return ARRL_SearchedPos2; }/* static TypeLength FindPosLinear( ///////////////////////////////// TypeCharC* APC_Origin1 , TypeCharC* APC_Origin2 , TypeCharC* APC_Search , TypeLength AL_OriginLen1 , TypeLength AL_OriginLen2 , TypeLength AL_SearchLength , TypeLength& ARRL_SearchedPos1 , TypeLength& ARRL_SearchedPos2 , TypeLength& ARRL_SearchedLen1 , TypeLength& ARRL_SearchedLen2 ////////////// ) ///////////////////////////////////////////////*/ template static TypeLength FindPosLinear( ///////////////////////////////// const TTyChars& AR_CCharsOrigin1 , const TTyChars& AR_CCharsOrigin2 , const TTyChars& AR_CCharsSearch , TypeLength& ARRL_SearchedPos1, TypeLength& ARRL_SearchedPos2, TypeLength& ARRL_SearchedLen1, TypeLength& ARRL_SearchedLen2 /*//////////*/ ) ///////////////////////////////////////////////*/ { return ZtCMainChars::FindPosLinear( AR_CCharsOrigin1.data(), AR_CCharsOrigin2.data(), AR_CCharsSearch.data(), AR_CCharsOrigin1.size(), AR_CCharsOrigin2.size(), AR_CCharsSearch.size(), RR(ARRL_SearchedPos1) , RR(ARRL_SearchedPos2) , RR(ARRL_SearchedLen1) , RR(ARRL_SearchedLen2) /*//////////*/ ); }/* template static TypeLength FindPosLinear( ///////////////////////////////// const TTyChars& AR_CCharsOrigin1 , const TTyChars& AR_CCharsOrigin2 , const TTyChars& AR_CCharsSearch , TypeLength& ARRL_SearchedPos1, TypeLength& ARRL_SearchedPos2, TypeLength& ARRL_SearchedLen1, TypeLength& ARRL_SearchedLen2 ////////////// ) ///////////////////////////////////////////////*/ /*//////////////////////////////////////////////////////////////////////////////////////////// ¡á template 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 ///////////// ) ¾î¶² ¹®ÀÚ¿­¿¡¼­ ãÀ¸·Á°í ÇÏ´Â µ¥ÀÌŸ°¡ Àִµ¥, ¹®ÀÚ¿­ÀÌ ³Ê¹« ±æ¾î¼­ ÇÑ ¹ø¿¡ ´Ù ÀÐÁö ¸øÇÏ´Â °æ¿ì, ¹®ÀÚ¿­À» Á¶±Ý¾¿ Àо ã´Â ¹®ÀÚ¿­À» Ž»öÇÒ Çʿ䰡 ÀÖ´Ù. ±¸Ã¼ÀûÀ¸·Î ¾Æ·¡ ¹®ÀÚ¿­·Î ¿¹¸¦ µé¾îº¸ÀÚ. abc_BOUND1_defg_BOUND2_hijkmln_BO_BOUND3_opqrstuvwxyz ÀÌ ¹®ÀÚ¿­¿¡¼­ ã´Â ¹®ÀÚ¿­Àº ¼ø¼­´ë·Î BOUND1, BOUND2, BOUND3 À̸ç ÀÌ ¹®ÀÚ¿­À» ãÀ» ¶§¸¶´Ù ±× ÀÌÀü ¾î¶² ÀÚ·á¿¡ ´ëÇÏ¿© ƯÁ¤ÇÑ Ã³¸®¸¦ ÇϰíÀÚ ÇÏ´Â °ÍÀÌ´Ù. óÀ½¿¡´Â abc_BOU ±îÁö¸¸ Àоú´Ù°í Ä¡ÀÚ. ±×·¯¸é óÀ½¿¡ ã¾Æ¾ß ÇÏ´Â ¹®ÀÚ¿­ BOUND1 ÀÌ ¾øÀ¸¹Ç·Î, abc_BOU ¿¡ ´ëÇÏ¿© ¾î¶² 󸮸¦ ÇØÁÙ ¼ö ÀÖ´Ù. ±×·±µ¥ abc_BOU ´Â ³¡³ª´Â ¹®ÀÚ¿­ÀÌ Ã£´Â ¹®ÀÚ¿­ÀÇ ¾ÕºÎºÐÀ» ¸î ±Û ÀÚ(BOU) Æ÷ÇÔÇϰí ÀÖÀ¸¹Ç·Î, ÀÌ ºÎºÐÀ» Á¦¿ÜÇÑ abc_ ¿¡ ´ëÇØ¼­¸¸ 󸮸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù(´ÙÀ½À¸·Î ·ÎµùÇÏ´Â ¹®ÀÚ¿­ÀÌ ND1 À¸·Î ½ÃÀÛÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù.) ±×¸®°í ³ª¸ÓÁö BOU ´Â ¹öÆÛ¿¡ ÀúÀåÇØ ³õ´Â´Ù. ±×ÈÄ 2 ¹øÂ°·Î ND1_de À» Àоú´Ù¸é, ¸ÕÀú ¹öÆÛ¿¡ ã´Â ¹®ÀÚ¿­ÀÎ BOUND1 Áß¿¡ BOU ´Â ¹öÆÛ¿¡ ÀÌ¹Ì ÀÖÀ¸¹Ç·Î ±× ´ÙÀ½ ND1_de ¿¡¼­, BOU µÚ¿¡ ã´Â ¹®ÀÚ¿­ÀÎ ND1 À» ã¾Æº»´Ù. ±×·¯¸é BOUND1 À» ã°Ô µÇ°í, ±× ´ÙÀ½ µ¥ ÀÌŸ _de À» ¾ò´Â´Ù. ÀÌ ÀÌÀü µ¥ÀÌŸ´Â ¸ðµÎ ¹ö¸°´Ù. ¹öÆÛµµ ºñ¿î´Ù. »õ·Î ¾òÀº µ¥ÀÌŸ _de Àº 2 ¹øÂ°·Î ã ´Â ¹®ÀÚ¿­ BOUND2 ¸¦ ÀüÇô Æ÷ÇÔÇÏÁö ¾Ê°Å³ª, ã´Â ¹®ÀÚ¿­ ¾Õ ºÎºÐ ¸î °³ÀÇ ¹®ÀÚ¿Í µ¿ÀÏÇÑ ¹®ÀÚ·Î ³¡³ªÁöµµ ¾Ê¾Ò´Ù. ±×·¡¼­ ÀÌ _de ¿¡ ´ëÇØ¼­ ¾È½ÉÇϰí(?) ¿¹Á¤µÈ 󸮸¦ ÇØÁØ´Ù. 3 ¹øÂ°·Î fg_BOUND2_hijkmln_BO À» Àоú´Ù. 2 ¹øÂ°·Î ã´Â ¹®ÀÚ¿­ BOUND2 À» ã°Ô µÈ´Ù. ±×·¯¸é ±× ÀÌÀü ¹® ÀÚ¿­ fg_ ¿¡ ´ëÇØ¼­ 󸮸¦ ÇØ ÁÖ°í 3 ¹øÂ°·Î ã´Â ¹®ÀÚ¿­ BOUND3 ¸¦ ã´Â´Ù. BOUND3 ´Â ¾ø´Ù. ±×·±µ¥ BOUND3 ÀÇ ¾Õ ºÎºÐ BO ·Î ³¡³ª°í ÀÖÀ¸¹Ç·Î, ÀÌ BO ¸¸ »©°í(´ÙÀ½¿¡ ·ÎµùÇÏ´Â ¹®ÀÚ¿­ÀÌ UND3 ·Î ½ÃÀÛÇÒ ¼ö Àֱ⠶§¹® ¿¡)³ª¸ÓÁö ¹®ÀÚ¿­ _hijkmln_ ¿¡ ´ëÇØ¼­ 󸮸¦ ÇØÁØ´Ù. BO ´Â ¹öÆÛ¿¡ ÀúÀåÇØ ³õ´Â´Ù. 4 ¹øÂ°·Î _BOUND3_opqrstuvwxyz À» Àоú´Ù. ¹öÆÛ¿¡ ÀÖ´Â BO ¸¦ »ý°¢Çϸé BO_BOUND3_opqrstuvwxyz ¸¦ ÀÐÀº °Í ÀÌ µÈ´Ù. ¿©±â¼­ BOUND3 À» ã°Ô µÇ°í ¹öÆÛ¿¡ ÀÖ´Â µ¥ÀÌŸ BO ¿Í ±× ´ÙÀ½ _ ¿¡ ´ëÇØ¼­ ÁöÁ¤µÈ 󸮸¦ ÇØÁÖ¸é µÈ´Ù. ±× ´ÙÀ½ BOUND3 ÀÇ ´ÙÀ½ µ¥ÀÌŸ _opqrstuvwxyz À» ó¸®ÇØ ÁÖ¸é µÈ´Ù. ÀÌ ¾Ë°í¸®ÁòÀ» ±¸ÇöÇÑ °ÍÀÌ FindPosReady(~) ÀÌ´Ù. 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); ã´Â ¹®ÀÚ¿­Àº ARR_CStrReadyBuff ¿Í AR_CCharsOrigin.data() ¿¡ µ¿½Ã¿¡ °¥¶óÁ® ÀÖÀ» ¼ö Àִµ¥, ã´Â ¹®ÀÚ¿­À» ¿ÏÀüÈ÷ ãÀº °æ¿ì´Â OnMeetReady() ¸â¹öÀÇ 3 ¹ø Àμö°¡ ZNsMain::ZNsEnum::ZERun_NO ÀÌ°í ¸øÃ£Àº °æ¿ì´Â 3 ¹ø Àμö°¡ ZNsMain::ZNsEnum::ZERun_OK ÀÌ´Ù. ¡á Àμö TString& ARR_CStrReadyBuff À» »©°í Á» ´õ ÃÖÀûÈ­ÇÒ ¼ö ÀÖ´Â ¿©Áö´Â ÀÖ´Ù. ////////////////////////////////////////////////////////////////////////////////////////////*/ template< typename TReadyExec, typename TTyChars, typename TString> static bool FindPosReady( TReadyExec AR_CReadyExec , const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , TString& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() ÀÇ offset ÀÌ´Ù. ZNsEnum::ZERun& ARRE_ERun /*//////////*/ ) ////////////////////////////////////////*/ { /*########################################################################################### ¡á ARR_CStrReadyBuff ¿¡´Â AR_CCharsSearch.data() ÀÇ ¾ÕºÎºÐ°ú ÀÏÄ¡ÇÏ´Â ¹®ÀÚ¿­ÀÌ µé¾î ÀÖ´Ù. ´Ù¸¥ ¾û¶×ÇÑ µ¥ÀÌŸ°¡ µé¾îÀÖÁö ¾Êµµ·Ï ¸¸ÀüÀ» ±âÇØ¾ß ÇÑ´Ù. ¡á ARRL_StartPos ´Â ÀÌ ÇÔ¼ö°¡ true ¸¦ ¹ÝȯÇÒ ¶§´Â (Áï AR_CCharsSearch.data() ¸¦ ã¾ÒÀ¸¸é) AR_CCharsOrigin.data() ¿¡¼­ ´Ù½Ã Á¶È¸¸¦ ½ÃÀÛÇØ¾ß ÇÏ´Â À§Ä¡·Î ¼ÂÆÃµÈ´Ù. ±×·¡¼­ ´ÙÀ½ ¹ø Á¶È¸½Ã¿¡´Â AR_CCharsOrigin.data()+ARRL_StartPos ºÎÅÍ Á¶È¸ÇÏ¸é µÈ´Ù. ###########################################################################################*/ 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; if(VL_ReadyBuffSize+VO_CCharsOrigin.size()0) { ARRE_ERun=AR_CReadyExec. OnMeetNormal(ARR_CStrReadyBuff.data(), VL_ReadyBuffSize); ARR_CStrReadyBuff=""; if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return false; }/* if(VL_ReadyBuffSize>0)*/ VL_MatchLen=ZtCMainChars::GetMatchLenFromEnd( VO_CCharsOrigin.data(), AR_CCharsSearch.data(), VO_CCharsOrigin.size(), VO_CCharsOrigin.size() /*/////////*/ ); //////////////////////////// TypeLength VL_ValidLen=VO_CCharsOrigin.size()-VL_MatchLen; if(VL_MatchLen>0) ARR_CStrReadyBuff.append(VO_CCharsOrigin.data()+VL_ValidLen, VL_MatchLen); if(VL_ValidLen>0) ARRE_ERun=AR_CReadyExec.OnMeetNormal(VO_CCharsOrigin.data(), VL_ValidLen); //endif return false; }/* if(VL_ReadyBuffSize+AR_CCharsOrigin.size()0) { ARRE_ERun=AR_CReadyExec.OnMeetReady( /////////// ARR_CStrReadyBuff.data(), VL_ReadyBuffSize , ZNsMain::ZNsEnum::ZERun_OK /*/////////*/ ); /////////////////////////////// if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return true; }/* if(VL_ReadyBuffSize>0)*/ ARRE_ERun=AR_CReadyExec.OnMeetReady( VO_CCharsOrigin.data(), VL_ReadyLen, ZNsMain::ZNsEnum::ZERun_NO); ARRL_StartPos +=VL_ReadyLen; ARR_CStrReadyBuff="" ; return true; }/* if(VB_IsOK==true)*/ if(VL_ReadyBuffSize>0) { ARRE_ERun=AR_CReadyExec.OnMeetNormal( ARR_CStrReadyBuff.data(), VL_ReadyBuffSize); ARR_CStrReadyBuff=""; if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return false; }/* 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) /*/////////*/ ); ///////////////////////////////////////////// if(VL_FindPos<0) { ARRL_StartPos = -1; ARRE_ERun=AR_CReadyExec.OnMeetNormal( VO_CCharsOrigin.data(), VO_CCharsOrigin.size()-VL_MatchLen ); ARR_CStrReadyBuff.append( VO_CCharsOrigin.data()+VO_CCharsOrigin.size()-VL_MatchLen, VL_MatchLen ); return false; }/* if(VL_FindPos<0)*/ if(VL_FindPos>0) { ARRE_ERun=AR_CReadyExec. OnMeetNormal(VO_CCharsOrigin.data(), VL_FindPos); if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return true; }/* if(VL_FindPos>0)*/ ARRE_ERun =AR_CReadyExec.OnMeetReady( VO_CCharsOrigin.data()+VL_FindPos, AR_CCharsSearch.size(), ZNsMain::ZNsEnum::ZERun_NO); ARRL_StartPos+=(VL_FindPos+AR_CCharsSearch.size()); return true; }/* template< typename TReadyExec, typename TTyChars, typename TString> static bool FindPosReady( TReadyExec AR_CReadyExec , const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , TString& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , // AR_CCharsOrigin.data() ÀÇ offset ÀÌ´Ù. ZNsEnum::ZERun& ARRE_ERun ////////////// ) ////////////////////////////////////////*/ template< typename TReadyExec, typename TStringData> ////////////// static bool FindPosReady( TReadyExec AR_CReadyExec , TypeCharC* AP_OriginData , TypeCharC* AP_SearchData , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TStringData& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , // AP_OriginData ÀÇ offset ÀÌ´Ù. ZNsEnum::ZERun& ARRE_ERun /*//////////*/ ) //////////////////////////////////////////*/ { return FindPosReady( AR_CReadyExec , ZCChars(AP_OriginData, AL_OriginLen), ZCChars(AP_SearchData, AL_SearchLen), ARR_CStrReadyBuff , ARRL_StartPos , // AP_OriginData ÀÇ offset ÀÌ´Ù. ARRE_ERun /*/////*/ ); ///////////////////////////////////////// }/* template< typename TReadyExec, typename TStringData> ////////////// static bool FindPosReady( TReadyExec AR_CReadyExec , TypeCharC* AP_OriginData , TypeCharC* AP_SearchData , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TStringData& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , // AP_OriginData ÀÇ offset ÀÌ´Ù. ZNsEnum::ZERun& ARRE_ERun ////////////// ) //////////////////////////////////////////*/ /*//////////////////////////////////////////////////////////////////////////////// ¡á ÀÏÁ¾ÀÇ Call Back ÇÔ¼öÀÎ TReadyExec::OnMeetNormal() À̳ª TReadyExec::OnMeetReady() ¿¡¼­ ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¹ÞÀ» ¼ö ÀÖµµ·Ï AO_CHelpType Àμö¸¦ Ãß°¡·Î °®´Â ÇÔ¼ö¸¦ ¼³°èÇÑ´Ù. ÂüÁ¶ÇüÀÌ ¾Æ´Ñ °ªÀ¸·Î ³Ñ±â°í ÀÖ´Ù(THelpType AO_CHelpType). µû¶ó¼­ THelpType ÀÌ Å©±â°¡ Å« object ÀÏ °æ¿ì´Â Æ÷ÀÎÅͳª, Æ÷ÀÎÅ͸¦ ¸â¹ö·Î °®´Â object ·Î Æ÷ÀåÇØ¼­ ³Ñ°Ü¾ß ÇÑ´Ù. ////////////////////////////////////////////////////////////////////////////////*/ 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 /*//////////*/ ) ///////////////////////////////////////////////*/ { /*######################################################################################## ¡á ARR_CStrReadyBuff ¿¡´Â AR_CCharsSearch.data() ÀÇ ¾ÕºÎºÐ°ú ÀÏÄ¡ÇÏ´Â ¹®ÀÚ¿­ÀÌ µé¾î ÀÖ´Ù. ´Ù¸¥ ¾û¶×ÇÑ µ¥ÀÌŸ°¡ µé¾îÀÖÁö ¾Êµµ·Ï ¸¸ÀüÀ» ±âÇØ¾ß ÇÑ´Ù. ¡á ARRL_StartPos ´Â ÀÌ ÇÔ¼ö°¡ true ¸¦ ¹ÝȯÇÒ ¶§´Â (Áï AR_CCharsSearch.data() ¸¦ ã¾ÒÀ¸¸é) AR_CCharsOrigin.data() ¿¡¼­ ´Ù½Ã Á¶È¸¸¦ ½ÃÀÛÇØ¾ß ÇÏ´Â À§Ä¡·Î ¼ÂÆÃµÈ´Ù. ±×·¡¼­ ´ÙÀ½ ¹ø Á¶È¸½Ã¿¡´Â AR_CCharsOrigin.data()+ARRL_StartPos ºÎÅÍ Á¶È¸ÇÏ¸é µÈ´Ù. ########################################################################################*/ typedef ZNsMain::ZtCCheckRef ZCCheckRef ; typedef ZCCheckRef::TypeData TypeObject ; 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; if(VL_ReadyBuffSize+AR_CCharsOrigin.size()0) { ARRE_ERun= AR_CReadyExec.template OnMeetNormal ( ARR_CStrReadyBuff.data(), VL_ReadyBuffSize , ZCCheckRef::PassData(AO_CHelpType) ); ARR_CStrReadyBuff = ""; ////////////////////////////////// if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return false; }/* if(VL_ReadyBuffSize>0)*/ VL_MatchLen=ZtCMainChars::GetMatchLenFromEnd( VO_CCharsOrigin.data(), AR_CCharsSearch.data(), VO_CCharsOrigin.size(), VO_CCharsOrigin.size() /*/////////*/ ); //////////////////////////// TypeLength VL_ValidLen=VO_CCharsOrigin.size()-VL_MatchLen; if(VL_MatchLen>0) { ARR_CStrReadyBuff.append(VO_CCharsOrigin.data()+VL_ValidLen, VL_MatchLen); } if(VL_ValidLen>0) { ARRE_ERun=AR_CReadyExec.template OnMeetNormal ( VO_CCharsOrigin.data(), VL_ValidLen , ZCCheckRef::PassData(AO_CHelpType) ); ///////////////////////////////////////////////////////// }/* if(VL_ValidLen>0)*/ return false; }/* if(VL_ReadyBuffSize+AR_CCharsOrigin.size()0) { ARRE_ERun=AR_CReadyExec.template OnMeetReady ( ARR_CStrReadyBuff.data() , VL_ReadyBuffSize, ZNsMain::ZNsEnum::ZERun_OK, ZCCheckRef::PassData(AO_CHelpType) ); //////////////////////////////////////////////////////// if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return true; } //if(VL_ReadyBuffSize>0) ARRE_ERun=AR_CReadyExec.template OnMeetReady ( VO_CCharsOrigin.data() , VL_ReadyLen , ZNsMain::ZNsEnum::ZERun_NO, ZCCheckRef::PassData(AO_CHelpType) ); //////////////////////////////////////////////////////// ARRL_StartPos +=VL_ReadyLen; ARR_CStrReadyBuff=""; return true; }/* if(VB_IsOK==true)*/ if(VL_ReadyBuffSize>0) { ARRE_ERun=AR_CReadyExec.template OnMeetNormal ( ARR_CStrReadyBuff.data(), VL_ReadyBuffSize , ZCCheckRef::PassData(AO_CHelpType) ); ///////////////////////////////////////////////////////// ARR_CStrReadyBuff = ""; if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) { return false; } }/* 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) /*/////////*/ ); ///////////////////////////////////////////// if(VL_FindPos<0) { ARRL_StartPos=-1; ARRE_ERun=AR_CReadyExec.template OnMeetNormal ( VO_CCharsOrigin.data() , VO_CCharsOrigin.size()-VL_MatchLen, ZCCheckRef::PassData(AO_CHelpType) ); ///////////////////////////////////////////////////////// ARR_CStrReadyBuff.append ( VO_CCharsOrigin.data() + VO_CCharsOrigin.size() - VL_MatchLen, VL_MatchLen ); //////////////////////// return false; }/* if(VL_FindPos<0)*/ if(VL_FindPos>0) { ARRE_ERun=AR_CReadyExec.template OnMeetNormal ( VO_CCharsOrigin.data(), VL_FindPos , ZCCheckRef::PassData(AO_CHelpType) ); ///////////////////////////////////////////////////////// if(ARRE_ERun==ZNsMain::ZNsEnum::ZERun_NO) return true; }/* if(VL_FindPos>0)*/ ARRE_ERun=AR_CReadyExec.template OnMeetReady ( VO_CCharsOrigin.data()+VL_FindPos, AR_CCharsSearch.size(), ZNsMain::ZNsEnum::ZERun_NO , ZCCheckRef::PassData(AO_CHelpType) ); ARRL_StartPos+=(VL_FindPos+AR_CCharsSearch.size()); return true; }/* 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 ////////////// ) ///////////////////////////////////////////////*/ template static bool FindPosReady ( TReadyExec AR_CReadyExec , THelpType AO_CHelpType , TypeCharC* AP_OriginData , TypeCharC* AP_SearchData , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TStringData& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , // AP_OriginData ÀÇ offset ÀÌ´Ù. ZNsEnum::ZERun& ARRE_ERun ) /////////////////////////////////////////////////////////////////*/ { typedef ZNsMain::ZtCCheckRef ZCCheckRef ; typedef ZCCheckRef::TypeData TypeObject ; return FindPosReady( AR_CReadyExec , ZCCheckRef::PassData(AO_CHelpType) , ZCChars(AP_OriginData, AL_OriginLen), ZCChars(AP_SearchData, AL_SearchLen), ARR_CStrReadyBuff , ARRL_StartPos , // AP_OriginData ÀÇ offset ÀÌ´Ù. ARRE_ERun /*/////*/ ); ///////////////////////////////////////////////////// }/* template static bool FindPosReady ( TReadyExec AR_CReadyExec , THelpType AO_CHelpType , TypeCharC* AP_OriginData , TypeCharC* AP_SearchData , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TStringData& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , // AP_OriginData ÀÇ offset ÀÌ´Ù. ZNsEnum::ZERun& ARRE_ERun ) ///////////////////////////////////////////////////////////////////*/ template ////////////////// static bool FindPosReadyValid( const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , TStringData& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , TypeLength& ARRL_ValidReady , // ARR_CStrReadyBuff ÀÇ À¯È¿±æÀÌ TypeLength& ARRL_ValidLen /*//////////*/ ) /////////////////////////////////////////////////*/ { // ARRL_ValidReady Àº 0 À̳ª ARR_CStrReadyBuff.size() Áß ÇÑ °ªÀÌ´Ù. if(ARRL_StartPos<0) ARRL_StartPos=0; ZCChars VO_CCharsOrigin( AR_CCharsOrigin.data(), AR_CCharsOrigin.size()); VO_CCharsOrigin+=ARRL_StartPos; /*///////////////////////////////////////////////////////////////////////////////////////// ¡á FindPosReady() ÇÔ¼ö¿Í ºñ½ÁÇÑ ±â´ÉÀ» Çϴµ¥, AR_CReadyExec Àμö°¡ ¾ø´Â ´ë½Å FindPosReady() ¿¡¼­ ¾²ÀÎ Áö¿ªº¯¼ö VL_ValidLen ¿Í °°Àº Àǹ̸¦ °¡Áø ±æÀ̸¦ ÂüÁ¶ Àμö ARRL_ValidLen ¿¡ Àü´ÞÇÑ´Ù. ARRL_ValidLen Àº AR_CCharsOrigin.data() ÀÇ ±æÀÌ Áß¿¡¼­ ã´Â ¹®ÀÚ¿­ ¿µ¿ª¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â ±æÀ̸¦ ³ªÅ¸³»¸ç, AR_CCharsOrigin.data() ÀÇ ¾Õ¿¡¼­ºÎÅÍ ÀÌ ±æÀÌÀÇ ¹®ÀÚ¿­ ¿µ¿ªÀº ¾î¶² ó¸®ÀÇ ´ë»óÀÌ µÈ´Ù. ARR_CStrReadyBuff °¡ °¡Áø ¹®ÀÚ¿­ÀÌ AR_CCharsSearch.data() ¿Í match µÇ´Â ¹®ÀÚ¿­ÀÌ ¾ø¾î¼­ ARR_CStrReadyBuff ÀÌ Ã£´Â ´ë»óÀÇ ÀϺΰ¡ ¾Æ´Ï¶ó ¾î¶² ó¸®ÀÇ ´ë»óÀÌ µÇ´Â °æ¿ì, ARR_CStrReadyBuff ÀÇ ±æÀ̸¦ ÂüÁ¶ Àμö ARRL_ValidReady ¿¡ Àü´ÞÇÑ´Ù. ARR_CStrReadyBuff ´Â AR_CCharsSearch.data() ÀÇ ÀϺκÐÀ̹ǷΠARRL_ValidLen µ¥ÀÌŸ¸¦ ó¸®Çϱ⠾ռ­, AR_CCharsSearch.data() ¿¡¼­ ARRL_ValidReady ¸¸Å­ÀÇ µ¥ÀÌŸ¸¦ ¸ÕÀú 󸮸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù. ARRL_ValidReady Àº 0 À̳ª ARR_CStrReadyBuff.size() Áß ÇÑ °ªÀÌ´Ù. /////////////////////////////////////////////////////////////////////////////////////////*/ if(VO_CCharsOrigin.size()<1 || AR_CCharsSearch.size()<1) { ARRL_StartPos =-1; ARRL_ValidReady = 0; ARRL_ValidLen = 0; return false; }/* if(VO_CCharsOrigin.size()<1 || AR_CCharsSearch.size()<1)*/ TypeLength VL_ReadyBuffSize=ARR_CStrReadyBuff.size(); TypeLength VL_MatchLen =0; if(VL_ReadyBuffSize+VO_CCharsOrigin.size()0) ARR_CStrReadyBuff. append(VO_CCharsOrigin.data()+ARRL_ValidLen, VL_MatchLen); return false; }/* if(VL_ReadyBuffSize+AR_CCharsOrigin.size() ////////////////// static bool FindPosReadyValid( const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , TStringData& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , TypeLength& ARRL_ValidReady , // ARR_CStrReadyBuff ÀÇ À¯È¿±æÀÌ TypeLength& ARRL_ValidLen ////////////// ) /////////////////////////////////////////////////*/ template static bool FindPosReadyValid( /////////////////////////////////// TypeCharC* AP_CharOrigin , TypeCharC* AP_CharSearch , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TString& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , TypeLength& ARRL_ValidReady , // ARR_CStrReadyBuff ÀÇ À¯È¿±æÀÌ TypeLength& ARRL_ValidLen /*//////////*/ ) ///////////////////////////////////////////////*/ { return FindPosReadyValid( ///////////////////////////////// ZCChars(AP_CharOrigin, AL_OriginLen), ZCChars(AP_CharSearch, AL_SearchLen), RR(ARR_CStrReadyBuff) , ARRL_StartPos , ARRL_ValidReady , ARRL_ValidLen /*/////////*/ ); ////////////////////////////////////////// }/* template static bool FindPosReadyValid( /////////////////////////////////// TypeCharC* AP_CharOrigin , TypeCharC* AP_CharSearch , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TString& ARR_CStrReadyBuff, TypeLength& ARRL_StartPos , TypeLength& ARRL_ValidReady , // ARR_CStrReadyBuff ÀÇ À¯È¿±æÀÌ TypeLength& ARRL_ValidLen ////////////// ) ///////////////////////////////////////////////*/ static TypeLength GetFindCnt( TypeCharC* APC_Origin , TypeCharC* APC_Search, TypeLength AL_OriginLen, TypeLength AL_SearchLen ) { const bool CB_IsBad = (AL_OriginLen<1 || AL_SearchLen<1 || AL_OriginLen static TypeLength GetFindCnt( const TTyChars& AR_CCharsOrigin, const TTyChars& APC_CCharsSearch) { return ZtCMainChars::GetFindCnt( AR_CCharsOrigin.data(), APC_CCharsSearch.data(), AR_CCharsOrigin.size(), APC_CCharsSearch.size() ) ; }/* template static TypeLength GetFindCnt( const TTyChars& AR_CCharsOrigin, const TTyChars& APC_CCharsSearch) */ /*////////////////////////////////////////////////////////////////////////////// ¡á APC_Origin ÀÌ APC_Search+AL_SearchOffset À¸·Î ½ÃÀÛÇÏ´ÂÁö¸¦ ÆÇ´ÜÇÑ´Ù. AL_OriginLen static TypeLength GetStartLength( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength AL_SearchOffset=0) { return ZtCMainChars::GetStartLength( AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), AL_SearchOffset); }/* template static TypeLength GetStartLength( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength AL_SearchOffset=0) */ template static void SplitEach( /////////////// TFunctor AR_TFunctor , TypeCharC* APC_OriginChar , TypeCharC* APC_SearchChar , TypeLength AL_OriginLen , TypeLength AL_SearchLen , bool AB_DoExecNull=true // ±¸ºÐ ¹®ÀÚ·Î À߸° ¹®ÀÚ¿­ ±æÀ̰¡ 0 ÀÎ °æ¿ì¿¡µµ ÆãÅ©Å͸¦ ¼öÇàÇÑ´Ù. /*//////////*/ ) ///////////////////////////////////////////////*/ { if(AL_OriginLen<1 || AL_OriginLenVL_CopyStartPos) { AR_TFunctor( APC_OriginChar+VL_CopyStartPos, VL_Index-VL_CopyStartPos, ++VI_SearchCount) ; } else if(AB_DoExecNull==true) { AR_TFunctor(0, 0, ++VI_SearchCount) ; }/* else if(AB_DoExecNull==true)*/ VL_CopyStartPos=VL_Index+=AL_SearchLen; }/* while(VL_Index<=VL_Loop)*/ if(VL_CopyStartPos>=AL_OriginLen) return; if(VI_SearchCount==0 && VL_CopyStartPos==0) { AR_TFunctor(APC_OriginChar, AL_OriginLen, ++VI_SearchCount) ; } else { AR_TFunctor( APC_OriginChar+VL_CopyStartPos, AL_OriginLen-VL_CopyStartPos, ++VI_SearchCount) ; }/* else*/ }/* template static void SplitEach( /////////////// TFunctor AR_TFunctor , TypeCharC* APC_OriginChar , TypeCharC* APC_SearchChar , TypeLength AL_OriginLen , TypeLength AL_SearchLen , bool AB_DoExecNull=true ////////////// ) ///////////////////////////////////////////////*/ template static void SplitEach( TFunctor AR_TFunctor, const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch, bool AB_DoExecNull=true) { ZtCMainChars::template SplitEach( AR_TFunctor, AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), AB_DoExecNull /*/////////*/ ); ////////////////////////////////////////////// }/* template static void SplitEach( TFunctor AR_TFunctor, const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch, bool AB_DoExecNull=true) */ template static bool SplitTwo( ///////////////// TypeCharC* APC_OriginChar , TypeCharC* APC_SearchChar , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TString& ARR_CString1 , TString& ARR_CString2 /*//////////*/ ) ///////////////////////////////////////////////*/ { TypeLength VL_FindPos=ZtCMainChars:: FindPos(APC_OriginChar, APC_SearchChar, AL_OriginLen, AL_SearchLen); if(VL_FindPos<0) return false; ARR_CString1(APC_OriginChar, VL_FindPos); ARR_CString2( APC_OriginChar+VL_FindPos+AL_SearchLen, AL_OriginLen -VL_FindPos-AL_SearchLen ); return true; }/* template static bool SplitTwo( ///////////////// TypeCharC* APC_OriginChar , TypeCharC* APC_SearchChar , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TString& ARR_CString1 , TString& ARR_CString2 ////////////// ) ///////////////////////////////////////////////*/ template static bool SplitTwo( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TString& ARR_CString1, TString& ARR_CString2) { return ZtCMainChars::SplitTwo( AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), RR(ARR_CString1), RR(ARR_CString2)); }/* template static bool SplitTwo( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TString& ARR_CString1, TString& ARR_CString2) */ template static TStringList& SplitToList( /*######*/ TStringList& ARR_SaveList , TypeCharC* APC_OriginChar, TypeCharC* APC_SearchChar, TypeLength AL_OriginLen , TypeLength AL_SearchLen , bool AB_DoEndWhenNoMatch=true , bool AB_DoAppendEachLink=false, bool AB_DoAppendEmpty =false /*############*/ ) /*###################################################*/ { /*////////////////////////////////////////////////////////////////////////// ¡á AB_DoEndWhenNoMatch==true ÀÌ¸é ±¸ºÐ¹®ÀÚ¿­À» Çϳªµµ ãÁö ¸øÇÑ °æ¿ì Àüü ¿øº» ¹®ÀÚ¿­ APC_OriginChar À» ARR_SaveList ¿¡ ÀúÀåÇÏÁö ¾Ê°í Á¾·áÇÑ´Ù. ¡á ¿¬¼ÓµÈ APC_SearchChar »çÀÌ¿¡ ´Ù¸¥ ¹®ÀÚ°¡ ¾ø¾îµµ ºñ¾î ÀÖ´Â TString object ¸¦ ARR_SaveList ¿¡ ÀúÀåÇÑ´Ù. //////////////////////////////////////////////////////////////////////////*/ if(AL_OriginLen<1 || AL_OriginLenVL_CopyStartPos) { if(AB_DoAppendEachLink==true) { ((CStringData&)ARR_SaveList). append(APC_OriginChar+VL_CopyStartPos, VL_Index-VL_CopyStartPos) ; } else { ((CStringData&)ARR_SaveList).Invalidate(). append(APC_OriginChar+VL_CopyStartPos, VL_Index-VL_CopyStartPos) ; }/* else*/ } else if(AB_DoAppendEmpty==true) { (CStringData&)ARR_SaveList; }/* else if(AB_DoAppendEmpty==true)*/ VL_CopyStartPos=VL_Index+=AL_SearchLen; }/* while(VL_Index<=VL_Loop)*/ if(VL_CopyStartPos>=AL_OriginLen) { return ARR_SaveList; }/* if(VL_CopyStartPos>=AL_OriginLen)*/ if(VL_PrevSize static TStringList& SplitToList( ########## TStringList& ARR_SaveList , TypeCharC* APC_OriginChar, TypeCharC* APC_SearchChar, TypeLength AL_OriginLen , TypeLength AL_SearchLen , bool AB_DoEndWhenNoMatch=true , bool AB_DoAppendEachLink=false, bool AB_DoAppendEmpty =false ################# ) ####################################################*/ template< typename TTyChars, typename TStringList> static TStringList& SplitToList( TStringList& ARR_SaveList , const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , bool AB_DoEndWhenNoMatch=true , bool AB_DoAppendEachLink=false, bool AB_DoAppendEmpty =false /*/////////////*/ ) { return ZtCMainChars::SplitToList( RR(ARR_SaveList), AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), AB_DoEndWhenNoMatch , AB_DoAppendEachLink , AB_DoAppendEmpty /*//////////*/ ); }/* template< typename TTyChars, typename TStringList> static TStringList& SplitToList( TStringList& ARR_SaveList , const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , bool AB_DoEndWhenNoMatch=true , bool AB_DoAppendEachLink=false, bool AB_DoAppendEmpty =false ///////////////// ) */ /*////////////////////////////////////////////////////////////////////////// ¡á APC_SearchChar ·Î APC_OriginChar À» ÀÚ¸£´Âµ¥ ÀÚ¸£´Â ´ÜÀ§ÀÇ ¹®ÀÚ¿­Àº ¾ÕµÚ¿¡ APC_EscapeChar À¸·Î °¨½Ò ¼öµµ ÀÖ´Ù. APC_EscapeChar À¸·Î °¨½Î´Â ¹®ÀÚ¿­ ¾È¿¡´Â APC_SearchChar ÀÌ µé¾î°¥ ¼ö ÀÖ´Ù. APC_EscapeChar À¸·Î °¨½Î´Â ¹®ÀÚ¿­ ¾È¿¡´Â APC_EscapeChar ¹®ÀÚ¿­ÀÌ Â¦¼ö°³°¡ ³ª¿Í¾ß ÇÑ´Ù. APC_SearchChar ÀÌ "," À̰í APC_EscapeChar °¡ "\"" À̶ó¸é ¹®ÀÚ¿­ 1,2,"My, Data=""Love""",10 Àº ¾Æ·¡ 4 °³·Î ³ª´µ¾î Áø´Ù. 1 2 My, Data=""Love"" 10 ¡á -- //////////////////////////////////////////////////////////////////////*/ template static TStringList& SplitToListWrap( ///////////////////////////// TStringList& ARR_SaveList , TypeCharC* APC_OriginChar , TypeCharC* APC_SearchChar , TypeCharC* APC_WrapStart , TypeCharC* APC_WrapClose , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TypeLength AL_WrapStartLen , TypeLength AL_WrapCloseLen , bool AB_DoEndWhenNoMatch=true , bool AB_DoAppendEachLink=false /*//////////*/ ) ///////////////////////////////////////////////*/ { // AB_DoEndWhenNoMatch==true ÀÌ¸é ±¸ºÐ ¹®ÀÚ¿­À» Çϳªµµ ãÁö ¸øÇÑ °æ¿ì // Àüü ¿øº» ¹®ÀÚ¿­ APC_OriginChar À» ARR_SaveList ¿¡ ÀúÀåÇÏÁö ¾Ê°í Á¾·áÇÑ´Ù. if(AL_WrapStartLen<1 && AL_WrapCloseLen<1) { ZtCMainChars::SplitToList( ARR_SaveList , APC_OriginChar , APC_SearchChar , AL_OriginLen , AL_SearchLen , AB_DoEndWhenNoMatch , AB_DoAppendEachLink /*/////////*/ ); return ARR_SaveList; } if(AL_OriginLen<1 || AL_OriginLen0 && ( VL_PrevSizeGetData(). append(APC_OriginChar+VL_SearchPos, VL_SearchLen) ; } else { ARR_SaveList.AddTailDefault()->GetData().Invalidate(). append(APC_OriginChar+VL_SearchPos, VL_SearchLen) ; }/* else*/ }/* if(VL_SearchLen>0 && ( VL_PrevSize0) { if(AB_DoAppendEachLink==true) { ARR_SaveList.AddTailDefault()->GetData(). append(APC_OriginChar+VL_SearchPos, VL_SearchLen) ; } else { ARR_SaveList.AddTailDefault()->GetData().Invalidate(). append(APC_OriginChar+VL_SearchPos, VL_SearchLen) ; }/* else*/ }/* if(VL_SearchLen>0)*/ VL_SearchLen=0; VL_SearchPos=VL_FindPos+AL_SearchLen; }/* while(VL_SearchPos static TStringList& SplitToListWrap( ///////////////////////////// TStringList& ARR_SaveList , TypeCharC* APC_OriginChar , TypeCharC* APC_SearchChar , TypeCharC* APC_WrapStart , TypeCharC* APC_WrapClose , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TypeLength AL_WrapStartLen , TypeLength AL_WrapCloseLen , bool AB_DoEndWhenNoMatch=true , bool AB_DoAppendEachLink=false ////////////// ) ///////////////////////////////////////////////*/ template ////////////////// static TStringList& SplitToListWrap( TStringList& ARR_SaveList , const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , const TTyChars& AR_CCharsWrapStart, const TTyChars& AR_CCharsWrapClose, bool AB_DoEndWhenNoMatch=true , bool AB_DoAppendEachLink=false /*//////////*/ ) ///////////////////////////////////////////////*/ { return ZtCMainChars::SplitToListWrap( ARR_SaveList, AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsWrapStart.data(), AR_CCharsWrapClose.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), AR_CCharsWrapStart.size(), AR_CCharsWrapClose.size(), AB_DoEndWhenNoMatch, AB_DoAppendEachLink /*//////////*/ ); }/* template ////////////////// static TStringList& SplitToListWrap( TStringList& ARR_SaveList , const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsSearch , const TTyChars& AR_CCharsWrapStart, const TTyChars& AR_CCharsWrapClose, bool AB_DoEndWhenNoMatch=true , bool AB_DoAppendEachLink=false ////////////// ) ///////////////////////////////////////////////*/ template //////////// static TStringList& SplitToListWrap2( TStringList& ARR_CStrListSave, TypeCharC* APC_Origin , TypeCharC* APC_Escape , TypeCharC* APC_WrapStart , TypeCharC* APC_WrapClose , TypeLength AL_OriginLen , TypeLength AL_EscapeLen , TypeLength AL_WrapStartLen , TypeLength AL_WrapCloseLen , TStringArray& ARA_SearchArray /*//////////*/ ) ///////////////////////////////////////////////*/ { typedef typename TStringList::TypeData CStringData; CStringData* VP_CStringStart=0; long VL_SearchPos= 0 ; long VL_FindPos =-1 ; long VL_PrevSize =ARR_CStrListSave.size(); while(VL_SearchPosVL_PrevSize) { ARR_CStrListSave.AddTailDefault()->GetData(). append(APC_Origin+VL_SearchPos, AL_OriginLen-VL_SearchPos) ; }/* if(ARR_CStrListSave.size()>VL_PrevSize)*/ return ARR_CStrListSave; }/* if(VL_FindPos<0)*/ if(VL_FindPos>0) { ARR_CStrListSave.AddTailDefault()->GetData()(APC_Origin+VL_SearchPos, VL_FindPos); ARR_CStrListSave.AddTailDefault()->GetData()=(*VP_CStringStart); }/* if(VL_FindPos>0)*/ VL_SearchPos+=VL_FindPos+VP_CStringStart->size(); }/* while(VL_SearchPos //////////// static TStringList& SplitToListWrap2( TStringList& ARR_CStrListSave, TypeCharC* APC_Origin , TypeCharC* APC_Escape , TypeCharC* APC_WrapStart , TypeCharC* APC_WrapClose , TypeLength AL_OriginLen , TypeLength AL_EscapeLen , TypeLength AL_WrapStartLen , TypeLength AL_WrapCloseLen , TStringArray& ARA_SearchArray ////////////// ) ///////////////////////////////////////////////*/ template TStringList& SplitToListWrap2( TStringList& ARR_CStrListSave , const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsEscape , const TTyChars& AR_CCharsWrapStart, const TTyChars& AR_CCharsWrapClose, TStringArray& ARA_SearchArray /*//////////*/ ) ///////////////////////////////////////////////////*/ { return ZtCMainChars::SplitToListWrap2( RR(ARR_CStrListSave), AR_CCharsOrigin.data(), AR_CCharsEscape.data(), AR_CCharsWrapStart.data(), AR_CCharsWrapClose.data(), AR_CCharsOrigin.size(), AR_CCharsEscape.size(), AR_CCharsWrapStart.size(), AR_CCharsWrapClose.size(), ARA_SearchArray /*//////////*/ ); }/* template TStringList& SplitToListWrap2( TStringList& ARR_CStrListSave , const TTyChars& AR_CCharsOrigin , const TTyChars& AR_CCharsEscape , const TTyChars& AR_CCharsWrapStart, const TTyChars& AR_CCharsWrapClose, TStringArray& ARA_SearchArray ////////////// ) ///////////////////////////////////////////////////*/ /* APC_OriginChar ¿¡¼­ APC_Search À» ã¾ÒÀ¸¸é ãÀº Á¤º¸¸¦ TSearchInfoList ¿¡ ÀÔ·ÂÇÑ´Ù. TSearchPosList ´Â Á¤¼ö ÄÁÅ×À̳ÊÀÌ´Ù. */ template static void MakeInfoList( TypeCharC* APC_OriginChar, TypeCharC* APC_Search , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TypeLength AL_StartPos , TSearchPosList& ARR_InfoList /*//////////*/ ) ////////////////////////////////////////*/ { if(AL_OriginLen<1 || AL_SearchLen<1 || AL_OriginLen static void MakeInfoList( TypeCharC* APC_OriginChar, TypeCharC* APC_Search , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TypeLength AL_StartPos , TSearchPosList& ARR_InfoList ////////////// ) ////////////////////////////////////////*/ template static void MakeInfoList ( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength AL_StartPos , TSearchPosList& ARR_InfoList ) ///////////////////////////////////////////////////////////////////////////// { ZtCMainChars::MakeInfoList( AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), AL_StartPos, RR(ARR_InfoList) /*//////////*/ ); }/* template static void MakeInfoList ( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength AL_StartPos , TSearchPosList& ARR_InfoList ) ///////////////////////////////////////////////////////////////////////////*/ /*///////////////////////////////////////////////////////////////////////// ¡á TSearchInfo Ŭ·¡½º´Â (const TypeChar* StartPos, long Pos, long Length) ÀÇ Àμö¸¦ °®´Â »ý¼ºÀÚ¸¦ °¡Á®¾ß ÇÑ´Ù. ¡á void MakeInfoList ÇÔ¼ö¿Í´Â ´Þ¸® APC_Search ¹®ÀÚ¿­·Î ³ª´µ¾îÁö´Â °¢ ±¸°£ÀÇ ¹®ÀÚ¿­ Á¤º¸ ¸®½ºÆ®¸¦ ¾ò´Â´Ù. /////////////////////////////////////////////////////////////////////////*/ template static void MakeSplitInfoList( TypeCharC* APC_OriginChar, TypeCharC* APC_Search , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TypeLength AL_StartPos , TSearchInfoList& ARR_InfoList /*//////////*/ ) //////////////////////////////////////////////*/ { typedef typename TSearchInfoList::TypeData ZCSearchInfo; if(AL_OriginLen<1 || AL_SearchLen<1) return ; TypeCharC* VP_Origin=APC_OriginChar ; TypeLength i =AL_StartPos; TypeLength VL_PrevPos=AL_StartPos; TypeLength VL_Loop =AL_OriginLen-AL_SearchLen ; while(i<=VL_Loop) { TypeLength j=0; for(; j0) { ZCSearchInfo VO_CSearchInfo( VP_Origin+VL_PrevPos, VL_PrevPos, i-VL_PrevPos); ARR_InfoList.push_back(VO_CSearchInfo); }/* if(i-VL_PrevPos>0)*/ VL_PrevPos = i += AL_SearchLen ; }/* while(i<=VL_Loop)*/ if(VL_PrevPos static void MakeSplitInfoList( TypeCharC* APC_OriginChar, TypeCharC* APC_Search , TypeLength AL_OriginLen , TypeLength AL_SearchLen , TypeLength AL_StartPos , TSearchInfoList& ARR_InfoList ////////////// ) //////////////////////////////////////////////*/ template static void MakeSplitInfoList ( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength AL_StartPos , TSearchInfoList& ARR_InfoList ) { ZtCMainChars::MakeSplitInfoList( AR_CCharsOrigin.data(), AR_CCharsSearch.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.size(), AL_StartPos, RR(ARR_InfoList) /*//////////*/ ); }/* template static void MakeSplitInfoList ( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, TypeLength AL_StartPos , TSearchInfoList& ARR_InfoList ) /////////////////////////////////////////////////////////////////////////////////*/ // APC_Search ¹®ÀÚ¿­À» ã¾Æ¼­, ÀÖÀ¸¸é ±× ¹®ÀÚ¿­ ±æÀ̱îÁö ±¸ÇÑ´Ù. static TypeLength GetLength_Find( TypeCharC* APC_Origin, TypeLength AL_OriginLen, TypeCharC* APC_Search, TypeLength AL_SearchLen /*//////////*/ ) { if(AL_OriginLen<1 || AL_SearchLen<1 || AL_OriginLen=AL_SearchLen TypeLength j=0; TypeLength VL_MaxLoop=AL_OriginLen-AL_SearchLen; TypeCharC* VP_Origin =APC_Origin; TypeCharC* VP_Left ; TypeCharC* VP_Right; for(TypeLength i=0; i<=VL_MaxLoop; ++i) { VP_Left =VP_Origin; VP_Right=APC_Search ; for(j=0; j=AL_SearchLen) return i+AL_SearchLen; ++VP_Origin; ///////////////////////////// }/* for(TypeLength i=0; i<=VL_MaxLoop; ++i)*/ return 0; }/* static TypeLength GetLength_Find( TypeCharC* APC_Origin, TypeLength AL_OriginLen, TypeCharC* APC_Search, TypeLength AL_SearchLen ////////////// ) */ template static TypeLength GetLength_Find(const TTyChars& CCharsOrigin, const TTyChars& CCharsSearch) { return ZtCMainChars::GetLength_Find( CCharsOrigin.data(), CCharsOrigin.size(), CCharsSearch.data(), CCharsSearch.size() /*//////////*/ ); }/* template static TypeLength GetLength_Find(const TTyChars& CCharsOrigin, const TTyChars& CCharsSearch) */ /* ARA_SearchArray ÀÇ ¾Õ ¿ø¼ÒÀÎ ¹®ÀÚ¿­ºÎÅÍ Ã£±â ½ÃÀÛÇϹǷÎ, ¸ÕÀú ã¾Æ¾ß ÇÏ´Â ¹®ÀÚ¿­Àº ARA_SearchArray ÀÇ ¾Õ¿¡ ÀÖ´Â °ÍÀÌ ÁÁ´Ù. */ template static TypeLength GetLength_Find2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) { TypeLength VL_ArrSize=ARA_SearchArray.size(); TypeLength VL_NowSize; if(VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i0) return VL_NowSize; ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); }/* for(TypeLength i=0; i static TypeLength GetLength_Find2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_Find2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_Find2(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_Find2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ // APC_Search ¹®ÀÚ¿­ÀÇ ¹®ÀÚ Áß¿¡ Çϳª¶óµµ ÀÏÄ¡ÇÏ¸é ±× ±æÀ̱îÁö ±¸Çؿ´Ù. static TypeLength GetLength_FindChar( TypeCharC* APC_Origin, TypeLength AL_OriginLen, TypeCharC* APC_Search, TypeLength AL_SearchLen /*//////////*/ ) { if(AL_OriginLen<1 || AL_SearchLen<1) return 0; TypeLength j =0 ; TypeCharC* VP_Origin =APC_Origin; TypeCharC* VP_Left ; TypeCharC* VP_Right; for(TypeLength i=0; i static TypeLength GetLength_FindChar(const TTyChars& CCharsOrigin, const TTyChars& CCharsSearch) { return ZtCMainChars::GetLength_FindChar( CCharsOrigin.data(), CCharsOrigin.size(), CCharsSearch.data(), CCharsSearch.size() /*//////////*/ ); }/* template static TypeLength GetLength_FindChar(const TTyChars& CCharsOrigin, const TTyChars& CCharsSearch) */ template static TypeLength GetLength_FindChar2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) { TypeLength VL_ArrSize=ARA_SearchArray.size(); TypeLength VL_NowSize=0; TypeLength VL_SumSize=0; if(VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i static TypeLength GetLength_FindChar2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_FindChar2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_FindChar2(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_FindChar2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ /* APC_Search ¹®ÀÚ¿­À» ã¾Æ¼­, ÀÖÀ¸¸é ±× ¹®ÀÚ¿­ ±æÀ̱îÁö ±¸ÇÑ´Ù. ´Ü ã´Â ¹®ÀÚ¿­ ¾Õ¿¡ APC_Escape ¹®ÀÚ¿­ÀÌ ¾ø¾î¾ß ÇÑ´Ù. */ static TypeLength GetLength_FindEscape( TypeCharC* APC_Origin, TypeLength AL_OriginLen, TypeCharC* APC_Search, TypeLength AL_SearchLen, TypeCharC* APC_Escape, TypeLength AL_EscapeLen /*//////////*/ ) { if(AL_EscapeLen<1) return ZtCMainChars:: GetLength_Find(APC_Origin, AL_OriginLen, APC_Search,AL_SearchLen); if(AL_OriginLen<1 || AL_SearchLen<1 || AL_OriginLen static TypeLength GetLength_FindEscape( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, const TTyChars& AR_CCharsEscape) { return ZtCMainChars::GetLength_FindEscape( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.data(), AR_CCharsSearch.size(), AR_CCharsEscape.data(), AR_CCharsEscape.size() /*//////////*/ ) ; }/* template static TypeLength GetLength_FindEscape( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch, const TTyChars& AR_CCharsEscape) */ template static TypeLength GetLength_FindEscape2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) { /* ARA_SearchArray ÀÇ Ã¹¹øÂ° ¿ø¼Ò¸¦ escape ¹®ÀÚ¿­·Î ¾´´Ù. µû¶ó¼­ ARA_SearchArray ÀÇ ¹è¿­ °¹¼ö´Â 2 ÀÌ»óÀ̾î¾ß ÇÑ´Ù. */ const int CI_MinArrSize=2; TypeLength VL_ArrSize=ARA_SearchArray.size(); TypeLength VL_NowSize; if(VL_ArrSize0) return VL_NowSize; ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); }/* for(TypeLength i=1; i static TypeLength GetLength_FindEscape2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_FindEscape2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_FindEscape2(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_FindEscape2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_FindSerial( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { /*////////////////////////////////////////////////// ¡á ZtCMainChars::GetLength_Find() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿©, ARA_SearchArray ÀÇ 1¹ø ¿ø¼ÒºÎÅÍ ¼ø¼­´ë·Î ã´Â´Ù. -- 2011-08-09 03:44:00 //////////////////////////////////////////////////*/ TypeLength VL_ArrSize=ARA_SearchArray.size(); TypeLength VL_NowSize=0; TypeLength VL_SumSize=0; if(VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i static TypeLength GetLength_FindSerial( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_FindSerial(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_FindSerial(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_FindSerial(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ static TypeLength GetLength_FindSerialChar( TypeCharC* APC_Origin, TypeLength AL_OriginLen, TypeCharC* APC_Search, TypeLength AL_SearchLen /*//////////*/ ) { // APC_Search ÀÇ °¢ ¹®ÀÚ°¡ APC_Origin ¿¡ ¼ø¼­´ë·Î ÀÖ¾î¾ß ÇÑ´Ù. if(AL_OriginLen<1 || AL_SearchLen<1 || AL_OriginLen static TypeLength GetLength_FindSerialChar(const TTyChars& CCharsOrigin, const TTyChars& CCharsSearch) { return ZtCMainChars::GetLength_FindSerialChar( CCharsOrigin.data(), CCharsOrigin.size(), CCharsSearch.data(), CCharsSearch.size() /*//////////*/ ); }/* template static TypeLength GetLength_FindSerialChar(const TTyChars& CCharsOrigin, const TTyChars& CCharsSearch) */ template static TypeLength GetLength_FindSerialChar2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) { TypeLength VL_ArrSize=ARA_SearchArray.size(); TypeLength VL_NowSize=0; TypeLength VL_SumSize=0; if(VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i static TypeLength GetLength_FindSerialChar2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_FindSerialChar2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_FindSerialChar2(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_FindSerialChar2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_StartFind( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { /*////////////////////////////////////////////////// ¡á ARA_SearchArray ÀÇ 1¹ø ¿ø¼ÒºÎÅÍ ½ÃÀÛÇϸé, ±× ´ÙÀ½ºÎÅÍ´Â ZtCMainChars::GetLength_Find() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿©, ARA_SearchArray ÀÇ 2¹ø ¿ø¼ÒºÎÅÍ ¼ø¼­´ë·Î ã´Â´Ù. -- 2011-08-09 04:19:00 //////////////////////////////////////////////////*/ TypeLength VL_ArrSize=ARA_SearchArray.size(); TypeLength VL_NowSize=0; TypeLength VL_SumSize=0; if(VL_ArrSize<2) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); const bool CB_IsOK=ZtCMainChars::DoStart( APC_Origin, ARA_SearchArray.ItD(CI_IterEasyID).data(), AL_Length , ARA_SearchArray.ItD(CI_IterEasyID).size() /*/////////*/ ); if(!CB_IsOK) return 0; VL_SumSize=ARA_SearchArray.ItD(CI_IterEasyID).size(); ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); for(TypeLength i=1; i static TypeLength GetLength_StartFind( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_StartFind(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_StartFind(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_StartFind(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ // GetLength_FindSerialChar() ¿Í ºñ½ÁÇϳª, 1 ¹ø ¿ø¼ÒÀÇ 1 ¹ø ¹®ÀÚ·Î ½ÃÀÛÇØ¾ß ÇÏ´Â Á¡ÀÌ ´Ù¸£´Ù. static TypeLength GetLength_StartFindChar( TypeCharC* APC_Origin, TypeLength AL_OriginLen, TypeCharC* APC_Search, TypeLength AL_SearchLen /*//////////*/ ) { // APC_Search ÀÇ °¢ ¹®ÀÚ°¡ APC_Origin ¿¡ ¼ø¼­´ë·Î ÀÖ¾î¾ß ÇÑ´Ù. const bool CB_IsBad = ( AL_OriginLen<1 || AL_SearchLen<1 || AL_OriginLen static TypeLength GetLength_StartFindChar(const TTyChars& CCharsOrigin, const TTyChars& CCharsSearch) { return ZtCMainChars::GetLength_StartFindChar( CCharsOrigin.data(), CCharsOrigin.size(), CCharsSearch.data(), CCharsSearch.size() /*//////////*/ ); }/* template static TypeLength GetLength_StartFindChar(const TTyChars& CCharsOrigin, const TTyChars& CCharsSearch) */ template static TypeLength GetLength_StartFindChar2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) { TypeLength VL_ArrSize=ARA_SearchArray.size(); TypeLength VL_NowSize=0; TypeLength VL_SumSize=0; if(VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i static TypeLength GetLength_StartFindChar2( TypeCharC* APC_Origin, TypeLength AL_OriginLen, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_StartFindChar2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_FindSerialChar2(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_StartFindChar2(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_Permit( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { TypeLength VL_ArrSize=ARA_SearchArray.size(); if(AL_Length<1 || VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i static TypeLength GetLength_Permit( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_Permit(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_Permit(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray) ; }/* template static TypeLength GetLength_Permit(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ /*////////////////////////////////////////////////////////////////////// ¡á TStringArray ¹è¿­(ȤÀº ¾î¶² containter)ÀÇ °¢ Ȧ¼ö ¹øÂ° ¿ø¼Ò ÀÌ»óÀÌ°í ±× ´ÙÀ½ ¿ø¼Ò ÀÌÇÏÀÎ µ¥ÀÌŸ¸¦ ±¸ÇÑ´Ù. µû¶ó¼­ TStringArray ¹è¿­¿ø¼Ò¼ö/2 ¹ø ¼øÈ¯ÇÑ´Ù. ãÀº µ¥ÀÌŸÀÇ ±æÀÌ´Â ±æÀ̰¡ ÀÛÀº ÂÊÀ» ¹ÝȯÇÑ´Ù. ¿¹¸¦ µé¾î ¾î¶² µ¥ÀÌŸ °¡ "ab" ¿Í "def" »çÀÌ¿¡ ÀÖ´Ù¸é ãÀº ±æÀÌ´Â ÀÛÀº ÂÊ "ab" ¿¡ ¸ÂÃß¾î 2 ·Î ÇÑ´Ù. //////////////////////////////////////////////////////////////////////*/ template static TypeLength GetLength_PermitRange( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { TypeLength VL_ArrSize=ARA_SearchArray.size()/2; TypeLength VL_NowSize=0; TypeLength VL_Result =0; TypeLength i =0; if(AL_Length<1 || VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(; i0) { VL_NowSize = ARA_SearchArray.ItD(CI_IterEasyID).size()>AL_Length ? AL_Length : ARA_SearchArray.ItD(CI_IterEasyID).size() ; if (VL_Result==0 ) VL_Result=VL_NowSize; else if(VL_Result> VL_NowSize) VL_Result=VL_NowSize; if(ZtCMainChars::Minus(APC_Origin, ARA_SearchArray.ItD(CI_IterEasyID).data(), VL_NowSize, ARA_SearchArray.ItD(CI_IterEasyID).size())<0) { ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); continue; // ÃÖ¼Ò ¹üÀ§¸¦ ¹þ¾î³µ´Ù¸é }/* if(ZtCMainChars::Minus(APC_Origin, ARA_SearchArray.ItD(CI_IterEasyID).data(), VL_NowSize, ARA_SearchArray.ItD(CI_IterEasyID).size())<0)*/ }/* if(ARA_SearchArray.ItD(CI_IterEasyID).size()>0)*/ ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); if(ARA_SearchArray.ItD(CI_IterEasyID).size()>0) { VL_NowSize = ARA_SearchArray.ItD(CI_IterEasyID).size()>AL_Length ? AL_Length : ARA_SearchArray.ItD(CI_IterEasyID).size() ; if(VL_Result>VL_NowSize) VL_Result=VL_NowSize; if(ZtCMainChars::Minus(APC_Origin, ARA_SearchArray.ItD(CI_IterEasyID).data(), VL_NowSize, ARA_SearchArray.ItD(CI_IterEasyID).size())>0) { ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); continue; // ÃÖ´ë ¹üÀ§¸¦ ¹þ¾î³µ´Ù¸é }/* if(ZtCMainChars::Minus(APC_Origin, ARA_SearchArray.ItD(CI_IterEasyID).data(), VL_NowSize, ARA_SearchArray.ItD(CI_IterEasyID).size())>0)*/ break; }/* if(ARA_SearchArray.ItD(CI_IterEasyID).size()>0)*/ ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); }/* for(; i=VL_ArrSize) return 0; return VL_Result; }/* template static TypeLength GetLength_PermitRange( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_PermitRange(const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_PermitRange(AR_CChars.data(), AR_CChars.size(), ARA_SearchArray); }/* template static TypeLength GetLength_PermitRange(const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray) */ static TypeLength GetLength_PermitChar( TypeCharC* APC_Origin, TypeLength AL_Length, TypeCharC* APC_Permit, TypeLength AL_PermitLength) { if(AL_Length<1 || AL_PermitLength<1) return 0; TypeCharC* VPC_Origin=APC_Origin; TypeCharC* VPC_Permit=APC_Permit; TypeLength VL_SearchLen=0; TypeLength j =0; for(TypeLength i=0; i=AL_PermitLength) return VL_SearchLen; VPC_Origin++; VPC_Permit=APC_Permit; j=0; }/* for(TypeLength i=0; i static TypeLength GetLength_PermitChar(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) { return ZtCMainChars::GetLength_PermitChar( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.data(), AR_CCharsSearch.size()); }/* template static TypeLength GetLength_PermitChar(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */ static TypeLength GetLength_PermitCharRange( TypeCharC* APC_Origin, TypeLength AL_Length, TypeCharC* APC_Permit, TypeLength AL_PermitLength) { /*//////////////////////////////////////////////// ¡á AL_PermitLength Àº 2 ÀÇ ¹è¼ö·Î¼­, 2°³ÀÇ ¹®ÀÚ°¡, Çã¿ëÇÏ´Â ¹®ÀÚÀÇ ¹üÀ§¸¦ ³ªÅ¸³½´Ù. -- 2011-08-12 00:53:00 ////////////////////////////////////////////////*/ if(AL_Length<1 || AL_PermitLength<2) return 0; TypeCharC* VPC_Origin=APC_Origin; TypeCharC* VPC_Permit=APC_Permit; TypeLength VL_SearchLen =0; TypeLength VL_PermitLength=AL_PermitLength/2; TypeLength j =0; for(TypeLength i=0;i=*VPC_Permit && *VPC_Origin<=*(VPC_Permit+1)) { ++VL_SearchLen; break; }/* if(*VPC_Origin>=*VPC_Permit && *VPC_Origin<=*(VPC_Permit+1))*/ VPC_Permit+=2; }/* for(; j=VL_PermitLength) return VL_SearchLen; VPC_Origin++; VPC_Permit=APC_Permit; j=0; }/* for(TypeLength i=0; i static TypeLength GetLength_PermitCharRange(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) { return ZtCMainChars::GetLength_PermitCharRange( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.data(), AR_CCharsSearch.size()); }/* template static TypeLength GetLength_PermitCharRange(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */ template static TypeLength GetLength_PermitCharRange2( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { // ARA_SearchArray ÀÇ °¢ ¹®ÀÚ¿­ ¿ø¼Ò¸¦ ¼ø¼­´ë·Î ã´Â´Ù. TypeLength VL_ArrSize =ARA_SearchArray.size(); TypeLength VL_SearchNow=0; TypeLength VL_SearchSum=0; if(AL_Length<1 || VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i static TypeLength GetLength_PermitCharRange2( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_PermitCharRange2( const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_PermitCharRange2( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray ); }/* template static TypeLength GetLength_PermitCharRange2( const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_PermitChar2( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { // ARA_SearchArray ÀÇ °¢ ¹®ÀÚ¿­ ¿ø¼Ò¸¦ ¼ø¼­´ë·Î ã´Â´Ù. TypeLength VL_ArrSize =ARA_SearchArray.size(); TypeLength VL_SearchNow=0; TypeLength VL_SearchSum=0; if(AL_Length<1 || VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i static TypeLength GetLength_PermitChar2( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray)*/ template static TypeLength GetLength_PermitChar2( const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_PermitChar2( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_PermitChar2( const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ /* ƯÁ¤ ¹®ÀÚ¿­ÀÌ Æ¯Á¤ ¹®ÀÚ¿­À» °¡Áö°í ÀÖÁö ¾ÊÀ¸¸é, ÇØ´ç ±æÀ̸¦ 1 ·Î ¹ÝȯÇÑ´Ù. ±× ´ÙÀ½ ¹®ÀÚºÎÅÍ´Â 'ºÒÇã¿ë ¹®ÀÚ¿­'ÀÏ ¼ö Àֱ⠶§¹®ÀÌ´Ù. */ template static TypeLength GetLength_NoPermit( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { TypeLength VL_ArrSize=ARA_SearchArray.size(); TypeLength VL_NowSize=0; if(AL_Length<1 || VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; iARA_SearchArray.ItD(CI_IterEasyID).size() ? ARA_SearchArray.ItD(CI_IterEasyID).size() : AL_Length ); const bool CB_IsOK=ZtCMainChars::DoStart( APC_Origin, ARA_SearchArray.ItD(CI_IterEasyID).data(), AL_Length , ARA_SearchArray.ItD(CI_IterEasyID).size() /*//////////*/ ); if(CB_IsOK) return 0; ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); }/* for(TypeLength i=0; i static TypeLength GetLength_NoPermit( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_NoPermit(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_NoPermit(AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_NoPermit(const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_NoPermitRange( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { TypeLength VL_ArrSize=ARA_SearchArray.size()/2; TypeLength VL_NowSize=0; TypeLength i =0; int VI_Compare=0; if(AL_Length<1 || VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(; i0) { VL_NowSize= ARA_SearchArray.ItD(CI_IterEasyID).size()>AL_Length ? AL_Length : ARA_SearchArray.ItD(CI_IterEasyID).size() ; VI_Compare=ZtCMainChars::Minus( APC_Origin, ARA_SearchArray.ItD(CI_IterEasyID).data(), VL_NowSize, ARA_SearchArray.ItD(CI_IterEasyID).size() ); }/* if(ARA_SearchArray.ItD(CI_IterEasyID).size()>0)*/ ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); if(VI_Compare>=0 && ARA_SearchArray.ItD(CI_IterEasyID).size()>0) { VL_NowSize = ( ARA_SearchArray.ItD(CI_IterEasyID).size()>AL_Length ? AL_Length : ARA_SearchArray.ItD(CI_IterEasyID).size() ) ; if(ZtCMainChars::Minus( APC_Origin, ARA_SearchArray.ItD(CI_IterEasyID).data(), VL_NowSize, ARA_SearchArray.ItD(CI_IterEasyID).size())<=0) { return 0; }/* if(ZtCMainChars::Minus( APC_Origin, ARA_SearchArray.ItD(CI_IterEasyID).data(), VL_NowSize, ARA_SearchArray.ItD(CI_IterEasyID).size())<=0) */ }/* if(VI_Compare>=0 && ARA_SearchArray.ItD(CI_IterEasyID).size()>0)*/ ARA_SearchArray.MoveNextIter(RR(CI_IterEasyID)); }/* for(; i static TypeLength GetLength_NoPermitRange( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_NoPermitRange( const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_NoPermitRange( AR_CChars.data(), AR_CChars.size(), ARA_SearchArray ); }/* template static TypeLength GetLength_NoPermitRange( const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray) */ static TypeLength GetLength_NoPermitChar ( TypeCharC* APC_Origin , TypeLength AL_Length, TypeCharC* APC_NoPermit, TypeLength AL_NoPermitLength ) //////////////////////////////////////// { if(AL_Length<1 || AL_NoPermitLength<1) return 0; TypeCharC* VPC_Origin =APC_Origin ; TypeCharC* VPC_NoPermit=APC_NoPermit; TypeLength VL_SearchLen=0; TypeLength j =0; for(TypeLength i=0; i static TypeLength GetLength_NoPermitChar( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) { return ZtCMainChars::GetLength_NoPermitChar( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.data(), AR_CCharsSearch.size()); }/* template static TypeLength GetLength_PermitChar( const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */ template static TypeLength GetLength_NoPermitChar2( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { // ARA_SearchArray ÀÇ °¢ ¹®ÀÚ¿­ ¿ø¼Ò¸¦ ¼ø¼­´ë·Î ã´Â´Ù. TypeLength VL_ArrSize =ARA_SearchArray.size(); TypeLength VL_SearchNow=0; TypeLength VL_SearchSum=0; if(AL_Length<1 || VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i static TypeLength GetLength_NoPermitChar2( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_NoPermitChar2( const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_NoPermitChar2( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_NoPermitChar2( const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ static TypeLength GetLength_NoPermitCharRange( TypeCharC* APC_Origin, TypeLength AL_Length, TypeCharC* APC_Permit, TypeLength AL_PermitLength) { /*//////////////////////////////////////////////// ¡á AL_PermitLength Àº 2 ÀÇ ¹è¼ö·Î¼­, 2°³ÀÇ ¹®ÀÚ°¡, Çã¿ëÇÏÁö ¾Ê´Â ¹®ÀÚÀÇ ¹üÀ§¸¦ ³ªÅ¸³½´Ù. -- 2011-08-12 00:53:00 ////////////////////////////////////////////////*/ if(AL_Length<1 || AL_PermitLength<2) return 0; TypeCharC* VPC_Origin=APC_Origin; TypeCharC* VPC_Permit=APC_Permit; TypeLength VL_SearchLen =0; TypeLength VL_PermitLength=AL_PermitLength/2; TypeLength j =0; for(TypeLength i=0; i=*VPC_Permit && *VPC_Origin<=*(VPC_Permit+1)) { ++VL_SearchLen; break; }/* if(*VPC_Origin>=*VPC_Permit && *VPC_Origin<=*(VPC_Permit+1))*/ VPC_Permit+=2; }/* for(; j static TypeLength GetLength_NoPermitCharRange(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) { return ZtCMainChars::GetLength_NoPermitCharRange( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), AR_CCharsSearch.data(), AR_CCharsSearch.size()); }/* template static TypeLength GetLength_NoPermitCharRange(const TTyChars& AR_CCharsOrigin, const TTyChars& AR_CCharsSearch) */ template static TypeLength GetLength_NoPermitCharRange2( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray) { // ARA_SearchArray ÀÇ °¢ ¹®ÀÚ¿­ ¿ø¼Ò¸¦ ¼ø¼­´ë·Î ã´Â´Ù. TypeLength VL_ArrSize =ARA_SearchArray.size(); TypeLength VL_SearchNow=0; TypeLength VL_SearchSum=0; if(AL_Length<1 || VL_ArrSize<1) return 0; IterEasyIDc CI_IterEasyID(ARA_SearchArray.GetHeadIterEasyID()); for(TypeLength i=0; i static TypeLength GetLength_NoPermitCharRange2( TypeCharC* APC_Origin, TypeLength AL_Length, const TStringArray& ARA_SearchArray)*/ template static TypeLength GetLength_NoPermitCharRange2( const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) { return ZtCMainChars::GetLength_NoPermitCharRange2( AR_CCharsOrigin.data(), AR_CCharsOrigin.size(), ARA_SearchArray); }/* template static TypeLength GetLength_NoPermitCharRange2( const TTyChars& AR_CCharsOrigin, const TStringArray& ARA_SearchArray) */ template static TypeLength GetLength_Repeat_Find ( int AI_RepeatMin , int AI_RepeatMax , TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*###################################################################*/ { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_Find2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); //////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do //// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_Find2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); //////////////////////////////////////////////////////////// // ÇöÀç VI_RepeatCnt AI_RepeatMax) return 0; // 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'¸¦ ³ÑÀ¸¸é 0 À» ¹Ýȯ. } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; // 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'¿¡ À̸£¸é Áï½Ã ¸®ÅÏ. }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1 */ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_Find ( int AI_RepeatMin , int AI_RepeatMax , TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) #####################################################################*/ template static TypeLength GetLength_Repeat_Find( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_Find( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_Find( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_FindChar( /////////////////////////////// int AI_RepeatMin , int AI_RepeatMax , TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over /*/////////*/ ) { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_FindChar2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); //////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_FindChar2 ( APC_Origin+VL_LengthAll, AL_Length -VL_LengthAll, ARA_SearchArray ); //////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_FindChar( /////////////////////////////// int AI_RepeatMin , int AI_RepeatMax , TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over /?/////////// ) */ template static TypeLength GetLength_Repeat_FindChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_FindChar( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_FindChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_FindEscape ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*#########################################################################*/ { /* ARA_SearchArray ÀÇ Ã¹¹øÂ° ¿ø¼Ò¸¦ escape ¹®ÀÚ¿­·Î ¾´´Ù. µû¶ó¼­ ARA_SearchArray ÀÇ ¹è¿­ °¹¼ö´Â 2 ÀÌ»óÀ̾î¾ß ÇÑ´Ù. ARA_SearchArray ÀÇ ¾Õ ¿ø¼ÒÀÎ ¹®ÀÚ¿­ºÎÅÍ Ã£±â ½ÃÀÛÇϹǷΠã´Â ¹®ÀÚ¿­ ¼ø¼­¸¦ Àß ÁöÁ¤ÇØ¾ß ÇÑ´Ù. */ int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_FindEscape2( /////////// APC_Origin+VL_LengthAll , AL_Length -VL_LengthAll , ARA_SearchArray /*/////////*/ ); /////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_FindEscape2( /////////// APC_Origin+VL_LengthAll , AL_Length -VL_LengthAll , ARA_SearchArray /*//////////*/ ); ////////////////////////////// // ÇöÀç VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_FindEscape ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ###########################################################################*/ template static TypeLength GetLength_Repeat_FindEscape( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_FindEscape( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_FindEscape( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_FindSerial ( int AI_RepeatMin , int AI_RepeatMax , TypeCharC* APC_Origin , TypeLength AL_Length, const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ///////////////////////////////////////////////////////////////////////////// { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_FindSerial( //////////// APC_Origin+VL_LengthAll , AL_Length -VL_LengthAll , ARA_SearchArray /*/////////*/ ); /////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_FindSerial( //////////// APC_Origin+VL_LengthAll , AL_Length -VL_LengthAll , ARA_SearchArray /*//////////*/ ); ////////////////////////////// // ÇöÀç VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_FindSerial ( int AI_RepeatMin , int AI_RepeatMax , TypeCharC* APC_Origin , TypeLength AL_Length, const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ///////////////////////////////////////////////////////////////////////////*/ template static TypeLength GetLength_Repeat_FindSerial( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_FindSerial(AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_FindSerial( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_FindSerialChar ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*#############################################################################*/ { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_FindSerialChar2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ////////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_FindSerialChar2 ( APC_Origin+VL_LengthAll, AL_Length -VL_LengthAll, ARA_SearchArray ); ////////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_FindSerialChar ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ###############################################################################*/ template static TypeLength GetLength_Repeat_FindSerialChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_FindSerialChar( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_FindSerialChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_StartFind ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*########################################################################*/ { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_StartFind( //////////// APC_Origin+VL_LengthAll , AL_Length -VL_LengthAll , ARA_SearchArray /*/////////*/ ); ////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_StartFind( //////////// APC_Origin+VL_LengthAll , AL_Length -VL_LengthAll , ARA_SearchArray /*//////////*/ ); ///////////////////////////// // ÇöÀç VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_StartFind ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ##########################################################################*/ template static TypeLength GetLength_Repeat_StartFind( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_StartFind( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_StartFind( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_StartFindChar ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*#############################################################################*/ { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_StartFindChar2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ///////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_StartFindChar2 ( APC_Origin+VL_LengthAll, AL_Length -VL_LengthAll, ARA_SearchArray ); ///////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_StartFindChar ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ###############################################################################*/ template static TypeLength GetLength_Repeat_StartFindChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_StartFindChar( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_StartFindChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_Permit ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*#####################################################################*/ { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_Permit ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ///////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_Permit ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ///////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_Permit ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ///////////////////////////////////////////////////////////////////////*/ template static TypeLength GetLength_Repeat_Permit( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_Permit( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_Permit( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_PermitRange ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ////////////////////////////////////////////////////////////////////////////// { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº ÃÖ´ë ¹Ýº¹ Ƚ¼öÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_PermitRange ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_PermitRange ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_PermitRange ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ////////////////////////////////////////////////////////////////////////////*/ template static TypeLength GetLength_Repeat_PermitRange( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_PermitRange( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_PermitRange( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_PermitChar ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*#########################################################################*/ { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_PermitChar2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_PermitChar2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_PermitChar ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ###########################################################################*/ template static TypeLength GetLength_Repeat_PermitChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_PermitChar( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_PermitChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_PermitCharRange ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*##############################################################################*/ { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº 'ÃÖ´ë ¹Ýº¹ Ƚ¼ö'ÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_PermitCharRange2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); /////////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_PermitCharRange2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); /////////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_PermitCharRange ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ################################################################################*/ template static TypeLength GetLength_Repeat_PermitCharRange( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_PermitCharRange( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_PermitCharRange( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_NoPermit ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /////////////////////////////////////////////////////////////////////////// { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº ÃÖ´ë ¹Ýº¹ Ƚ¼öÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_NoPermit ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); /////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_NoPermit ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); /////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_NoPermit ( int AI_RepeatMin , int AI_RepeatMax , TypeCharC* APC_Origin , TypeLength AL_Length, const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /////////////////////////////////////////////////////////////////////////*/ template static TypeLength GetLength_Repeat_NoPermit( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_NoPermit( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_NoPermit( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_NoPermitRange ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) //////////////////////////////////////////////////////////////////////////////// { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº ÃÖ´ë ¹Ýº¹ Ƚ¼öÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_NoPermitRange ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); //////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_NoPermitRange ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); //////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_NoPermitRange ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) //////////////////////////////////////////////////////////////////////////////*/ template static TypeLength GetLength_Repeat_NoPermitRange( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_NoPermitRange( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_NoPermitRange( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_NoPermitChar ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*###########################################################################*/ { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº ÃÖ´ë ¹Ýº¹È½¼öÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_NoPermitChar2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); //////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_NoPermitChar2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); //////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_NoPermitChar ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) #############################################################################*/ template static TypeLength GetLength_Repeat_NoPermitChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_NoPermitChar( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_NoPermitChar( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ template static TypeLength GetLength_Repeat_NoPermitCharRange ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) /*################################################################################*/ { int VI_RepeatCnt=0; TypeLength VL_LengthAll=0; TypeLength VL_LengthNow=0; if(AI_RepeatMax<1) // À¯È¿ÇÏÁö ¾ÊÀº ÃÖ´ë ¹Ýº¹ Ƚ¼öÀÇ °æ¿ì, ¹«ÇÑ´ë ¹Ýº¹ Çã¿ë { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_NoPermitCharRange2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ///////////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { if(VI_RepeatCnt>=AI_RepeatMin) return VL_LengthAll; else return 0; }/* if(VL_LengthNow<1)*/ ++VI_RepeatCnt; } while(true); } else // AI_RepeatMax>=1 { do ////// { VL_LengthAll += VL_LengthNow = ZtCMainChars::GetLength_NoPermitCharRange2 ( APC_Origin+VL_LengthAll, AL_Length-VL_LengthAll, ARA_SearchArray ); ///////////////////////////////////////////////////////////////////////// if(VL_LengthNow<1) { // ÇöÀç VI_RepeatCnt<=AI_RepeatMax »óÅ´Ù. if(VI_RepeatCnt AI_RepeatMax) return 0; } else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop { if(++VI_RepeatCnt>=AI_RepeatMax) return VL_LengthAll; }/* else // AE_ESearchMax==ZNsEnum::ZESearchMax_Stop*/ } while(true); }/* else // AI_RepeatMax>=1*/ return VL_LengthAll; }/* template static TypeLength GetLength_Repeat_NoPermitCharRange ( int AI_RepeatMin, int AI_RepeatMax, TypeCharC* APC_Origin , TypeLength AL_Length , const TStringArray& ARA_SearchArray , ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ) ##################################################################################*/ template static TypeLength GetLength_Repeat_NoPermitCharRange( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) { return ZtCMainChars::GetLength_Repeat_NoPermitCharRange( AI_RepeatMin, AI_RepeatMax, AR_CChars.data(), AR_CChars.size(), ARA_SearchArray, AE_ESearchMax); }/* template static TypeLength GetLength_Repeat_NoPermitCharRange( int AI_RepeatMin, int AI_RepeatMax, const TTyChars& AR_CChars, const TStringArray& ARA_SearchArray, ZNsEnum::ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over) */ public: };/* template< typename TTypeChars=ZNsType::ZtCTypeChars > class ZtCMainChars //////////////////////////////////////*/ namespace ZNsInterface { template class ZtISearchCCharsEmpty { public: typedef typename TCChars::TypeChar TypeChar ; typedef typename TCChars::TypeLength TypeLength; public: typedef ZtISearchCCharsEmpty ZCNowObj ; typedef ZtISearchCCharsEmpty ZCNextObj; typedef ZtISearchCCharsEmpty ZCNodeObj; public: enum{EBoolNextObj=0}; public: int GetLength (const TypeChar*, TypeLength) const{return 0;} int GetRepeatCntMin () const{return 0;} int GetRepeatCntMax () const{return 0;} int GetSearchCharMin() const{return 0;} int GetSearchCharMax() const{return 0;} int GetSearchSumMin () const{return 0;} int GetSearchSumMax () const{return 0;} ZNsEnum::ZERegFlag GetERegFlag () const{return ZNsEnum::ZERegFlag_Nothing;} ZNsEnum::ZESearchMax GetESearchMax() const{return ZNsEnum::ZESearchMax_Over ;} ZtISearchCCharsEmpty& GetNowObj (){return *this;} ZtISearchCCharsEmpty& GetNextObj(){return *this;} ZtISearchCCharsEmpty& GetSubObj (){return *this;} const ZtISearchCCharsEmpty& GetNowObj ()const{return *this;} const ZtISearchCCharsEmpty& GetNextObj()const{return *this;} const ZtISearchCCharsEmpty& GetSubObj ()const{return *this;} public: };/* template class ZtISearchCCharsEmpty*/ }/* namespace ZNsInterface*/ #define _ISEARCH_CCHARS_EMPTY_ ZNsIFace::ZtISearchCCharsEmpty template< typename TCharsArr , typename TNextObj =_ISEARCH_CCHARS_EMPTY_, // ZNsIFace::ZtISearchCCharsEmpty, ZtCSearchCChars<>, etc bool TBoolNextObj=false > class ZtCSearchCChars : public TNextObj { public : enum{EBoolNextObj=(int)TBoolNextObj} ; public : typedef ZtCSearchCChars ZCSearchCChars; typedef ZtCSearchCChars ZCNowObj ; // cf) std::NsTmplChain::CTmplChain_T<> typedef TNextObj ZCNextObj ; public : typedef TCharsArr ZCCharsArr ; typedef ZNsEnum::ZERegFlag ZERegFlag ; typedef ZNsEnum::ZESearchMax ZESearchMax ; public : typedef typename TCharsArr::TypeData ZCChars ; typedef typename ZCChars ::ZCTypeChars ZCTypeChars; typedef typename ZCChars ::TypeChar TypeChar ; typedef typename ZCChars ::TypeCharC TypeCharC ; typedef typename ZCChars ::TypeLength TypeLength ; typedef ZtCMainChars ZCMainChars; protected: int mi_RepeatCntMin ; int mi_RepeatCntMax ; int mi_SearchCharMin; // enum ZERegErr ÀÇ ÁÖ¼®À» Âü°í. int mi_SearchCharMax; int mi_SearchSumMin ; // enum ZERegErr ÀÇ ÁÖ¼®À» Âü°í. int mi_SearchSumMax ; ZERegFlag me_ERegFlag ; ZESearchMax me_ESearchMax; ZCCharsArr mo_CCharsArr ; /*protected:*/ protected: /*/////////////////////////////////////////////////////////////////////////////// ¡á ¾Æ·¡ 2 °³ ¸â¹ö º¯¼ö´Â ZtCSearchCChars<> ÀÇ ÄÁÅ×À̳ʿ¡¼­¸¸ Àǹ̰¡ ÀÖ´Ù. int mi_SearchSumMin; int mi_SearchSumMax; Áï ZtCSearchCChars<> ÄÁÅ×À̳ÊÀÇ °¢ ¿ø¼Ò¸¦ ¼øÈ¸Çϸ鼭, ãÀº ±æÀ̸¦ °è¼Ó ´õÇÏ°Ô µÇ´Âµ¥, À̶§ ÀÌ ´õÇÏ´Â ´©Àû°ªÀÇ Çã¿ë ¹üÀ§¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. -- 2011-10-02 18:52:00 ///////////////////////////////////////////////////////////////////////////////*/ /*protected:*/ public : ZtCSearchCChars() { Init(); }/* ZtCSearchCChars()*/ ZtCSearchCChars(int AI_RepeatCntMin , int AI_RepeatCntMax , int AI_SearchCharMin, int AI_SearchCharMax, int AI_SearchSumMin , int AI_SearchSumMax , ZERegFlag AE_ERegFlag, ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over /*//////////*/ ) { Init(AI_RepeatCntMin, AI_RepeatCntMax, AI_SearchCharMin, AI_SearchCharMax, AI_SearchSumMin, AI_SearchSumMax, AE_ERegFlag, AE_ESearchMax); }/* ZtCSearchCChars(int AI_RepeatCntMin , int AI_RepeatCntMax , int AI_SearchCharMin, int AI_SearchCharMax, int AI_SearchSumMin , int AI_SearchSumMax , ZERegFlag AE_ERegFlag, ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over ////////////// ) */ void Init() { mi_RepeatCntMin =0; mi_RepeatCntMax =0; mi_SearchCharMin=0; mi_SearchCharMax=0; mi_SearchSumMin =0; mi_SearchSumMax =0; me_ERegFlag =ZNsEnum::ZERegFlag_Nothing; me_ESearchMax =ZNsEnum::ZESearchMax_Over ; }/* void Init()*/ void Init ( int AI_RepeatCntMin , int AI_RepeatCntMax , int AI_SearchCharMin, int AI_SearchCharMax, int AI_SearchSumMin , int AI_SearchSumMax , ZERegFlag AE_ERegFlag, ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over /*///////*/ ) { mi_RepeatCntMin =AI_RepeatCntMin ; mi_RepeatCntMax =AI_RepeatCntMax ; mi_SearchCharMin=AI_SearchCharMin; mi_SearchCharMax=AI_SearchCharMax; mi_SearchSumMin =AI_SearchSumMin ; mi_SearchSumMax =AI_SearchSumMax ; me_ERegFlag =AE_ERegFlag ; me_ESearchMax =AE_ESearchMax ; }/* void Init ( int AI_RepeatCntMin , int AI_RepeatCntMax , int AI_SearchCharMin, int AI_SearchCharMax, int AI_SearchSumMin , int AI_SearchSumMax , ZERegFlag AE_ERegFlag, ZESearchMax AE_ESearchMax=ZNsEnum::ZESearchMax_Over /////////// ) */ ZtCSearchCChars& GetNowObj() {return *this;} const ZtCSearchCChars& GetNowObj() const{return *this;} ZCNextObj& GetNextObj() {return static_cast< ZCNextObj&>(*this);} const ZCNextObj& GetNextObj() const{return static_cast(*this);} ZCCharsArr& GetCCharsArr() {return mo_CCharsArr;} const ZCCharsArr& GetCCharsArr() const{return mo_CCharsArr;} int GetRepeatCntMin () const{return mi_RepeatCntMin ;} int GetRepeatCntMax () const{return mi_RepeatCntMax ;} int GetSearchCharMin() const{return mi_SearchCharMin;} int GetSearchCharMax() const{return mi_SearchCharMax;} int GetSearchSumMin () const{return mi_SearchSumMin ;} int GetSearchSumMax () const{return mi_SearchSumMax ;} ZERegFlag GetERegFlag () const{return me_ERegFlag ;} ZESearchMax GetESearchMax() const{return me_ESearchMax;} TypeLength GetLength(TypeCharC* APC_Origin, TypeLength AL_Length) const { switch(me_ERegFlag) { case ZNsEnum::ZERegFlag_Permit : return ZCMainChars::GetLength_Repeat_Permit (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_PermitRange : return ZCMainChars::GetLength_Repeat_PermitRange (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_PermitChar : return ZCMainChars::GetLength_Repeat_PermitChar (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_PermitCharRange : return ZCMainChars::GetLength_Repeat_PermitCharRange (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_NoPermit : return ZCMainChars::GetLength_Repeat_NoPermit (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_NoPermitRange : return ZCMainChars::GetLength_Repeat_NoPermitRange (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_NoPermitChar : return ZCMainChars::GetLength_Repeat_NoPermitChar (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_NoPermitCharRange : return ZCMainChars::GetLength_Repeat_NoPermitCharRange(mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_Find : return ZCMainChars::GetLength_Repeat_Find (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_FindChar : return ZCMainChars::GetLength_Repeat_FindChar (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_FindSerial : return ZCMainChars::GetLength_Repeat_FindSerial (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_FindSerialChar : return ZCMainChars::GetLength_Repeat_FindSerialChar (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_FindEscape : return ZCMainChars::GetLength_Repeat_FindEscape (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_StartFind : return ZCMainChars::GetLength_Repeat_StartFind (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); case ZNsEnum::ZERegFlag_StartFindChar : return ZCMainChars::GetLength_Repeat_StartFindChar (mi_RepeatCntMin, mi_RepeatCntMax, APC_Origin, AL_Length, mo_CCharsArr, me_ESearchMax); }/* switch(me_ERegFlag)*/ return 0; }/* TypeLength GetLength(TypeCharC* APC_Origin, TypeLength AL_Length) const*/ template TypeLength GetLength(const TCChars& AR_CChars) const { return GetLength(AR_CChars.data(), AR_CChars.size()); }/* template TypeLength GetLength(const TCChars& AR_CChars) const */ TypeLength GetLengthEx ( ZNsEnum::ZERegErr& ARRE_ZERegErr, TypeCharC* APC_Origin , TypeLength AL_Length ) const /*##################*/ { TypeLength VL_Length = GetLength(APC_Origin, AL_Length); ARRE_ZERegErr=ZNsEnum::ZERegErr_None; const bool CB_IsTrue = ( VL_Length 0 && VL_Length>mi_SearchCharMax) ); if(CB_IsTrue) ARRE_ZERegErr=ZNsEnum::ZERegErr_CharCount; return VL_Length; }/* TypeLength GetLengthEx ( ZNsEnum::ZERegErr& ARRE_ZERegErr, TypeCharC* APC_Origin , TypeLength AL_Length ) const ////////////////////*/ template TypeLength GetLengthEx(ZNsEnum::ZERegErr& ARRE_ZERegErr, const TCChars& AR_CChars) const { return GetLengthEx(RR(ARRE_ZERegErr), AR_CChars.data(), AR_CChars.size()); }/* template TypeLength GetLengthEx(ZNsEnum::ZERegErr& ARRE_ZERegErr, const TCChars& AR_CChars) const */ template static TypeLength GetLengthByCSearchCCharsArr ( const TSearchCCharsArr& AR_CSearchCCharsArr , ZNsEnum::ZERegErr& ARRE_ZERegErr , TypeCharC* APC_Origin , TypeLength AL_Length ) /*#################################################*/ { typedef typename TSearchCCharsArr::iterator iterator; typedef typename TSearchCCharsArr::TypeData TypeData; const iterator VO_iterator(AR_CSearchCCharsArr.begin()); TypeLength VL_SearchSum=0; TypeLength VL_SearchNow=0; int VI_ArrSize =AR_CSearchCCharsArr.size(); if(VI_ArrSize<1) return 0; for(int i=0; i0 && VL_SearchNow>VR_CSearchCChars.GetSearchCharMax())) { ARRE_ZERegErr=ZNsEnum::ZERegErr_CharCount; return 0; } if(VL_SearchSum0 && VL_SearchSum>VR_CSearchCChars.GetSearchSumMax ())) { ARRE_ZERegErr=ZNsEnum::ZERegErr_CharSum ; return 0; }/* if(VL_SearchSum0 && VL_SearchSum>VR_CSearchCChars.GetSearchSumMax ()))*/ /*/////////////////////////////////////////////////////// if(AL_Length<=VL_SearchSum) return VL_SearchSum; ¡á À§ Äڵ带 ÁÖ¼®À¸·Î ¸·´Â´Ù. ´ÙÀ½ Á¶°Ç¿¡ µû¶ó¼­, ã´Â ¹®ÀÚ¿­ÀÌ ±æÀ̰¡ 0 ÀÎ °ÍÀÌ Á¤»óÀÏ ¼öµµ ÀÖ´Â °ÍÀÌ´Ù. -- 2011-08-05 16:30:00 ///////////////////////////////////////////////////////*/ AR_CSearchCCharsArr.MoveNextIter(VO_iterator); }/* for(int i=0; i static TypeLength GetLengthByCSearchCCharsArr ( const TSearchCCharsArr& AR_CSearchCCharsArr , ZNsEnum::ZERegErr& ARRE_ZERegErr , TypeCharC* APC_Origin , TypeLength AL_Length ) ///////////////////////////////////////////////////*/ template static TypeLength GetLengthByCSearchCCharsArr ( const TSearchCCharsArr& AR_CSearchCCharsArr , ZNsEnum::ZERegErr& ARRE_ZERegErr , const TCChars& AR_CChars ) /*#################################################*/ { return GetLengthByCSearchCCharsArr( AR_CSearchCCharsArr, RR(ARRE_ZERegErr), AR_CChars.data(), AR_CChars.size() ); }/* template static TypeLength GetLengthByCSearchCCharsArr ( const TSearchCCharsArr& AR_CSearchCCharsArr , ZNsEnum::ZERegErr& ARRE_ZERegErr , const TCChars& AR_CChars ) ///////////////////////////////////////////////////*/ public: };/* template< typename TCharsArr , typename TNextObj =_ISEARCH_CCHARS_EMPTY_, // ZNsIFace::ZtISearchCCharsEmpty, ZtCSearchCChars<>, etc bool TBoolNextObj=false > class ZtCSearchCChars /////////////////////////////////*/ template< typename TCharsArr , typename TNextObj =_ISEARCH_CCHARS_EMPTY_, // ZNsIFace::ZtISearchCCharsEmpty, ZtCSearchCChars<>, etc typename TSubObj =_ISEARCH_CCHARS_EMPTY_, // ZNsIFace::ZtISearchCCharsEmpty, ZtCSearchCChars<>, etc bool TBoolNextObj=false > class ZtCSearchCCharsEx : public ZtCSearchCChars { public : enum{EBoolNextObj=(int)TBoolNextObj}; public : typedef ZtCSearchCChars ZCSearchCChars; public : typedef ZCSearchCChars ZCNowObj ; typedef TNextObj ZCNextObj; typedef TSubObj CSubObj ; private: CSubObj mo_CSubObj; public : /***/ CSubObj& GetCSubObj() {return mo_CSubObj;} const CSubObj& GetCSubObj()const{return mo_CSubObj;} public : };/* template< typename TCharsArr , typename TNextObj =_ISEARCH_CCHARS_EMPTY_, // ZNsIFace::ZtISearchCCharsEmpty, ZtCSearchCChars<>, etc typename TSubObj =_ISEARCH_CCHARS_EMPTY_, // ZNsIFace::ZtISearchCCharsEmpty, ZtCSearchCChars<>, etc bool TBoolNextObj=false > class ZtCSearchCCharsEx */ #undef _ISEARCH_CCHARS_EMPTY_ // ZNsIFace::ZtISearchCCharsEmpty namespace ZNsType { template< ZTypLength TIntCode , // 'A' ³ª L'°¡' µîÀÇ ±¸Ã¼ÀûÀÎ ¹®ÀÚ°¡ ¿Â´Ù. typename TTypeChar=char, typename TCharCInt=char // TTypeChar ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â Á¤¼ö ÀÚ·áÇüÀÌ´Ù. > class ZtCTypeCharChain { public: typedef TTypeChar TypeChar; typedef TCharCInt TypeCInt; public: typedef const TTypeChar TypeCharC; public: enum{ZETypeCharTmplChain=ZNsEnum::ZETypeCharTmplChain_Char}; public: static TypeCInt GetCInt(){return (TypeCInt)TIntCode;} static TypeChar GetChar(){return (TypeChar)TIntCode;} public: static bool DoHave(TypeChar AC_Char){return AC_Char==(TypeChar)TIntCode;} public: };/* template< ZTypLength TIntCode , // 'A' ³ª L'°¡' µîÀÇ ±¸Ã¼ÀûÀÎ ¹®ÀÚ°¡ ¿Â´Ù. typename TTypeChar=char, typename TCharCInt =char // TTypeChar ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â Á¤¼ö ÀÚ·áÇüÀÌ´Ù. > class ZtCTypeCharChain */ // ZtCTypeChar2Chain<> Àº 2 °³ ¹®ÀÚÀÇ ¹üÀ§¸¦ ³ªÅ¸³½´Ù. template< ZTypLength TIntCode1 , // 'A' ³ª L'°¡' µîÀÇ ±¸Ã¼ÀûÀÎ ¹®ÀÚ°¡ ¿Â´Ù. ZTypLength TIntCode2 , // 'A' ³ª L'°¡' µîÀÇ ±¸Ã¼ÀûÀÎ ¹®ÀÚ°¡ ¿Â´Ù. typename TTypeChar=char, typename TCharCInt=char // TTypeChar ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â Á¤¼ö ÀÚ·áÇüÀÌ´Ù. > class ZtCTypeChar2Chain { public: typedef TTypeChar TypeChar; typedef TCharCInt TypeCInt; public: typedef const TTypeChar TypeCharC; public: enum{ZETypeCharTmplChain=ZNsEnum::ZETypeCharTmplChain_Char2}; public: static TypeCInt GetCInt1(){return (TypeCInt)TIntCode1;} static TypeCInt GetCInt2(){return (TypeCInt)TIntCode2;} static TypeChar GetChar1(){return (TypeChar)TIntCode1;} static TypeChar GetChar2(){return (TypeChar)TIntCode2;} public: static bool DoHave(TypeChar AC_Char) { return AC_Char>=(TypeChar)TIntCode1 && AC_Char<=(TypeChar)TIntCode2; }/* static bool DoHave(TypeChar AC_Char)*/ public: };/* template< ZTypLength TIntCode1 , // 'A' ³ª L'°¡' µîÀÇ ±¸Ã¼ÀûÀÎ ¹®ÀÚ°¡ ¿Â´Ù. ZTypLength TIntCode2 , // 'A' ³ª L'°¡' µîÀÇ ±¸Ã¼ÀûÀÎ ¹®ÀÚ°¡ ¿Â´Ù. typename TTypeChar=char, typename TCharCInt=char // TTypeChar ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â Á¤¼ö ÀÚ·áÇüÀÌ´Ù. > class ZtCTypeChar2Chain */ template< typename TTypeChar=char, typename TCharCInt=char // TTypeChar ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â Á¤¼ö ÀÚ·áÇüÀÌ´Ù. > class ZtCTypeCharChainEach { public: typedef ZtCTypeCharChain CTypeCharTmplChainOfA; typedef ZtCTypeCharChain CTypeCharTmplChainOfB; typedef ZtCTypeCharChain CTypeCharTmplChainOfC; typedef ZtCTypeCharChain CTypeCharTmplChainOfD; typedef ZtCTypeCharChain CTypeCharTmplChainOfE; typedef ZtCTypeCharChain CTypeCharTmplChainOfF; typedef ZtCTypeCharChain CTypeCharTmplChainOfG; typedef ZtCTypeCharChain CTypeCharTmplChainOfH; typedef ZtCTypeCharChain CTypeCharTmplChainOfI; typedef ZtCTypeCharChain CTypeCharTmplChainOfJ; typedef ZtCTypeCharChain CTypeCharTmplChainOfK; typedef ZtCTypeCharChain CTypeCharTmplChainOfL; typedef ZtCTypeCharChain CTypeCharTmplChainOfM; typedef ZtCTypeCharChain CTypeCharTmplChainOfN; typedef ZtCTypeCharChain CTypeCharTmplChainOfO; typedef ZtCTypeCharChain CTypeCharTmplChainOfP; typedef ZtCTypeCharChain CTypeCharTmplChainOfQ; typedef ZtCTypeCharChain CTypeCharTmplChainOfR; typedef ZtCTypeCharChain CTypeCharTmplChainOfS; typedef ZtCTypeCharChain CTypeCharTmplChainOfT; typedef ZtCTypeCharChain CTypeCharTmplChainOfU; typedef ZtCTypeCharChain CTypeCharTmplChainOfV; typedef ZtCTypeCharChain CTypeCharTmplChainOfW; typedef ZtCTypeCharChain CTypeCharTmplChainOfX; typedef ZtCTypeCharChain CTypeCharTmplChainOfY; typedef ZtCTypeCharChain CTypeCharTmplChainOfZ; typedef ZtCTypeCharChain CTypeCharTmplChainOfa; typedef ZtCTypeCharChain CTypeCharTmplChainOfb; typedef ZtCTypeCharChain CTypeCharTmplChainOfc; typedef ZtCTypeCharChain CTypeCharTmplChainOfd; typedef ZtCTypeCharChain CTypeCharTmplChainOfe; typedef ZtCTypeCharChain CTypeCharTmplChainOff; typedef ZtCTypeCharChain CTypeCharTmplChainOfg; typedef ZtCTypeCharChain CTypeCharTmplChainOfh; typedef ZtCTypeCharChain CTypeCharTmplChainOfi; typedef ZtCTypeCharChain CTypeCharTmplChainOfj; typedef ZtCTypeCharChain CTypeCharTmplChainOfk; typedef ZtCTypeCharChain CTypeCharTmplChainOfl; typedef ZtCTypeCharChain CTypeCharTmplChainOfm; typedef ZtCTypeCharChain CTypeCharTmplChainOfn; typedef ZtCTypeCharChain CTypeCharTmplChainOfo; typedef ZtCTypeCharChain CTypeCharTmplChainOfp; typedef ZtCTypeCharChain CTypeCharTmplChainOfq; typedef ZtCTypeCharChain CTypeCharTmplChainOfr; typedef ZtCTypeCharChain CTypeCharTmplChainOfs; typedef ZtCTypeCharChain CTypeCharTmplChainOft; typedef ZtCTypeCharChain CTypeCharTmplChainOfu; typedef ZtCTypeCharChain CTypeCharTmplChainOfv; typedef ZtCTypeCharChain CTypeCharTmplChainOfw; typedef ZtCTypeCharChain CTypeCharTmplChainOfx; typedef ZtCTypeCharChain CTypeCharTmplChainOfy; typedef ZtCTypeCharChain CTypeCharTmplChainOfz; typedef ZtCTypeCharChain CTypeCharTmplChainOf0; typedef ZtCTypeCharChain CTypeCharTmplChainOf1; typedef ZtCTypeCharChain CTypeCharTmplChainOf2; typedef ZtCTypeCharChain CTypeCharTmplChainOf3; typedef ZtCTypeCharChain CTypeCharTmplChainOf4; typedef ZtCTypeCharChain CTypeCharTmplChainOf5; typedef ZtCTypeCharChain CTypeCharTmplChainOf6; typedef ZtCTypeCharChain CTypeCharTmplChainOf7; typedef ZtCTypeCharChain CTypeCharTmplChainOf8; typedef ZtCTypeCharChain CTypeCharTmplChainOf9; typedef ZtCTypeCharChain CTypeCharTmplChainOfSpace ; // space bar typedef ZtCTypeCharChain CTypeCharTmplChainOfTab ; // horizontal tab typedef ZtCTypeCharChain CTypeCharTmplChainOfLF ; // line feed(°³Çà) typedef ZtCTypeCharChain CTypeCharTmplChainOfCR ; // carriage return(º¹±Í) typedef ZtCTypeCharChain CTypeCharTmplChainOfGraAcc ; // grave accent typedef ZtCTypeCharChain CTypeCharTmplChainOfTilde ; // tilde, swung dash typedef ZtCTypeCharChain CTypeCharTmplChainOfExcMark ; // exclamation mark typedef ZtCTypeCharChain CTypeCharTmplChainOfAt ; // at sign typedef ZtCTypeCharChain CTypeCharTmplChainOfHash ; // number sign/pound/hash typedef ZtCTypeCharChain CTypeCharTmplChainOfDollar ; // dollar sign typedef ZtCTypeCharChain CTypeCharTmplChainOfPercent ; typedef ZtCTypeCharChain CTypeCharTmplChainOfCaret ; // caret typedef ZtCTypeCharChain CTypeCharTmplChainOfAmper ; // ampersand typedef ZtCTypeCharChain CTypeCharTmplChainOfAster ; // asterisk typedef ZtCTypeCharChain CTypeCharTmplChainOfRoundB ; // round brackets, open brackets, brackets (UK), or parentheses typedef ZtCTypeCharChain CTypeCharTmplChainOfRoundB2 ; typedef ZtCTypeCharChain CTypeCharTmplChainOfSquareB ; // square brackets, closed brackets, or brackets (US) typedef ZtCTypeCharChain CTypeCharTmplChainOfSquareB2 ; typedef ZtCTypeCharChain' ),TTypeChar,TCharCInt> CTypeCharTmplChainOfMoreThan ; // inequality signs, brakets typedef ZtCTypeCharChain CTypeCharTmplChainOfLessThan ; // inequality signs, brakets typedef ZtCTypeCharChain CTypeCharTmplChainOfBrace ; // curly brackets, definite brackets, swirly brackets, curly braces, birdie brackets, Scottish brackets, squirrelly brackets, braces, gullwings, fancy brackets, or squiggly brackets typedef ZtCTypeCharChain CTypeCharTmplChainOfBrace2 ; typedef ZtCTypeCharChain CTypeCharTmplChainOfHyphen ; // hyphen typedef ZtCTypeCharChain CTypeCharTmplChainOfUnderSco ; // underscore, understrike, low line, low dash typedef ZtCTypeCharChain CTypeCharTmplChainOfPlus ; // plus sign typedef ZtCTypeCharChain CTypeCharTmplChainOfEquals ; // equality sign, equals sign typedef ZtCTypeCharChain CTypeCharTmplChainOfVertical ; // vertical bar typedef ZtCTypeCharChain CTypeCharTmplChainOfBackslash; // backslash, reverse solidus typedef ZtCTypeCharChain CTypeCharTmplChainOfSemiColon; typedef ZtCTypeCharChain CTypeCharTmplChainOfColon ; typedef ZtCTypeCharChain CTypeCharTmplChainOfApostrop ; // apostrophe typedef ZtCTypeCharChain CTypeCharTmplChainOfQuotation; // quotation mark typedef ZtCTypeCharChain CTypeCharTmplChainOfComma ; // comma typedef ZtCTypeCharChain CTypeCharTmplChainOfPeriod ; // period typedef ZtCTypeCharChain CTypeCharTmplChainOfQuestion ; // question mark typedef ZtCTypeCharChain CTypeCharTmplChainOfSlash ; // slash, solidus typedef ZtCTypeChar2Chain CTypeChar2TmplChainOfaz; typedef ZtCTypeChar2Chain CTypeChar2TmplChainOfAZ; typedef ZtCTypeChar2Chain CTypeChar2TmplChainOf09; public: };/* template< typename TTypeChar=char, typename TCharCInt=char // TTypeChar ¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Â Á¤¼ö ÀÚ·áÇüÀÌ´Ù. > class ZtCTypeCharChainEach */ }/* namespace ZNsType*/ /*/////////////////////////////////////////////////////////// ¡á typename TTypeCharChain Àº ZNsType::ZtCTypeCharChain<> ZNsType::ZtCTypeChar2Chain<> ZNsType::ZtCTypeCharChainEach<>::CTypeCharTmplChainOf~ ZNsType::ZtCTypeCharChainEach<>::CTypeChar2TmplChainOf~ µîÀÌ µÉ ¼ö ÀÖ´Ù. -- 2011-10-09 05:27:00 ///////////////////////////////////////////////////////////*/ template< typename TTypeCharChain, typename TNextCharChain, typename TNextCharChain2 > class ZtCCharChain ///////////////// { public: typedef TTypeCharChain TypeCharChain ; typedef TNextCharChain ZCNextObj ; typedef TNextCharChain2 ZCNextObj2; typedef typename TypeCharChain::TTypeChar TypeChar ; typedef typename TypeCharChain::TCharCInt TypeCInt ; public: typedef const TypeChar TypeCharC; public: enum{ENextObjNo =ZCNextObj ::ENextObjNo +1}; enum{ENextObjNo2 =ZCNextObj2::ENextObjNo2+1}; enum{EObjChainCnt =ZCNextObj ::EObjChainCnt+ZCNextObj2::EObjChainCnt+2}; enum{EBoolNextObj =1}; enum{EBoolNextObj2=1}; public: static bool DoHave(TypeChar AC_Char){return TypeCharChain::DoHave(AC_Char);} public: };/* template< typename TTypeCharChain, typename TNextCharChain, typename TNextCharChain2 > class ZtCCharChain ///////////////*/ template< typename TTypeCharChain, /////////////////////////////// typename TNextCharChain > class ZtCCharChain { public: typedef TTypeCharChain TypeCharChain ; typedef TNextCharChain ZCNextObj ; typedef TNextCharChain ZCNextObj2; // interface ȣȯÀ» À§Çؼ­¸¸ Á¸Àç. typedef typename TypeCharChain::TTypeChar TypeChar ; typedef typename TypeCharChain::TCharCInt TypeCInt ; public: typedef const TypeChar TypeCharC; public: enum{ENextObjNo =ZCNextObj::ENextObjNo+1}; enum{ENextObjNo2 =0}; enum{EBoolNextObj =1}; enum{EBoolNextObj2=0}; enum{EObjChainCnt =ZCNextObj::EObjChainCnt+1}; public: static bool DoHave(TypeChar AC_Char){return TypeCharChain::DoHave(AC_Char);} public: };/* template< typename TTypeCharChain, ////////////////////////////////// typename TNextCharChain > class ZtCCharChain */ template< typename TTypeCharChain, //////////////////////////////// typename TNextCharChain2 > class ZtCCharChain { public: typedef TTypeCharChain TypeCharChain ; typedef TNextCharChain2 ZCNextObj ; // interface ȣȯÀ» À§Çؼ­¸¸ Á¸Àç. typedef TNextCharChain2 ZCNextObj2; typedef typename TypeCharChain::TTypeChar TypeChar ; typedef typename TypeCharChain::TCharCInt TypeCInt ; public: typedef const TypeChar TypeCharC; public: enum{ENextObjNo =0}; enum{ENextObjNo2 =ZCNextObj2::ENextObjNo2+1}; enum{EBoolNextObj =0}; enum{EBoolNextObj2=1}; enum{EObjChainCnt =ZCNextObj2::EObjChainCnt+1}; public: static bool DoHave(TypeChar AC_Char){return TypeCharChain::DoHave(AC_Char);} public: };/* template< typename TTypeCharChain, /////////////////////////////////// typename TNextCharChain2 > class ZtCCharChain */ template class ZtCCharChain < TTypeCharChain, ZNsMain::ZCEmpty, ZNsMain::ZCEmpty > { public: typedef ZtCCharChain< ////////////////////////////// TTypeCharChain , ZNsMain::ZCEmpty, ZNsMain::ZCEmpty /*/////////*/ > CCharChain; //////////////////////// public: typedef TTypeCharChain TypeCharChain ; typedef CCharChain ZCNextObj ; // interface ȣȯÀ» À§Çؼ­¸¸ Á¸Àç. typedef CCharChain ZCNextObj2; // interface ȣȯÀ» À§Çؼ­¸¸ Á¸Àç. typedef typename TypeCharChain::TTypeChar TypeChar ; typedef typename TypeCharChain::TCharCInt TypeCInt ; public: typedef const TypeChar TypeCharC; public: enum{ENextObjNo =0}; enum{ENextObjNo2 =0}; enum{EBoolNextObj =0}; enum{EBoolNextObj2=0}; enum{EObjChainCnt =1}; public: static bool DoHave(TypeChar AC_Char){return TypeCharChain::DoHave(AC_Char);} public: };/* template class ZtCCharChain < TTypeCharChain, ZNsMain::ZCEmpty, ZNsMain::ZCEmpty > */ template< typename TTypeChars=ZNsType::ZtCTypeChars > class ZtCSearchCursor ///////////////////////////////////// { public : typedef TTypeChars ZCTypeChars; typedef ZtCMainChars ZCMainChars; typedef typename ZCTypeChars::ZCChars ZCChars ; typedef typename ZCTypeChars::TypeChar TypeChar ; typedef typename ZCTypeChars::TypeCharC TypeCharC ; typedef typename ZCTypeChars::TypeLength TypeLength ; private: TypeChar* mpc_OriginChar; TypeLength ml_OriginLen ; TypeLength ml_SearchPos ; TypeLength ml_SearchLen ; public : ZtCSearchCursor() { Init(); }/* ZtCSearchCursor()*/ void Init() { mpc_OriginChar=0; ml_OriginLen =0; ml_SearchPos =0; ml_SearchLen =0; }/* void Init()*/ void InitSearch() { ml_SearchPos =0; ml_SearchLen =0; }/* void InitSearch()*/ void InitOrigin(TypeChar* APC_Origin, TypeLength AL_Length) { mpc_OriginChar=APC_Origin; ml_OriginLen =AL_Length ; }/* void InitOrigin(TypeChar* APC_Origin, TypeLength AL_Length)*/ void InitOrigin(ZCChars& AR_CCharsOrigin) { mpc_OriginChar=AR_CCharsOrigin.data(); ml_OriginLen =AR_CCharsOrigin.size(); }/* void InitOrigin(ZCChars& AR_CCharsOrigin)*/ void InitOrigin(const ZCChars& AR_CCharsOrigin) { mpc_OriginChar=const_cast(AR_CCharsOrigin.data()); ml_OriginLen = AR_CCharsOrigin.size() ; }/* void InitOrigin(const ZCChars& AR_CCharsOrigin)*/ TypeChar* GetOriginData() { return mpc_OriginChar; }/* TypeChar* GetOriginData()*/ TypeCharC* GetOriginData() const { return mpc_OriginChar; }/* TypeCharC* GetOriginData() const*/ TypeLength GetOriginLen() const{return ml_OriginLen ;} TypeLength GetRemainLen() const{return ml_OriginLen-ml_SearchPos;} void AddSearchPos() { ml_SearchPos+=ml_SearchLen; }/* void AddSearchPos()*/ void AddSearchPos(TypeLength AL_AddSearchPos) { ml_SearchPos += AL_AddSearchPos ; }/* void AddSearchPos(TypeLength AL_AddSearchPos)*/ void AddInitSearchPos() { ml_SearchPos+=ml_SearchLen; ml_SearchLen=0; }/* void AddInitSearchPos()*/ TypeLength GetSearchLen() const{return ml_SearchLen;} TypeLength GetSearchPos() const{return ml_SearchPos;} void SetSearchLen(TypeLength AL_SearchLen) { if(AL_SearchLen>=0) ml_SearchLen=AL_SearchLen; }/* void SetSearchLen(TypeLength AL_SearchLen)*/ void SetSearchPos(TypeLength AL_SearchPos) { if(AL_SearchPos>=0) ml_SearchPos=AL_SearchPos; }/* void SetSearchPos(TypeLength AL_SearchPos)*/ void SetSearchPos() { ml_SearchPos=ml_SearchLen; }/* void SetSearchPos()*/ bool DoStart(TypeCharC* APC_Search, TypeLength AL_Length) { return ZCMainChars::DoStart( mpc_OriginChar+ml_SearchPos, APC_Search, ml_OriginLen-ml_SearchPos, AL_Length); }/* bool DoStart(TypeCharC* APC_Search, TypeLength AL_Length)*/ template bool DoStart(const TCChars& AR_CChars) { return DoStart(AR_CChars.data(), AR_CChars.size()); }/* template bool DoStart(const TCChars& AR_CChars) */ TypeLength FindPos(TypeCharC* APC_Search,TypeLength AL_Length) { return ZCMainChars::FindPos( mpc_OriginChar, APC_Search, ml_OriginLen, AL_Length, ml_SearchPos); }/* TypeLength FindPos(TypeCharC* APC_Search,TypeLength AL_Length)*/ template TypeLength FindPos(const TCChars& AR_CChars) { return FindPos(AR_CChars.data(), AR_CChars.size()); }/* template TypeLength FindPos(const TCChars& AR_CChars) */ TypeLength AddSearchByFind(TypeCharC* APC_Search, TypeLength AL_Length) { // APC_Search À» ã¾ÒÀ¸¸é, ±× ÀÌÀü±îÁöÀÇ ±æÀ̸¦ ¸®ÅÏÇÑ´Ù. TypeLength VL_FindPos = FindPos(APC_Search, AL_Length); if(VL_FindPos<0) return -1; return ml_SearchLen = VL_FindPos-ml_SearchPos; }/* TypeLength AddSearchByFind(TypeCharC* APC_Search, TypeLength AL_Length)*/ template bool AddSearchByFind(const TCChars& AR_CChars) { return AddSearchByFind(AR_CChars.data(), AR_CChars.size()); }/* template bool AddSearchByFind(const TCChars& AR_CChars) */ template TypeLength AddSearchByCSearchCChars(const TSearchCChars& AR_CSearchCChars) { return ml_SearchLen += AR_CSearchCChars.GetLength ( mpc_OriginChar+ml_SearchPos, ml_OriginLen-ml_SearchPos ); }/* template TypeLength AddSearchByCSearchCChars(const TSearchCChars& AR_CSearchCChars) */ template TypeLength AddSearchByTmplChain ( TChainStack& AR_CStackOfTmplChain, const TTmplChain& AR_CTmplChain , ZNsEnum::ZERegErr& ARRE_ZERegErr ) { // TChainStack Àº ZNsInterface::ZtCStackOfTmplChain<> ÀÇ interface ¸¦ °®´Â´Ù. ml_SearchLen += GetLengthByTmplChain( RR(AR_CStackOfTmplChain), AR_CTmplChain, RR(ARRE_ZERegErr)); return (ARRE_ZERegErr==ZNsEnum::ZERegErr_None) ? ml_SearchLen : 0 ; }/* template TypeLength AddSearchByTmplChain ( TChainStack& AR_CStackOfTmplChain, const TTmplChain& AR_CTmplChain , ZNsEnum::ZERegErr& ARRE_ZERegErr ) /////////////////////////////////////////////////*/ template TypeLength AddSearchByTmplChain(TTmplChain& AR_CTmplChain, ZNsEnum::ZERegErr& ARRE_ZERegErr) { ZNsInterface::ZtCStackOfTmplChain VO_CStackOfTmplChain; return AddSearchByTmplChain(VO_CStackOfTmplChain, AR_CTmplChain, RR(ARRE_ZERegErr)); }/* template TypeLength AddSearchByTmplChain(TTmplChain& AR_CTmplChain, ZNsEnum::ZERegErr& ARRE_ZERegErr) */ template TypeLength AddSearchByTmplTreeChain ( TChainStack& AR_CStackOfTmplChain, const TTmplTreeChain& AR_CTmplChain , ZNsEnum::ZERegErr& ARRE_ZERegErr ) { // TChainStack Àº ZNsInterface::ZtCStackOfTmplChain<> ÀÇ interface ¸¦ °®´Â´Ù. ml_SearchLen += GetLengthByTmplTreeChain( RR(AR_CStackOfTmplChain), AR_CTmplChain, RR(ARRE_ZERegErr)); return (ARRE_ZERegErr==ZNsEnum::ZERegErr_None) ? ml_SearchLen : 0 ; }/* template TypeLength AddSearchByTmplTreeChain ( TChainStack& AR_CStackOfTmplChain, const TTmplTreeChain& AR_CTmplChain , ZNsEnum::ZERegErr& ARRE_ZERegErr ) /////////////////////////////////////////////////////*/ template TypeLength AddSearchByTmplTreeChain ( const TTmplTreeChain& AR_CTmplChain, ZNsEnum::ZERegErr& ARRE_ZERegErr ) { ZNsInterface:: ZtCStackOfTmplChain VO_CStackOfTmplChain ; return AddSearchByTmplTreeChain( VO_CStackOfTmplChain, AR_CTmplChain, RR(ARRE_ZERegErr) ); }/* template TypeLength AddSearchByTmplTreeChain ( const TTmplTreeChain& AR_CTmplChain, ZNsEnum::ZERegErr& ARRE_ZERegErr ) */ template TypeLength GetLengthByTmplChain ( TChainStack& AR_CStackOfTmplChain, const TTmplChain& AR_CTmplChain , ZNsEnum::ZERegErr& ARRE_ZERegErr ) /*###############################################*/ { /*//////////////////////////////////////////////////////////////////////////// ¡á TTmplChain ÀÚ·áÇüÀ¸·Î´Â ZtCSearchCChars<> °¡ ÀûÇÕÇÏ´Ù. -- 2011-09-29 22:47:00 ¡á AR_CStackOfTmplChain ÀÌ ÀÖÀ¸¹Ç·Î ÇØ¼­ *this ÀÇ ¸â¹ö¸¦ º¯°æÇÏÁö ¾Ê¾Æµµ µÈ´Ù. -- 2013-06-26 01:56:00 ////////////////////////////////////////////////////////////////////////////*/ typedef typename TTmplChain::ZCNowObj ZCNowObj; const ZCNowObj& VR_CNowObj=AR_CTmplChain.GetNowObj(); TypeLength VL_LengthNow =VR_CNowObj.GetLength ( mpc_OriginChar+ml_SearchPos+AR_CStackOfTmplChain.GetSearchSum(), ml_OriginLen -ml_SearchPos-AR_CStackOfTmplChain.GetSearchSum() ); ///////////////////////////////////////////// if(VL_LengthNow 0 && VL_LengthNow>VR_CNowObj.GetSearchCharMax())) { ARRE_ZERegErr=ZNsEnum::ZERegErr_CharCount; return 0; } if(AR_CStackOfTmplChain.GetSearchSum()0 && VL_LengthNow>VR_CNowObj.GetSearchSumMax ())) { ARRE_ZERegErr=ZNsEnum::ZERegErr_CharSum ; return 0; }/* if(AR_CStackOfTmplChain.GetSearchSum()0 && VL_LengthNow>VR_CNowObj.GetSearchSumMax ()))*/ AR_CStackOfTmplChain.AddSearchSum(VL_LengthNow); if(TTmplChain::EBoolNextObj<1) return AR_CStackOfTmplChain.GetSearchSum() ; return VL_LengthNow + GetLengthByTmplChain( AR_CStackOfTmplChain, AR_CTmplChain.GetNextObj(), RR(ARRE_ZERegErr)); }/* template TypeLength GetLengthByTmplChain ( TChainStack& AR_CStackOfTmplChain, const TTmplChain& AR_CTmplChain , ZNsEnum::ZERegErr& ARRE_ZERegErr ) /////////////////////////////////////////////////*/ template TypeLength GetLengthByTmplChain(TTmplChain& AR_CTmplChain, ZNsEnum::ZERegErr& ARRE_ZERegErr) { ZNsInterface::ZtCStackOfTmplChain VO_CStackOfTmplChain; return GetLengthByTmplChain(VO_CStackOfTmplChain, AR_CTmplChain, RR(ARRE_ZERegErr)); }/* template TypeLength GetLengthByTmplChain(TTmplChain& AR_CTmplChain, ZNsEnum::ZERegErr& ARRE_ZERegErr) */ template TypeLength GetLengthByTmplTreeChain ( TChainStack& AR_CStackOfTmplChain, const TTmplTreeChain& AR_CTmplTreeChain , ZNsEnum::ZERegErr& ARRE_ZERegErr ) /////////////////////////////////////////////////////// { // Å×½ºÆ®°¡ ÇÊ¿ä. 2013-06-26 17:20:00 typedef typename TTmplTreeChain::ZCNowObj ZCNowObj; const ZCNowObj& VR_CNowObj=AR_CTmplTreeChain.GetNowObj(); if(VR_CNowObj.GetERegFlag()==ZNsEnum::ZERegFlag_BlockStart) { TChainStack VO_CChainStack; ZNsEnum::ZERegErr VE_ZERegErr =ZNsEnum::ZERegErr_None; TypeLength VL_LengthNow=0; TypeLength VL_LengthSum=0; TypeLength VL_SearchCnt=0; /*////////////////////////////////////////////////////////////////////////////////// ¡á *this ¸â¹ö¸¦ ÀüÇô °Çµå¸®Áö ¾Ê´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀº, AR_CStackOfTmplChain À̿ܿ¡ ½ºÅà ¿¡ ZtCCharChain<> object ¸¦ ¼±¾ðÇØ¼­ »ç¿ëÇÏ¸é µÇ´Âµ¥, ÀÌ ±¸ÇöÀÌ ´õ ÁÁÀ»±î? -- 2013-06-26 01:08:00 //////////////////////////////////////////////////////////////////////////////////*/ while(true) { // 'Á¶È¸ Block'¿¡ ´ëÇÏ¿© ãÀº Ƚ¼ö°¡ VR_CNowObj.GetRepeatCntMax() ¸¦ // ³ÑÁö ¾Ê´Â ¹üÀ§ ³»¿¡¼­ while ¹®À» ¹Ýº¹ÇÑ´Ù. VL_LengthNow=GetLengthByTmplTreeChain( /////// RR(VO_CChainStack) , AR_CTmplTreeChain.GetSubObj(), RR(VE_ZERegErr) /*/////////*/ ); ///////////////////////////// if(VE_ZERegErr!=ZNsEnum::ZERegErr_None) { AR_CStackOfTmplChain.AddSearchSum(-VL_LengthSum); break; }/* if(VE_ZERegErr!=ZNsEnum::ZERegErr_None)*/ ++VL_SearchCnt; VL_LengthSum+=VL_LengthNow; if(VR_CNowObj.GetESearchMax()==ZNsEnum::ZESearchMax_Stop) { if(VL_SearchCnt==VR_CNowObj.GetRepeatCntMax()) { AR_CStackOfTmplChain.AddSearchSum(-VL_LengthSum); break; }/* if(VL_SearchCnt==VR_CNowObj.GetRepeatCntMax())*/ } if(VR_CNowObj.GetRepeatCntMax()>0) { if(VL_SearchCnt>VR_CNowObj.GetRepeatCntMax()) { AR_CStackOfTmplChain.AddSearchSum(-VL_LengthSum); VL_LengthSum=0; break; }/* if(VL_SearchCnt>VR_CNowObj.GetRepeatCntMax())*/ }/* if(VR_CNowObj.GetRepeatCntMax()>0)*/ AR_CStackOfTmplChain.AddSearchSum(VL_LengthNow); if(ml_OriginLen<=ml_SearchPos+AR_CStackOfTmplChain.GetSearchSum()) { AR_CStackOfTmplChain.AddSearchSum(-VL_LengthSum); break; }/* if(ml_OriginLen<=ml_SearchPos+AR_CStackOfTmplChain.GetSearchSum())*/ }/* while(true)*/ if(VL_SearchCnt0 && VL_LengthSum>VR_CNowObj.GetSearchCharMax() ) ; if(CB_IsCharCntErr) { ARRE_ZERegErr=ZNsEnum::ZERegErr_CharCount; return 0; }/* if(CB_IsCharCntErr)*/ AR_CStackOfTmplChain.AddSearchSum(VL_LengthSum); const bool CB_IsCharSumErr= AR_CStackOfTmplChain.GetSearchSum()0 && AR_CStackOfTmplChain.GetSearchSum()>VR_CNowObj.GetSearchSumMax() ); if(CB_IsCharSumErr) { ARRE_ZERegErr=ZNsEnum::ZERegErr_CharSum; AR_CStackOfTmplChain. AddSearchSum( -VL_LengthSum ); return 0; }/* if(CB_IsCharSumErr)*/ if(TTmplTreeChain::EBoolNextObj<1) return VL_LengthSum; return VL_LengthSum + GetLengthByTmplTreeChain( AR_CStackOfTmplChain, AR_CTmplTreeChain.GetNextObj(), RR(ARRE_ZERegErr)); }/* if (VR_CNowObj.GetERegFlag()==ZNsEnum::ZERegFlag_BlockStart)*/ else if(VR_CNowObj.GetERegFlag()==ZNsEnum::ZERegFlag_BlockClose) { return 0; }/* else if(VR_CNowObj.GetERegFlag()==ZNsEnum::ZERegFlag_BlockClose)*/ TypeLength VL_LengthNow = VR_CNowObj.GetLength ( mpc_OriginChar+ml_SearchPos+AR_CStackOfTmplChain.GetSearchSum(), ml_OriginLen -ml_SearchPos-AR_CStackOfTmplChain.GetSearchSum() ); ////////////////////////////////////////////// if(VL_LengthNow 0 && VL_LengthNow>VR_CNowObj.GetSearchCharMax())) { ARRE_ZERegErr=ZNsEnum::ZERegErr_CharCount; return 0; } if(AR_CStackOfTmplChain.GetSearchSum()0 && VL_LengthNow>VR_CNowObj.GetSearchSumMax ())) { ARRE_ZERegErr=ZNsEnum::ZERegErr_CharSum ; return 0; }/* if(AR_CStackOfTmplChain.GetSearchSum()0 && VL_LengthNow>VR_CNowObj.GetSearchSumMax ()))*/ AR_CStackOfTmplChain.AddSearchSum(VL_LengthNow); if(TTmplTreeChain::EBoolNextObj<1) return VL_LengthNow; return VL_LengthNow + GetLengthByTmplTreeChain( AR_CStackOfTmplChain, AR_CTmplTreeChain.GetNextObj(), RR(ARRE_ZERegErr)); }/* template TypeLength GetLengthByTmplTreeChain ( TChainStack& AR_CStackOfTmplChain, const TTmplTreeChain& AR_CTmplTreeChain , ZNsEnum::ZERegErr& ARRE_ZERegErr ) /////////////////////////////////////////////////////*/ template TypeLength GetLengthByTmplTreeChain ( TTmplTreeChain& AR_CTmplChain, ZNsEnum::ZERegErr& ARRE_ZERegErr ) { ZNsInterface:: ZtCStackOfTmplChain VO_CStackOfTmplChain; return GetLengthByTmplTreeChain( VO_CStackOfTmplChain, AR_CTmplChain, RR(ARRE_ZERegErr)); }/* template TypeLength GetLengthByTmplTreeChain ( TTmplTreeChain& AR_CTmplChain, ZNsEnum::ZERegErr& ARRE_ZERegErr ) */ public: };/* template< typename TTypeChars=ZNsType::ZtCTypeChars > class ZtCSearchCursor ///////////////////////////////////*/ typedef ZNsType::ZtCTypeChars ZCTypeChars; typedef ZtCMainChars ZCMainChars; }/* namespace ZNsChars*/ typedef ZNsChars ::ZCTypeChars ZCTypeChars; typedef ZNsChars ::ZCMainChars ZCMainChars; typedef ZCMainChars::ZCChars ZCChars ; }/* namespace ZNsMain */ #endif // __ZCPPMAIIN__ZTCMAINCHARS_H__ /*///////////////////////////////////////////////////////////////////////////////////////// ¡á namespace ZNsChars ¿¡´Â ¹®ÀÚ¿­ °ü·Ã ÇÔ¼öµéÀÌ ¿À´Âµ¥, MainChars.H ¿¡ ÀÖ´Â ÇÔ¼öº¸´Ù Á» ´õ È®À强ÀÖ°Ô ¼³°èÇÏ¿´´Ù. ±×·±µ¥ »ç¿ëÇϱ⿡´Â ´Ù¼Ò º¹ÀâÇÏ´Ù. ±×¸®°í ZtCMainChars.H ´Â ÃßÈÄ¿¡ MainChars.H À» ´ëüÇÒ °ÍÀÌ´Ù. -- 2011-07-10 03:48:00 ±×·¡¼­ ¾Æ·¡ ¼±¾ðÀ» namespace std ¿¡ Ãß°¡Çؼ­, »ç¿ëÇϱ⠽±°Ô Çß´Ù. typedef ZNsChars::ZCTypeChars ZCTypeChars; typedef ZNsChars::ZCMainChars ZCMainChars; -- 2011-08-15 18:16:00 ¡á ZtCMainChars<>::DoStart() µîÀÇ ÇÔ¼ö¿¡ ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐ ¿©ºÎ¸¦, ZtCMainChars<> ÀÇ ÅÛÇø´ ÀÎÀÚ¿¡ bool µîÀÇ °ªÀ¸·Î ÁöÁ¤ÇÏ·Á°í ÇÏ¿´À¸³ª, utf8 µîÀÇ °æ¿ì¿¡ ¾ÆÁÖ °ñÄ¡ ¾ÆÇà °Í °°¾Æ¼­, ±âº»ÀûÀ¸·Î ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ÇÏ´Â °ÍÀ¸·Î ÇÑ´Ù. ±»ÀÌ ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ÇÏ°í ½ÍÀº °æ¿ì´Â, Á¤±Ô Ç¥Çö½Ä °ü·Ã object À» ¾²µµ·Ï ÇÏÀÚ. -- 2011-07-12 07:14:00 ¡á 'char ÀÇ int È®Àå¿¡ µû¸¥ ¹®Á¦ÀÇ ÄÚµå' ¾Æ·¡ ÇÔ¼ö¿¡¼­ int ZtCMainChars<>::Minus(TypeCharC*, TypeCharC*, TypeLength, TypeLength) return ¹®À» return VC_Minus; // VC_Minus ´Â *(VP_Left-1)-*(VP_Right-1) ¿¡¼­ return int(*(VP_Left-1))-int(*(VP_Right-1)); ·Î °íÃÆ´Ù. ÄÄÆÄÀÏ·¯¿¡ µû¶ó, À½¼ö char À» int ·Î È®ÀåÇÏ¸é ¾ç¼ö(+)°¡ µÉ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ÀÌ °ÍÀ» ¾ðÁ¦ ¾Ë¾Ò³Ä¸é, LG CNS ¿¡¼­ ÃæÀü±â ÇÁ·ÎÁ§Æ®¸¦ ÇÒ ¶§´Ù. ±×¶§ ELDK 4.0 tool chain ÀÇ ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇߴµ¥, NsUtility::CLoadSimUrlConfig_T<> À¸·Î ¼³Á¤ ÆÄÀÏÀ» ÀоîµéÀÏ ¶§, ÀÚ ²Ù ¸î¸î ¼³Á¤°ªÀ» ÀνÄÇÏÁö ¸øÇϰí ÀÖ¾ú´Ù. CLoadSimUrlConfig_T<> Àº ns1.cppschool.com °ú ns2.cppschool.com ¿¡¼­ Å×½ºÆ®µÈ Ŭ·¡½ºÀÌ´Ù. ±×·±µ¥µµ ÀÌ·± ¹®Á¦°¡ ¹ß»ýÇÑ °ÍÀÌ´Ù. ÀÌÀü¿¡ Hemose ÀÇ ¸Þ½ÅÀú ¼­¹ö¸¦ ¸¸µé ¶§¿¡µµ ÀÌ·± ¹®Á¦°¡ ÀÖ¾ú´Âµ¥, Ç®¸®Áö ¾ÊÀ» °Í °°Àº ¹®Á¦·Î ¿© ±â°í ¸Å¿ì ±äÀåÇϰí ÀÖ¾ú´Ù. CObjAVL.H ÆÄÀÏÀÇ AddKey() ÇÔ¼öÀÇ ºñ±³ÇÏ´Â ºÎºÐ¿¡ cout À¸·Î Ãâ·ÂÇØ º¸´Ï±î, Ç×»ó '>' Á¶°ÇÀÌ ¾Æ´Ñ°¡. ±×·¡¼­ ZtCMainChars<>::Minus() ÇÔ¼ö±îÁö ÆÄµé¾î°¡ ¸®ÅÏÇÏ´Â °ªÀ» º¸´Ï±î Ç×»ó ¾ç¼ö¿´´Ù! ÀÌ·²¼ö°¡, ¿ÞÂÊÀÌ ÀÛÀ¸¸é À½¼ö¸¦ ¸®ÅÏÇØ¾ß ÇÑ´Ù. ±×·± µ¥ Ç×»ó ¾ç¼ö¶ó´Ï. Á» ´õ Á¶»çÇØ º¸´Ï±î, ÇØ´ç ÄÄÆÄÀÏ·¯ÀÇ, char ÀÇ int Çü È®Àå¿¡ µû¸¥ ¹®Á¦ ¿´°í Äڵ带 À§Ã³·³ °íÄ¡°Ô µÇ¾ú´Ù. -- 2011-12-29 17:35:00 /////////////////////////////////////////////////////////////////////////////////////////*/