moving UniChar code to one place
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39893 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -88,4 +88,21 @@ private:
|
||||
DECLARE_NO_COPY_CLASS( wxMacCFStringHolder )
|
||||
} ;
|
||||
|
||||
// corresponding class for holding UniChars (native unicode characters)
|
||||
|
||||
class wxMacUniCharBuffer
|
||||
{
|
||||
public :
|
||||
wxMacUniCharBuffer( const wxString &str ) ;
|
||||
|
||||
~wxMacUniCharBuffer() ;
|
||||
|
||||
UniChar* GetBuffer() ;
|
||||
|
||||
UniCharCount GetChars() ;
|
||||
|
||||
private :
|
||||
UniChar* m_ubuf ;
|
||||
UniCharCount m_chars ;
|
||||
};
|
||||
#endif //__WXCFSTRINGHOLDER_H__
|
||||
|
@@ -707,3 +707,50 @@ wxString wxMacCFStringHolder::AsString(wxFontEncoding encoding)
|
||||
delete[] buf ;
|
||||
return result ;
|
||||
}
|
||||
|
||||
|
||||
wxMacUniCharBuffer::wxMacUniCharBuffer( const wxString &str )
|
||||
{
|
||||
m_chars = str.length() ;
|
||||
m_ubuf = NULL ;
|
||||
|
||||
#if SIZEOF_WCHAR_T == 4
|
||||
wxMBConvUTF16 converter ;
|
||||
#if wxUSE_UNICODE
|
||||
size_t unicharlen = converter.WC2MB( NULL , str.wc_str() , 0 ) ;
|
||||
m_ubuf = (UniChar*) malloc( unicharlen + 2 ) ;
|
||||
converter.WC2MB( (char*) m_ubuf , str.wc_str(), unicharlen + 2 ) ;
|
||||
#else
|
||||
const wxWCharBuffer wchar = str.wc_str( wxConvLocal ) ;
|
||||
size_t unicharlen = converter.WC2MB( NULL , wchar.data() , 0 ) ;
|
||||
m_ubuf = (UniChar*) malloc( unicharlen + 2 ) ;
|
||||
converter.WC2MB( (char*) m_ubuf , wchar.data() , unicharlen + 2 ) ;
|
||||
#endif
|
||||
m_chars = unicharlen / 2 ;
|
||||
#else // SIZEOF_WCHAR_T is then 2
|
||||
#if wxUSE_UNICODE
|
||||
m_ubuf = malloc( m_chars * 2 + 2 ) ;
|
||||
memcpy( m_ubuf , (UniChar*) str.wc_str() , m_chars * 2 + 2 ) ;
|
||||
#else
|
||||
wxWCharBuffer wchar = str.wc_str( wxConvLocal ) ;
|
||||
m_chars = wxWcslen( wchar.data() ) ;
|
||||
m_ubuf = malloc( m_chars * 2 + 2 ) ;
|
||||
memcpy( m_ubuf , (UniChar*) wchar.data() , m_chars * 2 + 2 ) ;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
wxMacUniCharBuffer::~wxMacUniCharBuffer()
|
||||
{
|
||||
free( m_ubuf ) ;
|
||||
}
|
||||
|
||||
UniCharArrayPtr wxMacUniCharBuffer::GetBuffer()
|
||||
{
|
||||
return m_ubuf ;
|
||||
}
|
||||
|
||||
UniCharCount wxMacUniCharBuffer::GetChars()
|
||||
{
|
||||
return m_chars ;
|
||||
}
|
||||
|
Reference in New Issue
Block a user