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