X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2c74c558766a4f50be92c4a33d4fdbb11cf47d2c..c1dda21b64f300d89cbc084802082d37c694e971:/src/common/strconv.cpp diff --git a/src/common/strconv.cpp b/src/common/strconv.cpp index f442e54dcd..2fd2d740b3 100644 --- a/src/common/strconv.cpp +++ b/src/common/strconv.cpp @@ -16,9 +16,6 @@ #include "wx/wxprec.h" #ifndef WX_PRECOMP - #ifdef __WXMSW__ - #include "wx/msw/missing.h" - #endif #include "wx/intl.h" #include "wx/log.h" #include "wx/utils.h" @@ -29,10 +26,6 @@ #if wxUSE_WCHAR_T -#ifdef __WINDOWS__ - #include "wx/msw/private.h" -#endif - #ifndef __WXWINCE__ #include #endif @@ -42,6 +35,8 @@ #include #if defined(__WIN32__) && !defined(__WXMICROWIN__) + #include "wx/msw/private.h" + #include "wx/msw/missing.h" #define wxHAVE_WIN32_MB2WC #endif @@ -3518,6 +3513,19 @@ void wxCSConv::CreateConvIfNeeded() const } } +bool wxCSConv::IsOk() const +{ + CreateConvIfNeeded(); + + // special case: no convReal created for wxFONTENCODING_ISO8859_1 + if ( m_encoding == wxFONTENCODING_ISO8859_1 ) + return true; // always ok as we do it ourselves + + // m_convReal->IsOk() is called at its own creation, so we know it must + // be ok if m_convReal is non-NULL + return m_convReal != NULL; +} + size_t wxCSConv::ToWChar(wchar_t *dst, size_t dstLen, const char *src, size_t srcLen) const { @@ -3637,9 +3645,39 @@ WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvFileName = & #else wxConvUTF8Obj; #endif -#else +#else // !__WXOSX__ wxConvLibcObj; -#endif +#endif // __WXOSX__/!__WXOSX__ + +#if wxUSE_UNICODE + +wxWCharBuffer wxSafeConvertMB2WX(const char *s) +{ + if ( !s ) + return wxWCharBuffer(); + + wxWCharBuffer wbuf(wxConvLibc.cMB2WX(s)); + if ( !wbuf ) + wbuf = wxConvUTF8.cMB2WX(s); + if ( !wbuf ) + wbuf = wxConvISO8859_1.cMB2WX(s); + + return wbuf; +} + +wxCharBuffer wxSafeConvertWX2MB(const wchar_t *ws) +{ + if ( !ws ) + return wxCharBuffer(); + + wxCharBuffer buf(wxConvLibc.cWX2MB(ws)); + if ( !buf ) + buf = wxMBConvUTF8(wxMBConvUTF8::MAP_INVALID_UTF8_TO_OCTAL).cWX2MB(ws); + + return buf; +} + +#endif // wxUSE_UNICODE #else // !wxUSE_WCHAR_T