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