1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/mac/corefoundation/cfstring.h 3 // Purpose: wxMacCFStringHolder and other string functions 4 // Author: Stefan Csomor 5 // Modified by: 6 // Created: 2004-10-29 (from code in wx/mac/carbon/private.h) 7 // RCS-ID: $Id: cfstring.h 40283 2006-07-24 18:01:39Z VZ $ 8 // Copyright: (c) Stefan Csomor 9 // Licence: wxWindows licence 10 ///////////////////////////////////////////////////////////////////////////// 11 12 #ifndef __WX_CFSTRINGHOLDER_H__ 13 #define __WX_CFSTRINGHOLDER_H__ 14 15 #ifdef __DARWIN__ 16 #include <CoreFoundation/CFString.h> 17 #else 18 #include <CFString.h> 19 #endif 20 21 #include "wx/fontenc.h" 22 23 class WXDLLIMPEXP_BASE wxString; 24 25 void wxMacConvertNewlines13To10( char * data ) ; 26 void wxMacConvertNewlines10To13( char * data ) ; 27 void wxMacConvertNewlines13To10( wxString *data ) ; 28 void wxMacConvertNewlines10To13( wxString *data ) ; 29 30 #if wxUSE_UNICODE 31 void wxMacConvertNewlines13To10( wxChar * data ) ; 32 void wxMacConvertNewlines10To13( wxChar * data ) ; 33 #endif 34 35 wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding) ; 36 wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding) ; 37 void wxMacWakeUp() ; 38 39 class wxMacCFStringHolder 40 { 41 public: wxMacCFStringHolder()42 wxMacCFStringHolder() 43 : m_cfs(NULL) , m_release(false) 44 { 45 } 46 47 wxMacCFStringHolder(const wxString &str, 48 wxFontEncoding encoding = wxFONTENCODING_DEFAULT) m_cfs(NULL)49 : m_cfs(NULL) , m_release(false) 50 { 51 Assign( str , encoding ) ; 52 } 53 54 wxMacCFStringHolder(CFStringRef ref , bool release = true ) m_cfs(ref)55 : m_cfs(ref) , m_release(release) 56 { 57 } 58 ~wxMacCFStringHolder()59 ~wxMacCFStringHolder() 60 { 61 Release() ; 62 } 63 Detach()64 CFStringRef Detach() 65 { 66 CFStringRef retval = m_cfs ; 67 m_release = false ; 68 m_cfs = NULL ; 69 return retval ; 70 } 71 Release()72 void Release() 73 { 74 if ( m_release && m_cfs) 75 CFRelease( m_cfs ) ; 76 m_cfs = NULL ; 77 } 78 79 void Assign(const wxString &str, 80 wxFontEncoding encoding = wxFONTENCODING_DEFAULT); 81 CFStringRef()82 operator CFStringRef () const { return m_cfs; } 83 wxString AsString( wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) ; 84 85 private: 86 87 CFStringRef m_cfs; 88 bool m_release ; 89 90 DECLARE_NO_COPY_CLASS( wxMacCFStringHolder ) 91 } ; 92 93 // corresponding class for holding UniChars (native unicode characters) 94 95 class wxMacUniCharBuffer 96 { 97 public : 98 wxMacUniCharBuffer( const wxString &str ) ; 99 100 ~wxMacUniCharBuffer() ; 101 102 UniChar* GetBuffer() ; 103 104 UniCharCount GetChars() ; 105 106 private : 107 UniChar* m_ubuf ; 108 UniCharCount m_chars ; 109 }; 110 #endif //__WXCFSTRINGHOLDER_H__ 111