X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bfb6847df68d5d048749a83d04f1fda0188ab9d2..db7035e48a4ccc6265fa01949cb92db3c6b6c17f:/include/wx/stringops.h diff --git a/include/wx/stringops.h b/include/wx/stringops.h index f3046794be..2e36900adc 100644 --- a/include/wx/stringops.h +++ b/include/wx/stringops.h @@ -70,7 +70,7 @@ struct WXDLLIMPEXP_BASE wxStringOperationsUtf8 #endif // table of offsets to skip forward when iterating over UTF-8 sequence - static unsigned char ms_utf8IterTable[256]; + static const unsigned char ms_utf8IterTable[256]; template @@ -140,15 +140,10 @@ struct WXDLLIMPEXP_BASE wxStringOperationsUtf8 return dist; } - // buffer for single UTF-8 character - struct Utf8CharBuffer - { - char data[5]; - operator const char*() const { return data; } - }; - // encodes the character as UTF-8: - static Utf8CharBuffer EncodeChar(const wxUniChar& ch); + typedef wxUniChar::Utf8CharBuffer Utf8CharBuffer; + static Utf8CharBuffer EncodeChar(const wxUniChar& ch) + { return ch.AsUTF8(); } // returns n copies of ch encoded in UTF-8 string static wxCharBuffer EncodeNChars(size_t n, const wxUniChar& ch); @@ -161,7 +156,15 @@ struct WXDLLIMPEXP_BASE wxStringOperationsUtf8 } // decodes single UTF-8 character from UTF-8 string - static wxUniChar DecodeChar(wxStringImpl::const_iterator i); + static wxUniChar DecodeChar(wxStringImpl::const_iterator i) + { + if ( (unsigned char)*i < 0x80 ) + return (int)*i; + return DecodeNonAsciiChar(i); + } + +private: + static wxUniChar DecodeNonAsciiChar(wxStringImpl::const_iterator i); }; #endif // wxUSE_UNICODE_UTF8