From: <man...@us...> - 2014-03-24 10:32:20
|
Revision: 3946 http://sourceforge.net/p/modplug/code/3946 Author: manxorist Date: 2014-03-24 10:32:06 +0000 (Mon, 24 Mar 2014) Log Message: ----------- [Ref] Add proper string type conversion functions for CStringW. Modified Paths: -------------- trunk/OpenMPT/common/mptPathString.h trunk/OpenMPT/common/mptString.cpp trunk/OpenMPT/common/mptString.h trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/View_tre.cpp Modified: trunk/OpenMPT/common/mptPathString.h =================================================================== --- trunk/OpenMPT/common/mptPathString.h 2014-03-24 02:36:34 UTC (rev 3945) +++ trunk/OpenMPT/common/mptPathString.h 2014-03-24 10:32:06 UTC (rev 3946) @@ -146,7 +146,6 @@ #endif static PathString FromUTF8(const std::string &path) { return PathString(mpt::ToWide(mpt::CharsetUTF8, path)); } static PathString FromWide(const std::wstring &path) { return PathString(path); } - static PathString FromWide(const wchar_t *path) { return PathString(path); } RawPathString AsNative() const { return path; } static PathString FromNative(const RawPathString &path) { return PathString(path); } #if defined(_MFC_VER) @@ -159,7 +158,15 @@ // really special purpose, if !UNICODE, encode unicode in CString as UTF8: static mpt::PathString TunnelOutofCString(const CString &path); static CString TunnelIntoCString(const mpt::PathString &path); + // CStringW +#ifdef UNICODE + MPT_DEPRECATED_PATH CString ToCStringW() const { return mpt::ToCString(path); } + MPT_DEPRECATED_PATH static PathString FromCStringW(const CString &path) { return PathString(mpt::ToWide(path)); } +#else + CStringW ToCStringW() const { return mpt::ToCStringW(path); } + static PathString FromCStringW(const CStringW &path) { return PathString(mpt::ToWide(path)); } #endif +#endif #else // !WIN32 @@ -234,7 +241,7 @@ } #if defined(_MFC_VER) -MPT_DEPRECATED_PATH void SanitizeFilename(CString &str); +void SanitizeFilename(CString &str); #endif #endif // MODPLUG_TRACKER Modified: trunk/OpenMPT/common/mptString.cpp =================================================================== --- trunk/OpenMPT/common/mptString.cpp 2014-03-24 02:36:34 UTC (rev 3945) +++ trunk/OpenMPT/common/mptString.cpp 2014-03-24 10:32:06 UTC (rev 3946) @@ -1100,9 +1100,46 @@ #endif } +#ifdef UNICODE +// inline +#else +CStringW ToCStringW(const CString &str) +{ + return ToWide(str).c_str(); +} +CStringW ToCStringW(const std::wstring &str) +{ + return str.c_str(); +} +CStringW ToCStringW(Charset from, const std::string &str) +{ + return ToWide(from, str).c_str(); +} +CStringW ToCStringW(const CStringW &str) +{ + return str; +} +std::wstring ToWide(const CStringW &str) +{ + return str.GetString(); +} +std::string ToLocale(const CStringW &str) +{ + return ToLocale(str.GetString()); +} +std::string To(Charset to, const CStringW &str) +{ + return To(to, str.GetString()); +} +CString ToCString(const CStringW &str) +{ + return ToLocale(str).c_str(); +} #endif +#endif + } // namespace mpt Modified: trunk/OpenMPT/common/mptString.h =================================================================== --- trunk/OpenMPT/common/mptString.h 2014-03-24 02:36:34 UTC (rev 3945) +++ trunk/OpenMPT/common/mptString.h 2014-03-24 10:32:06 UTC (rev 3946) @@ -230,9 +230,24 @@ static inline std::string To(Charset to, const wchar_t * str) { return To(to, str ? std::wstring(str) : std::wstring()); } static inline CString ToCString(const wchar_t * str) { return ToCString(str ? std::wstring(str) : std::wstring()); } +#ifdef UNICODE +MPT_DEPRECATED_PATH static inline CString ToCStringW(const CString &str) { return ToCString(str); } +MPT_DEPRECATED_PATH CString ToCStringW(const std::wstring &str) { return ToCString(str); } +MPT_DEPRECATED_PATH CString ToCStringW(Charset from, const std::string &str) { return ToCString(from, str); } +#else +CStringW ToCStringW(const CString &str); +CStringW ToCStringW(const std::wstring &str); +CStringW ToCStringW(Charset from, const std::string &str); +CStringW ToCStringW(const CStringW &str); +std::wstring ToWide(const CStringW &str); +std::string ToLocale(const CStringW &str); +std::string To(Charset to, const CStringW &str); +CString ToCString(const CStringW &str); #endif +#endif + } // namespace mpt Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-24 02:36:34 UTC (rev 3945) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-24 10:32:06 UTC (rev 3946) @@ -1086,11 +1086,12 @@ if(doBatchSave) { CString sSampleNumber; - TCHAR sSampleName[64], sSampleFilename[64]; + CString sSampleName; + CString sSampleFilename; sSampleNumber.Format(sNumberFormat, smp); - strcpy(sSampleName, (m_sndFile.m_szNames[smp]) ? m_sndFile.m_szNames[smp] : "untitled"); - strcpy(sSampleFilename, (m_sndFile.GetSample(smp).filename[0]) ? m_sndFile.GetSample(smp).filename : m_sndFile.m_szNames[smp]); + sSampleName = (m_sndFile.m_szNames[smp][0]) ? m_sndFile.m_szNames[smp] : "untitled"; + sSampleFilename = (m_sndFile.GetSample(smp).filename[0]) ? m_sndFile.GetSample(smp).filename : m_sndFile.m_szNames[smp]; SanitizeFilename(sSampleName); SanitizeFilename(sSampleFilename); Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2014-03-24 02:36:34 UTC (rev 3945) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2014-03-24 10:32:06 UTC (rev 3946) @@ -319,7 +319,7 @@ { mpt::PathString fullPath = m_InstrLibPath; if(!fullPath.HasTrailingSlash()) fullPath += MPT_PATHSTRING("\\"); - return fullPath + mpt::PathString::FromWide(GetItemTextW(hItem)); + return fullPath + mpt::PathString::FromCStringW(GetItemTextW(hItem)); } @@ -1261,7 +1261,7 @@ case MODITEM_INSLIB_SONG: case MODITEM_INSLIB_FOLDER: - InstrumentLibraryChDir(mpt::PathString::FromWide(GetItemTextW(hItem)), modItem.type == MODITEM_INSLIB_SONG); + InstrumentLibraryChDir(mpt::PathString::FromCStringW(GetItemTextW(hItem)), modItem.type == MODITEM_INSLIB_SONG); return TRUE; case MODITEM_HDR_SONG: @@ -3268,7 +3268,7 @@ HTREEITEM hItem = GetChildItem(m_hInsLib); while (hItem != NULL) { - const mpt::PathString str = mpt::PathString::FromWide(GetItemTextW(hItem)); + const mpt::PathString str = mpt::PathString::FromCStringW(GetItemTextW(hItem)); if(!mpt::PathString::CompareNoCase(str, m_InstrLibHighlightPath)) { hActive = hItem; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |