From f50f634daf9e34bfd090c7fd41d0f2301b0ebce5 Mon Sep 17 00:00:00 2001 From: zilmar Date: Mon, 30 Nov 2015 21:14:14 +1100 Subject: [PATCH] [Project64] Change file handling to be ansi --- Source/Common/std string.cpp | 338 +++++++++--------- Source/Common/std string.h | 81 +++-- .../User Interface/Rom Browser Class.cpp | 6 +- 3 files changed, 216 insertions(+), 209 deletions(-) diff --git a/Source/Common/std string.cpp b/Source/Common/std string.cpp index 9deb6067c..a868d2ada 100644 --- a/Source/Common/std string.cpp +++ b/Source/Common/std string.cpp @@ -6,49 +6,49 @@ stdstr::stdstr() { } -stdstr::stdstr( const std::string & str ) : - std::string(str) +stdstr::stdstr(const std::string & str) : +std::string(str) { } -stdstr::stdstr( const stdstr & str ) : - std::string((const std::string &)str) +stdstr::stdstr(const stdstr & str) : +std::string((const std::string &)str) { } -stdstr::stdstr( const char * str ) : +stdstr::stdstr(const char * str) : std::string(str ? str : "") { } strvector stdstr::Tokenize(const char * delimiter) const { - strvector tokens; + strvector tokens; - stdstr::size_type lastPos = find_first_not_of(delimiter, 0); - stdstr::size_type pos = find_first_of(delimiter, lastPos); - while (stdstr::npos != pos || stdstr::npos != lastPos) - { - tokens.push_back(substr(lastPos, pos - lastPos)); - lastPos = find_first_not_of(delimiter, pos); - pos = find_first_of(delimiter, lastPos); - } - return tokens; + stdstr::size_type lastPos = find_first_not_of(delimiter, 0); + stdstr::size_type pos = find_first_of(delimiter, lastPos); + while (stdstr::npos != pos || stdstr::npos != lastPos) + { + tokens.push_back(substr(lastPos, pos - lastPos)); + lastPos = find_first_not_of(delimiter, pos); + pos = find_first_of(delimiter, lastPos); + } + return tokens; } strvector stdstr::Tokenize(char delimiter) const { - strvector tokens; + strvector tokens; - stdstr::size_type lastPos = find_first_not_of(delimiter, 0); - stdstr::size_type pos = find_first_of(delimiter, lastPos); - while (stdstr::npos != pos || stdstr::npos != lastPos) - { - tokens.push_back(substr(lastPos, pos - lastPos)); - lastPos = find_first_not_of(delimiter, pos); - pos = find_first_of(delimiter, lastPos); - } - return tokens; + stdstr::size_type lastPos = find_first_not_of(delimiter, 0); + stdstr::size_type pos = find_first_of(delimiter, lastPos); + while (stdstr::npos != pos || stdstr::npos != lastPos) + { + tokens.push_back(substr(lastPos, pos - lastPos)); + lastPos = find_first_not_of(delimiter, pos); + pos = find_first_of(delimiter, lastPos); + } + return tokens; } void stdstr::ArgFormat(const char * strFormat, va_list & args) @@ -56,188 +56,190 @@ void stdstr::ArgFormat(const char * strFormat, va_list & args) #pragma warning(push) #pragma warning(disable:4996) - size_t nlen = _vscprintf( strFormat, args ) + 1; - char * buffer = (char *)alloca(nlen * sizeof(char)); - buffer[nlen - 1] = 0; - if(buffer != NULL) - { - vsprintf( buffer, strFormat , args ); - *this = buffer; - } + size_t nlen = _vscprintf(strFormat, args) + 1; + char * buffer = (char *)alloca(nlen * sizeof(char)); + buffer[nlen - 1] = 0; + if (buffer != NULL) + { + vsprintf(buffer, strFormat, args); + *this = buffer; + } #pragma warning(pop) } void stdstr::Format(const char * strFormat, ...) { - va_list args; - va_start(args, strFormat); - ArgFormat(strFormat,args); - va_end(args); + va_list args; + va_start(args, strFormat); + ArgFormat(strFormat, args); + va_end(args); } stdstr& stdstr::ToLower(void) { - std::transform(begin(), end(), begin(), (int(*)(int)) tolower); - return *this; + std::transform(begin(), end(), begin(), (int(*)(int)) tolower); + return *this; } stdstr& stdstr::ToUpper(void) { - std::transform(begin(), end(), begin(), (int(*)(int)) toupper); - return *this; + std::transform(begin(), end(), begin(), (int(*)(int)) toupper); + return *this; } -void stdstr::Replace(const char search, const char replace ) +void stdstr::Replace(const char search, const char replace) { - std::string& str = *this; - std::string::size_type pos = str.find( search ); - while ( pos != std::string::npos ) - { - str.replace( pos, 1, &replace ); - pos = str.find( search, pos + 1 ); - } + std::string& str = *this; + std::string::size_type pos = str.find(search); + while (pos != std::string::npos) + { + str.replace(pos, 1, &replace); + pos = str.find(search, pos + 1); + } } -void stdstr::Replace(const char * search, const char replace ) +void stdstr::Replace(const char * search, const char replace) { - std::string& str = *this; - std::string::size_type pos = str.find( search ); - size_t SearchSize = strlen(search); - while ( pos != std::string::npos ) - { - str.replace( pos, SearchSize, &replace ); - pos = str.find( search, pos + 1 ); - } + std::string& str = *this; + std::string::size_type pos = str.find(search); + size_t SearchSize = strlen(search); + while (pos != std::string::npos) + { + str.replace(pos, SearchSize, &replace); + pos = str.find(search, pos + 1); + } } -void stdstr::Replace(const std::string& search, const std::string& replace ) +void stdstr::Replace(const std::string& search, const std::string& replace) { - std::string& str = *this; - std::string::size_type pos = str.find( search ); - size_t SearchSize = search.size(); - while ( pos != std::string::npos ) - { - str.replace( pos, SearchSize, replace ); - pos = str.find( search, pos + replace.length() ); - } + std::string& str = *this; + std::string::size_type pos = str.find(search); + size_t SearchSize = search.size(); + while (pos != std::string::npos) + { + str.replace(pos, SearchSize, replace); + pos = str.find(search, pos + replace.length()); + } } -stdstr & stdstr::TrimLeft (const char * chars2remove) +stdstr & stdstr::TrimLeft(const char * chars2remove) { - if (!empty()) - { - std::string::size_type pos = find_first_not_of(chars2remove); - if (pos != std::string::npos) - { - erase(0,pos); - } else { - erase(begin(), end()); // make empty - } - } - return *this; + if (!empty()) + { + std::string::size_type pos = find_first_not_of(chars2remove); + if (pos != std::string::npos) + { + erase(0, pos); + } + else { + erase(begin(), end()); // make empty + } + } + return *this; } -stdstr & stdstr::TrimRight (const char * chars2remove) +stdstr & stdstr::TrimRight(const char * chars2remove) { - if (!empty()) - { - std::string::size_type pos = find_last_not_of(chars2remove); - if (pos != std::string::npos) - { - erase(pos+1); - } else { - erase(begin(), end()); // make empty - } - } - return *this; + if (!empty()) + { + std::string::size_type pos = find_last_not_of(chars2remove); + if (pos != std::string::npos) + { + erase(pos + 1); + } + else { + erase(begin(), end()); // make empty + } + } + return *this; } -stdstr & stdstr::Trim (const char * chars2remove) +stdstr & stdstr::Trim(const char * chars2remove) { - if (!empty()) - { - std::string::size_type pos = find_first_not_of(chars2remove); - if (pos != std::string::npos) - { - erase(0,pos); - } - else - { - erase(begin(), end()); // make empty - } + if (!empty()) + { + std::string::size_type pos = find_first_not_of(chars2remove); + if (pos != std::string::npos) + { + erase(0, pos); + } + else + { + erase(begin(), end()); // make empty + } - pos = find_last_not_of(chars2remove); - if (pos != std::string::npos) - { - erase(pos+1); - } - else - { - erase(begin(), end()); // make empty - } - } - return *this; + pos = find_last_not_of(chars2remove); + if (pos != std::string::npos) + { + erase(pos + 1); + } + else + { + erase(begin(), end()); // make empty + } + } + return *this; } -stdstr & stdstr::FromUTF16 ( const wchar_t * UTF16Source, bool * bSuccess ) +stdstr & stdstr::FromUTF16(const wchar_t * UTF16Source, bool * bSuccess) { - bool bConverted = false; + bool bConverted = false; - if (UTF16Source == NULL) - { - *this = ""; - bConverted = true; - } - else if(wcslen(UTF16Source) > 0) - { - DWORD nNeeded = WideCharToMultiByte(CP_UTF8, 0, UTF16Source, -1, NULL, 0, NULL, NULL); - if(nNeeded > 0) - { - char * buf = (char *)alloca(nNeeded + 1); - if( buf != NULL ) - { - memset(buf, 0, nNeeded + 1); + if (UTF16Source == NULL) + { + *this = ""; + bConverted = true; + } + else if (wcslen(UTF16Source) > 0) + { + DWORD nNeeded = WideCharToMultiByte(CP_UTF8, 0, UTF16Source, -1, NULL, 0, NULL, NULL); + if (nNeeded > 0) + { + char * buf = (char *)alloca(nNeeded + 1); + if (buf != NULL) + { + memset(buf, 0, nNeeded + 1); - nNeeded = WideCharToMultiByte(CP_UTF8, 0, UTF16Source, -1, buf, nNeeded, NULL, NULL); - if (nNeeded) - { - *this = buf; - bConverted = true; - } - } - } - } - if (bSuccess) - { - *bSuccess = bConverted; - } - return *this; + nNeeded = WideCharToMultiByte(CP_UTF8, 0, UTF16Source, -1, buf, nNeeded, NULL, NULL); + if (nNeeded) + { + *this = buf; + bConverted = true; + } + } + } + } + if (bSuccess) + { + *bSuccess = bConverted; + } + return *this; } -std::wstring stdstr::ToUTF16 ( bool * bSuccess) +std::wstring stdstr::ToUTF16(UINT CodePage, bool * bSuccess) { - bool bConverted = false; - std::wstring res; + bool bConverted = false; + std::wstring res; - DWORD nNeeded = MultiByteToWideChar(CP_UTF8, 0, this->c_str(), (int)this->length(), NULL, 0); - if(nNeeded > 0) - { - wchar_t * buf = (wchar_t *)alloca((nNeeded + 1) * sizeof(wchar_t)); - if( buf != NULL ) - { - memset(buf, 0, (nNeeded + 1) * sizeof(wchar_t)); + DWORD nNeeded = MultiByteToWideChar(CodePage, 0, this->c_str(), (int)this->length(), NULL, 0); + if (nNeeded > 0) + { + wchar_t * buf = (wchar_t *)alloca((nNeeded + 1) * sizeof(wchar_t)); + if (buf != NULL) + { + memset(buf, 0, (nNeeded + 1) * sizeof(wchar_t)); - nNeeded = MultiByteToWideChar(CP_UTF8, 0, this->c_str(), (int)this->length(), buf, nNeeded); - if (nNeeded) - { - res = buf; - bConverted = true; - } - } - } - if (bSuccess) - { - *bSuccess = bConverted; - } - return res; -} + nNeeded = MultiByteToWideChar(CodePage, 0, this->c_str(), (int)this->length(), buf, nNeeded); + if (nNeeded) + { + res = buf; + bConverted = true; + } + } + } + if (bSuccess) + { + *bSuccess = bConverted; + } + return res; +} \ No newline at end of file diff --git a/Source/Common/std string.h b/Source/Common/std string.h index c7ebd007e..9fd743068 100644 --- a/Source/Common/std string.h +++ b/Source/Common/std string.h @@ -9,63 +9,68 @@ class stdstr; typedef std::vector strvector; -class stdstr : - public std::string +class stdstr : + public std::string { public: - stdstr(); - stdstr( const std::string & str ); - stdstr( const stdstr & str ); - stdstr( const char * str ); + enum + { + CODEPAGE_UTF8 = 65001, + CODEPAGE_932 = 932, + }; - strvector Tokenize ( char delimiter ) const; - strvector Tokenize ( const char * delimiter ) const; - void Format ( const char * strFormat, ... ); - stdstr& ToLower ( void ); - stdstr& ToUpper ( void ); + stdstr(); + stdstr(const std::string & str); + stdstr(const stdstr & str); + stdstr(const char * str); - void Replace ( const char search, const char replace ); - void Replace ( const char * search, const char replace ); - void Replace ( const std::string & search, const std::string & replace ); + strvector Tokenize(char delimiter) const; + strvector Tokenize(const char * delimiter) const; + void Format(const char * strFormat, ...); + stdstr& ToLower(void); + stdstr& ToUpper(void); - stdstr & Trim ( const char * chars2remove = "\t " ); - stdstr & TrimLeft ( const char * chars2remove = "\t " ); - stdstr & TrimRight ( const char * chars2remove = "\t " ); + void Replace(const char search, const char replace); + void Replace(const char * search, const char replace); + void Replace(const std::string & search, const std::string & replace); - stdstr & FromUTF16 ( const wchar_t * UTF16Source, bool * bSuccess = NULL); - std::wstring ToUTF16 ( bool * bSuccess = NULL); + stdstr & Trim(const char * chars2remove = "\t "); + stdstr & TrimLeft(const char * chars2remove = "\t "); + stdstr & TrimRight(const char * chars2remove = "\t "); - void ArgFormat( const char * strFormat, va_list & args); + stdstr & FromUTF16(const wchar_t * UTF16Source, bool * bSuccess = NULL); + std::wstring ToUTF16(unsigned int CodePage = CODEPAGE_UTF8, bool * bSuccess = NULL); -}; + void ArgFormat(const char * strFormat, va_list & args); +}; -class stdstr_f: public stdstr +class stdstr_f : public stdstr { public: - stdstr_f(const char * strFormat, ...) - { - va_list args; - va_start(args, strFormat); - ArgFormat(strFormat,args); - va_end(args); - } + stdstr_f(const char * strFormat, ...) + { + va_list args; + va_start(args, strFormat); + ArgFormat(strFormat, args); + va_end(args); + } }; class stdwstr_f : public std::wstring { public: - stdwstr_f(const wchar_t * strFormat, ...) - { - va_list args; - va_start(args, strFormat); + stdwstr_f(const wchar_t * strFormat, ...) + { + va_list args; + va_start(args, strFormat); - wchar_t Msg[1000]; - _vsnwprintf(Msg, sizeof(Msg) - 1, strFormat, args); + wchar_t Msg[1000]; + _vsnwprintf(Msg, sizeof(Msg) - 1, strFormat, args); - va_end(args); + va_end(args); - this->assign(Msg); - } + this->assign(Msg); + } }; typedef std::list strlist; diff --git a/Source/Project64/User Interface/Rom Browser Class.cpp b/Source/Project64/User Interface/Rom Browser Class.cpp index 7fc323cfd..1e0762cdc 100644 --- a/Source/Project64/User Interface/Rom Browser Class.cpp +++ b/Source/Project64/User Interface/Rom Browser Class.cpp @@ -474,7 +474,7 @@ bool CRomBrowser::FillRomInfo(ROM_INFO * pRomInfo) InternalName[count + 1] ^= InternalName[count + 2]; } InternalName[20] = '\0'; - wcscpy(pRomInfo->InternalName, stdstr(InternalName).ToUTF16().c_str()); + wcscpy(pRomInfo->InternalName, stdstr(InternalName).ToUTF16(stdstr::CODEPAGE_932).c_str()); } pRomInfo->CartID[0] = *(RomData + 0x3F); pRomInfo->CartID[1] = *(RomData + 0x3E); @@ -728,7 +728,7 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c InternalName[count + 1] ^= InternalName[count + 2]; } InternalName[20] = '\0'; - wcscpy(RomInfo.InternalName, stdstr(InternalName).ToUTF16().c_str()); + wcscpy(RomInfo.InternalName, stdstr(InternalName).ToUTF16(stdstr::CODEPAGE_932).c_str()); } RomInfo.RomSize = (int32_t)f->Size; @@ -1431,7 +1431,7 @@ void CRomBrowser::RomList_GetDispInfo(uint32_t pnmh) break; default: wcsncpy(lpdi->item.pszText, L" ", lpdi->item.cchTextMax); } - if (lpdi->item.pszText == NULL || wcslen(lpdi->item.pszText) == 0) { wcscpy(lpdi->item.pszText, L" "); } + if (lpdi->item.pszText == NULL || wcslen(lpdi->item.pszText) == 0) { lpdi->item.pszText = L" "; } } void CRomBrowser::RomList_OpenRom(uint32_t /*pnmh*/)