X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/896e226aa260920835f70f4b2689d92cfc1615e8..34af0de434db039e927805e3dd13fee74979c4e9:/src/common/wxchar.cpp diff --git a/src/common/wxchar.cpp b/src/common/wxchar.cpp index 94b56cde9e..d70f0f5350 100644 --- a/src/common/wxchar.cpp +++ b/src/common/wxchar.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wxchar.cpp +// Name: src/common/wxchar.cpp // Purpose: wxChar implementation // Author: Ove Kåven // Modified by: Ron Lee @@ -9,10 +9,6 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "wxchar.h" -#endif - // =========================================================================== // headers, declarations, constants // =========================================================================== @@ -65,7 +61,7 @@ using namespace std ; size_t WXDLLEXPORT wxMB2WC(wchar_t *buf, const char *psz, size_t n) { // assume that we have mbsrtowcs() too if we have wcsrtombs() -#if HAVE_WCSRTOMBS +#ifdef HAVE_WCSRTOMBS mbstate_t mbstate; memset(&mbstate, 0, sizeof(mbstate_t)); #endif @@ -82,6 +78,12 @@ size_t WXDLLEXPORT wxMB2WC(wchar_t *buf, const char *psz, size_t n) #endif } + // note that we rely on common (and required by Unix98 but unfortunately not + // C99) extension which allows to call mbs(r)towcs() with NULL output pointer + // to just get the size of the needed buffer -- this is needed as otherwise + // we have no idea about how much space we need and if the CRT doesn't + // support it (the only currently known example being Metrowerks, see + // wx/wxchar.h) we don't use its mbstowcs() at all #ifdef HAVE_WCSRTOMBS return mbsrtowcs((wchar_t *) NULL, &psz, 0, &mbstate); #else @@ -91,7 +93,7 @@ size_t WXDLLEXPORT wxMB2WC(wchar_t *buf, const char *psz, size_t n) size_t WXDLLEXPORT wxWC2MB(char *buf, const wchar_t *pwz, size_t n) { -#if HAVE_WCSRTOMBS +#ifdef HAVE_WCSRTOMBS mbstate_t mbstate; memset(&mbstate, 0, sizeof(mbstate_t)); #endif @@ -102,14 +104,14 @@ size_t WXDLLEXPORT wxWC2MB(char *buf, const wchar_t *pwz, size_t n) if (n) *buf = '\0'; return 0; } -#if HAVE_WCSRTOMBS +#ifdef HAVE_WCSRTOMBS return wcsrtombs(buf, &pwz, n, &mbstate); #else return wxWcstombs(buf, pwz, n); #endif } -#if HAVE_WCSRTOMBS +#ifdef HAVE_WCSRTOMBS return wcsrtombs((char *) NULL, &pwz, 0, &mbstate); #else return wxWcstombs((char *) NULL, pwz, 0); @@ -1070,7 +1072,7 @@ WXDLLEXPORT int wxTolower(wxChar ch) { return (wxChar)CharLower((LPTSTR)(ch)); } WXDLLEXPORT int wxToupper(wxChar ch) { return (wxChar)CharUpper((LPTSTR)(ch)); } #endif -#if defined(__DARWIN__) && ( MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_2 ) +#ifdef wxNEED_WX_MBSTOWCS WXDLLEXPORT size_t wxMbstowcs (wchar_t * out, const char * in, size_t outlen) { @@ -1094,7 +1096,7 @@ WXDLLEXPORT size_t wxMbstowcs (wchar_t * out, const char * in, size_t outlen) return in - origin; } -WXDLLEXPORT size_t wxWcstombs (char * out, const wchar_t * in, size_t outlen) +WXDLLEXPORT size_t wxWcstombs (char * out, const wchar_t * in, size_t outlen) { if (!out) { @@ -1116,6 +1118,8 @@ WXDLLEXPORT size_t wxWcstombs (char * out, const wchar_t * in, size_t outlen) return in - origin; } +#endif // wxNEED_WX_MBSTOWCS + #if defined(wxNEED_WX_CTYPE_H) #include @@ -1147,8 +1151,6 @@ WXDLLEXPORT int wxToupper(wxChar ch) { return (wxChar)toupper((char)(ch)); } #endif // wxNEED_WX_CTYPE_H -#endif // defined(__DARWIN__) and OSX <= 10.2 - #ifndef wxStrdupA WXDLLEXPORT char *wxStrdupA(const char *s) @@ -1451,8 +1453,8 @@ double WXDLLEXPORT wxAtof(const wxChar *psz) wxString str(psz); if (str.ToDouble(& d)) return d; - else - return 0.0; + + return 0.0; #else return atof(wxConvLibc.cWX2MB(psz)); #endif