+#if wxUSE_UNICODE_UTF8
+ // buffer for single UTF-8 character
+ struct Utf8CharBuffer
+ {
+ char data[5];
+ operator const char*() const { return data; }
+ };
+
+ // returns the character encoded as UTF-8
+ // (NB: implemented in stringops.cpp)
+ Utf8CharBuffer AsUTF8() const;
+#endif // wxUSE_UNICODE_UTF8
+
+ // 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