X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/22188d7396b885721afb6214377a88708910b22b..7bd30a12ade503fd135c686ecc98a6f6d5fecbeb:/include/wx/unichar.h diff --git a/include/wx/unichar.h b/include/wx/unichar.h index 8503c41992..5d019f52ba 100644 --- a/include/wx/unichar.h +++ b/include/wx/unichar.h @@ -68,6 +68,27 @@ public: // Returns true if the character is an ASCII character: bool IsAscii() const { return m_value < 0x80; } + // Returns true if the character is representable as a single byte in the + // current locale encoding and return this byte in output argument c (which + // must be non-NULL) + bool GetAsChar(char *c) const + { +#if wxUSE_UNICODE + if ( !IsAscii() ) + { +#if !wxUSE_UTF8_LOCALE_ONLY + if ( GetAsHi8bit(m_value, c) ) + return true; +#endif // !wxUSE_UTF8_LOCALE_ONLY + + return false; + } +#endif // wxUSE_UNICODE + + *c = wx_truncate_cast(char, m_value); + return true; + } + // Conversions to char and wchar_t types: all of those are needed to be // able to pass wxUniChars to verious standard narrow and wide character // functions @@ -155,7 +176,7 @@ private: { #if wxUSE_UNICODE if ( c < 0x80 ) - return c; + return wx_truncate_cast(char, c); return ToHi8bit(c); #else @@ -165,7 +186,8 @@ private: // helpers of the functions above called to deal with non-ASCII chars static value_type FromHi8bit(char c); - static char ToHi8bit(value_type c); + static char ToHi8bit(value_type v); + static bool GetAsHi8bit(value_type v, char *c); private: value_type m_value; @@ -209,6 +231,7 @@ public: #endif // wxUSE_UNICODE_UTF8 bool IsAscii() const { return UniChar().IsAscii(); } + bool GetAsChar(char *c) const { return UniChar().GetAsChar(c); } // Assignment operators: #if wxUSE_UNICODE_UTF8