From: Vadim Zeitlin Date: Fri, 20 Jul 2007 01:10:22 +0000 (+0000) Subject: make To/From8bit() inline for performance reasons X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ce65118e6290c24828c81be08149136423daaff2 make To/From8bit() inline for performance reasons git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47578 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/unichar.h b/include/wx/unichar.h index b91db6676b..6ce0789215 100644 --- a/include/wx/unichar.h +++ b/include/wx/unichar.h @@ -137,8 +137,27 @@ public: private: - static value_type From8bit(char c); - static char To8bit(value_type c); + // notice that we implement these functions inline for 7-bit ASCII + // characters purely for performance reasons + static value_type From8bit(char c) + { + if ( (unsigned char)c < 0x80 ) + return c; + + return FromHi8bit(c); + } + + static char To8bit(value_type c) + { + if ( c < 0x80 ) + return c; + + return ToHi8bit(c); + } + + // helpers of the functions above called to deal with non-ASCII chars + static value_type FromHi8bit(char c); + static char ToHi8bit(value_type c); private: value_type m_value; diff --git a/src/common/unichar.cpp b/src/common/unichar.cpp index 4bfb6277b8..653e33f14e 100644 --- a/src/common/unichar.cpp +++ b/src/common/unichar.cpp @@ -36,12 +36,8 @@ // --------------------------------------------------------------------------- /* static */ -wxUniChar::value_type wxUniChar::From8bit(char c) +wxUniChar::value_type wxUniChar::FromHi8bit(char c) { - // all supported charsets have the first 128 characters same as ASCII: - if ( (unsigned char)c < 0x80 ) - return c; - #if wxUSE_UTF8_LOCALE_ONLY wxFAIL_MSG( "invalid UTF-8 character" ); return wxT('?'); // FIXME-UTF8: what to use as failure character? @@ -57,12 +53,8 @@ wxUniChar::value_type wxUniChar::From8bit(char c) } /* static */ -char wxUniChar::To8bit(wxUniChar::value_type c) +char wxUniChar::ToHi8bit(wxUniChar::value_type c) { - // all supported charsets have the first 128 characters same as ASCII: - if ( c < 0x80 ) - return c; - #if wxUSE_UTF8_LOCALE_ONLY wxFAIL_MSG( "character cannot be converted to single UTF-8 byte" ); return '?'; // FIXME-UTF8: what to use as failure character?