]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxUniChar::AsUTF8() for easy conversion in UTF8 build
authorVáclav Slavík <vslavik@fastmail.fm>
Fri, 8 Jun 2007 20:17:34 +0000 (20:17 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Fri, 8 Jun 2007 20:17:34 +0000 (20:17 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46376 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/stringops.h
include/wx/unichar.h
src/common/stringops.cpp

index f3046794beece784609001df31127e394d6639be..b8ba8abd749c21430986cedad4f7dc272877528e 100644 (file)
@@ -140,15 +140,10 @@ struct WXDLLIMPEXP_BASE wxStringOperationsUtf8
         return dist;
     }
 
         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:
     // 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);
 
     // returns n copies of ch encoded in UTF-8 string
     static wxCharBuffer EncodeNChars(size_t n, const wxUniChar& ch);
index 352018ef25082dc70b35af6ed9b858b643c8f39d..0ecba58e9afff08e7fc4b489b3f16ef0f1a1dcb7 100644 (file)
@@ -71,6 +71,19 @@ public:
     // Returns Unicode code point value of the character
     value_type GetValue() const { return m_value; }
 
     // Returns Unicode code point value of the character
     value_type GetValue() const { return m_value; }
 
+#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 an ASCII character:
     bool IsAscii() const { return m_value < 0x80; }
 
@@ -182,6 +195,11 @@ public:
 #endif
 
     wxUniChar::value_type GetValue() const { return UniChar().GetValue(); }
 #endif
 
     wxUniChar::value_type GetValue() const { return UniChar().GetValue(); }
+
+#if wxUSE_UNICODE_UTF8
+    wxUniChar::Utf8CharBuffer AsUTF8() const { return UniChar().AsUTF8(); }
+#endif // wxUSE_UNICODE_UTF8
+
     bool IsAscii() const { return UniChar().IsAscii(); }
 
     // Assignment operators:
     bool IsAscii() const { return UniChar().IsAscii(); }
 
     // Assignment operators:
index 66a461a6bb20f507b3cd058d7039705478953d75..205004806242242cb4048d1fdaccfa7817721879 100644 (file)
@@ -190,13 +190,14 @@ bool wxStringOperationsUtf8::IsValidUtf8LeadByte(unsigned char c)
 #endif
 
 
 #endif
 
 
-wxStringOperationsUtf8::Utf8CharBuffer
-wxStringOperationsUtf8::EncodeChar(const wxUniChar& ch)
+// NB: this is in this file and not unichar.cpp to keep all UTF-8 encoding
+//     code in single place
+wxUniChar::Utf8CharBuffer wxUniChar::AsUTF8() const
 {
     Utf8CharBuffer buf;
     char *out = buf.data;
 
 {
     Utf8CharBuffer buf;
     char *out = buf.data;
 
-    wxUniChar::value_type code = ch.GetValue();
+    value_type code = GetValue();
 
     //    Char. number range   |        UTF-8 octet sequence
     //       (hexadecimal)     |              (binary)
 
     //    Char. number range   |        UTF-8 octet sequence
     //       (hexadecimal)     |              (binary)