GString SP2::GGeneralEventHandler::ReplaceNextPattern(GString in_sSentence, GString in_ReplacingString, GString in_sPattern) const { UINT32 l_iCurrentPosition = 0; UINT32 l_iStartPosition = 0; bool l_bSuccess = false; for(UINT32 i=0; i<in_sSentence.size(); i++) { if(in_sSentence.at(i) == in_sPattern.at(l_iCurrentPosition)) { if(l_iCurrentPosition == 0) l_iStartPosition = i; l_iCurrentPosition++; if(l_iCurrentPosition == in_sPattern.size()) { l_bSuccess = true; break; } } else { if(l_iCurrentPosition > 0) { l_iCurrentPosition = 0; i = l_iStartPosition + 1; } } } if(l_bSuccess) { GString l_Results; l_Results += in_sSentence.substr(0,l_iStartPosition); l_Results += in_ReplacingString; l_Results += in_sSentence.substr(l_iStartPosition+in_sPattern.size(),in_sSentence.size()); return l_Results; } return L""; }
GString RemoveComments(const GString Str) { GString Result; int k = 0; int AwatingEOL = 0; ptrdiff_t len = Str.length() - 1; for (ptrdiff_t i = 0; i < len; i++) { if (AwatingEOL) { if (Str[i] != '\n') continue; else { AwatingEOL = 0; continue; } } else { if (Str[i] == '/' && Str[i + 1] == '/') { AwatingEOL = true; continue; } else { Result.push_back(Str.at(i)); k++; } } } Utility::ReplaceAll(Result, "[\\n\\r ]", ""); return Result; }