#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<typename Iterator>
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);
}
// 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