1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/osx/core/cfstring.h
3 // Purpose:     wxCFStringRef 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 // Copyright:   (c) Stefan Csomor
8 // Licence:     wxWindows licence
9 // Usage:       Darwin (base library)
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef __WX_CFSTRINGHOLDER_H__
13 #define __WX_CFSTRINGHOLDER_H__
14 
15 #include <CoreFoundation/CFString.h>
16 
17 #include "wx/dlimpexp.h"
18 #include "wx/fontenc.h"
19 #include "wx/osx/core/cfref.h"
20 
21 #ifdef WORDS_BIGENDIAN
22     #define kCFStringEncodingUTF32Native kCFStringEncodingUTF32BE
23 #else
24     #define kCFStringEncodingUTF32Native kCFStringEncodingUTF32LE
25 #endif
26 
27 class WXDLLIMPEXP_FWD_BASE wxString;
28 
29 WXDLLIMPEXP_BASE void wxMacConvertNewlines13To10( wxString *data ) ;
30 WXDLLIMPEXP_BASE void wxMacConvertNewlines10To13( wxString *data ) ;
31 
32 WXDLLIMPEXP_BASE void wxMacConvertNewlines13To10( char * data ) ;
33 WXDLLIMPEXP_BASE void wxMacConvertNewlines10To13( char * data ) ;
34 
35 WXDLLIMPEXP_BASE wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding) ;
36 WXDLLIMPEXP_BASE wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding) ;
37 WXDLLIMPEXP_BASE void wxMacWakeUp() ;
38 
39 class WXDLLIMPEXP_BASE wxCFStringRef : public wxCFRef< CFStringRef >
40 {
41 public:
wxCFStringRef()42     wxCFStringRef()
43     {
44     }
45 
46     wxCFStringRef(const wxString &str,
47                         wxFontEncoding encoding = wxFONTENCODING_DEFAULT) ;
48 
49 #if wxOSX_USE_COCOA_OR_IPHONE
wxCFStringRef(NSString * ref)50     wxCFStringRef(NSString* ref)
51         : wxCFRef< CFStringRef >((CFStringRef) ref)
52     {
53     }
54 #endif
55 
wxCFStringRef(CFStringRef ref)56     wxCFStringRef(CFStringRef ref)
57         : wxCFRef< CFStringRef >(ref)
58     {
59     }
60 
wxCFStringRef(const wxCFStringRef & otherRef)61     wxCFStringRef(const wxCFStringRef& otherRef )
62         : wxCFRef< CFStringRef >(otherRef)
63     {
64     }
65 
~wxCFStringRef()66     ~wxCFStringRef()
67     {
68     }
69 
70     wxString AsString( wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) const;
71 
72     static wxString AsString( CFStringRef ref, wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) ;
73     static wxString AsStringWithNormalizationFormC( CFStringRef ref, wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) ;
74 #if wxOSX_USE_COCOA_OR_IPHONE
75     static wxString AsString( NSString* ref, wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) ;
76     static wxString AsStringWithNormalizationFormC( NSString* ref, wxFontEncoding encoding = wxFONTENCODING_DEFAULT ) ;
77 #endif
78 
79 #if wxOSX_USE_COCOA_OR_IPHONE
AsNSString()80     NSString* AsNSString() const { return (NSString*)(CFStringRef) *this; }
81 #endif
82 private:
83 } ;
84 
85 // corresponding class for holding UniChars (native unicode characters)
86 
87 class WXDLLIMPEXP_BASE wxMacUniCharBuffer
88 {
89 public :
90     wxMacUniCharBuffer( const wxString &str ) ;
91 
92     ~wxMacUniCharBuffer() ;
93 
94     UniCharPtr GetBuffer() ;
95 
96     UniCharCount GetChars() ;
97 
98 private :
99     UniCharPtr m_ubuf ;
100     UniCharCount m_chars ;
101 };
102 #endif //__WXCFSTRINGHOLDER_H__
103