unifying CFTypes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2007-12-08 17:41:07 +00:00
parent 80539f0490
commit 504f8052fd
4 changed files with 25 additions and 37 deletions

View File

@@ -22,11 +22,7 @@
#include "wx/mac/corefoundation/cfstring.h" #include "wx/mac/corefoundation/cfstring.h"
#ifdef __DARWIN__ #include <CoreServices/CoreServices.h>
#include <CoreServices/CoreServices.h>
#else
#include <TextCommon.h>
#endif
void wxMacConvertNewlines13To10( char * data ) void wxMacConvertNewlines13To10( char * data )
{ {
@@ -593,25 +589,16 @@ wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding)
// //
// CFStringRefs (Carbon only) // CFStringRefs
// //
// converts this string into a carbon foundation string with optional pc 2 mac encoding // converts this string into a core foundation string with optional pc 2 mac encoding
void wxMacCFStringHolder::Assign( CFStringRef ref , bool release ) wxCFStringRef::wxCFStringRef( const wxString &st , wxFontEncoding WXUNUSED_IN_UNICODE(encoding) )
{ {
Release();
m_cfs = ref;
m_release = release;
}
void wxMacCFStringHolder::Assign( const wxString &st , wxFontEncoding WXUNUSED_IN_UNICODE(encoding) )
{
Release() ;
if (st.IsEmpty()) if (st.IsEmpty())
{ {
m_cfs = CFSTR("") ; reset( wxCFRetain( CFSTR("") ) );
CFRetain( m_cfs ) ;
} }
else else
{ {
@@ -619,8 +606,8 @@ void wxMacCFStringHolder::Assign( const wxString &st , wxFontEncoding WXUNUSED_I
wxMacConvertNewlines13To10( &str ) ; wxMacConvertNewlines13To10( &str ) ;
#if wxUSE_UNICODE #if wxUSE_UNICODE
#if SIZEOF_WCHAR_T == 2 #if SIZEOF_WCHAR_T == 2
m_cfs = CFStringCreateWithCharacters( kCFAllocatorDefault, reset( CFStringCreateWithCharacters( kCFAllocatorDefault,
(UniChar*)str.wc_str() , str.Len() ); (UniChar*)str.wc_str() , str.Len() ) );
#else #else
wxMBConvUTF16 converter ; wxMBConvUTF16 converter ;
size_t unicharlen = converter.WC2MB( NULL , str.wc_str() , 0 ) ; size_t unicharlen = converter.WC2MB( NULL , str.wc_str() , 0 ) ;
@@ -631,30 +618,29 @@ void wxMacCFStringHolder::Assign( const wxString &st , wxFontEncoding WXUNUSED_I
delete[] unibuf ; delete[] unibuf ;
#endif #endif
#else // not wxUSE_UNICODE #else // not wxUSE_UNICODE
m_cfs = CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() , reset( CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
wxMacGetSystemEncFromFontEnc( encoding ) ) ; wxMacGetSystemEncFromFontEnc( encoding ) ) );
#endif #endif
} }
m_release = true ;
} }
wxString wxMacCFStringHolder::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding)) wxString wxCFStringRef::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
{ {
if ( m_cfs == NULL ) if ( !get() )
return wxEmptyString ; return wxEmptyString ;
Size cflen = CFStringGetLength( m_cfs ) ; Size cflen = CFStringGetLength( get() ) ;
size_t noChars ; size_t noChars ;
wxChar* buf = NULL ; wxChar* buf = NULL ;
#if wxUSE_UNICODE #if wxUSE_UNICODE
#if SIZEOF_WCHAR_T == 2 #if SIZEOF_WCHAR_T == 2
buf = new wxChar[ cflen + 1 ] ; buf = new wxChar[ cflen + 1 ] ;
CFStringGetCharacters( m_cfs , CFRangeMake( 0 , cflen ) , (UniChar*) buf ) ; CFStringGetCharacters( get() , CFRangeMake( 0 , cflen ) , (UniChar*) buf ) ;
noChars = cflen ; noChars = cflen ;
#else #else
UniChar* unibuf = new UniChar[ cflen + 1 ] ; UniChar* unibuf = new UniChar[ cflen + 1 ] ;
CFStringGetCharacters( m_cfs , CFRangeMake( 0 , cflen ) , (UniChar*) unibuf ) ; CFStringGetCharacters( get() , CFRangeMake( 0 , cflen ) , (UniChar*) unibuf ) ;
unibuf[cflen] = 0 ; unibuf[cflen] = 0 ;
wxMBConvUTF16 converter ; wxMBConvUTF16 converter ;
noChars = converter.MB2WC( NULL , (const char*)unibuf , 0 ) ; noChars = converter.MB2WC( NULL , (const char*)unibuf , 0 ) ;
@@ -666,10 +652,10 @@ wxString wxMacCFStringHolder::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encodi
#endif #endif
#else #else
CFIndex cStrLen ; CFIndex cStrLen ;
CFStringGetBytes( m_cfs , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) , CFStringGetBytes( get() , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
'?' , false , NULL , 0 , &cStrLen ) ; '?' , false , NULL , 0 , &cStrLen ) ;
buf = new wxChar[ cStrLen + 1 ] ; buf = new wxChar[ cStrLen + 1 ] ;
CFStringGetBytes( m_cfs , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) , CFStringGetBytes( get() , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
'?' , false , (unsigned char*) buf , cStrLen , &cStrLen) ; '?' , false , (unsigned char*) buf , cStrLen , &cStrLen) ;
noChars = cStrLen ; noChars = cStrLen ;
#endif #endif
@@ -681,6 +667,9 @@ wxString wxMacCFStringHolder::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encodi
return result ; return result ;
} }
//
// wxMacUniCharBuffer
//
wxMacUniCharBuffer::wxMacUniCharBuffer( const wxString &str ) wxMacUniCharBuffer::wxMacUniCharBuffer( const wxString &str )
{ {

View File

@@ -140,8 +140,7 @@ bool wxHIDDevice::Create (int nClass, int nType, int nDev)
CFStringRef cfsProduct = (CFStringRef) CFStringRef cfsProduct = (CFStringRef)
CFDictionaryGetValue(pDictionary, CFSTR(kIOHIDProductKey)); CFDictionaryGetValue(pDictionary, CFSTR(kIOHIDProductKey));
m_szProductName = m_szProductName =
wxMacCFStringHolder( cfsProduct, wxCFStringRef( wxCFRetain(cfsProduct)
false
).AsString(); ).AsString();
//Get the Product ID Key //Get the Product ID Key

View File

@@ -85,7 +85,7 @@ static wxString BundleRelativeURLToPath(CFURLRef relativeURL)
wxCHECK_MSG(absoluteURL, wxEmptyString, wxT("Failed to resolve relative URL to absolute URL")); wxCHECK_MSG(absoluteURL, wxEmptyString, wxT("Failed to resolve relative URL to absolute URL"));
CFStringRef cfStrPath = CFURLCopyFileSystemPath(absoluteURL,kDefaultPathStyle); CFStringRef cfStrPath = CFURLCopyFileSystemPath(absoluteURL,kDefaultPathStyle);
CFRelease(absoluteURL); CFRelease(absoluteURL);
return wxMacCFStringHolder(cfStrPath).AsString(wxLocale::GetSystemEncoding()); return wxCFStringRef(cfStrPath).AsString(wxLocale::GetSystemEncoding());
} }
wxString wxStandardPathsCF::GetFromFunc(wxCFURLRef (*func)(wxCFBundleRef)) const wxString wxStandardPathsCF::GetFromFunc(wxCFURLRef (*func)(wxCFBundleRef)) const

View File

@@ -87,7 +87,7 @@ long wxMacExecute(wxChar **argv,
CFURLRef cfurlApp = CFURLRef cfurlApp =
CFURLCreateWithFileSystemPath( CFURLCreateWithFileSystemPath(
kCFAllocatorDefault, kCFAllocatorDefault,
wxMacCFStringHolder(path), wxCFStringRef(path),
kDefaultPathStyle, kDefaultPathStyle,
true); //false == not a directory true); //false == not a directory
@@ -155,7 +155,7 @@ long wxMacExecute(wxChar **argv,
// First, try creating as a directory // First, try creating as a directory
cfurlCurrentFile = CFURLCreateWithFileSystemPath( cfurlCurrentFile = CFURLCreateWithFileSystemPath(
kCFAllocatorDefault, kCFAllocatorDefault,
wxMacCFStringHolder(*argv), wxCFStringRef(*argv),
kDefaultPathStyle, kDefaultPathStyle,
true); //true == directory true); //true == directory
} }
@@ -165,7 +165,7 @@ long wxMacExecute(wxChar **argv,
// as a regular file // as a regular file
cfurlCurrentFile = CFURLCreateWithFileSystemPath( cfurlCurrentFile = CFURLCreateWithFileSystemPath(
kCFAllocatorDefault, kCFAllocatorDefault,
wxMacCFStringHolder(*argv), wxCFStringRef(*argv),
kDefaultPathStyle, kDefaultPathStyle,
false); //false == regular file false); //false == regular file
} }
@@ -176,7 +176,7 @@ long wxMacExecute(wxChar **argv,
// so try creating it through CFURLCreateWithString // so try creating it through CFURLCreateWithString
cfurlCurrentFile = CFURLCreateWithString( cfurlCurrentFile = CFURLCreateWithString(
kCFAllocatorDefault, kCFAllocatorDefault,
wxMacCFStringHolder(*argv), wxCFStringRef(*argv),
NULL); NULL);
} }