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"
#ifdef __DARWIN__
#include <CoreServices/CoreServices.h>
#else
#include <TextCommon.h>
#endif
#include <CoreServices/CoreServices.h>
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())
{
m_cfs = CFSTR("") ;
CFRetain( m_cfs ) ;
reset( wxCFRetain( CFSTR("") ) );
}
else
{
@ -619,8 +606,8 @@ void wxMacCFStringHolder::Assign( const wxString &st , wxFontEncoding WXUNUSED_I
wxMacConvertNewlines13To10( &str ) ;
#if wxUSE_UNICODE
#if SIZEOF_WCHAR_T == 2
m_cfs = CFStringCreateWithCharacters( kCFAllocatorDefault,
(UniChar*)str.wc_str() , str.Len() );
reset( CFStringCreateWithCharacters( kCFAllocatorDefault,
(UniChar*)str.wc_str() , str.Len() ) );
#else
wxMBConvUTF16 converter ;
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 ;
#endif
#else // not wxUSE_UNICODE
m_cfs = CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
wxMacGetSystemEncFromFontEnc( encoding ) ) ;
reset( CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
wxMacGetSystemEncFromFontEnc( encoding ) ) );
#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 ;
Size cflen = CFStringGetLength( m_cfs ) ;
Size cflen = CFStringGetLength( get() ) ;
size_t noChars ;
wxChar* buf = NULL ;
#if wxUSE_UNICODE
#if SIZEOF_WCHAR_T == 2
buf = new wxChar[ cflen + 1 ] ;
CFStringGetCharacters( m_cfs , CFRangeMake( 0 , cflen ) , (UniChar*) buf ) ;
CFStringGetCharacters( get() , CFRangeMake( 0 , cflen ) , (UniChar*) buf ) ;
noChars = cflen ;
#else
UniChar* unibuf = new UniChar[ cflen + 1 ] ;
CFStringGetCharacters( m_cfs , CFRangeMake( 0 , cflen ) , (UniChar*) unibuf ) ;
CFStringGetCharacters( get() , CFRangeMake( 0 , cflen ) , (UniChar*) unibuf ) ;
unibuf[cflen] = 0 ;
wxMBConvUTF16 converter ;
noChars = converter.MB2WC( NULL , (const char*)unibuf , 0 ) ;
@ -666,10 +652,10 @@ wxString wxMacCFStringHolder::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encodi
#endif
#else
CFIndex cStrLen ;
CFStringGetBytes( m_cfs , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
CFStringGetBytes( get() , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
'?' , false , NULL , 0 , &cStrLen ) ;
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) ;
noChars = cStrLen ;
#endif
@ -681,6 +667,9 @@ wxString wxMacCFStringHolder::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encodi
return result ;
}
//
// wxMacUniCharBuffer
//
wxMacUniCharBuffer::wxMacUniCharBuffer( const wxString &str )
{

View File

@ -140,8 +140,7 @@ bool wxHIDDevice::Create (int nClass, int nType, int nDev)
CFStringRef cfsProduct = (CFStringRef)
CFDictionaryGetValue(pDictionary, CFSTR(kIOHIDProductKey));
m_szProductName =
wxMacCFStringHolder( cfsProduct,
false
wxCFStringRef( wxCFRetain(cfsProduct)
).AsString();
//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"));
CFStringRef cfStrPath = CFURLCopyFileSystemPath(absoluteURL,kDefaultPathStyle);
CFRelease(absoluteURL);
return wxMacCFStringHolder(cfStrPath).AsString(wxLocale::GetSystemEncoding());
return wxCFStringRef(cfStrPath).AsString(wxLocale::GetSystemEncoding());
}
wxString wxStandardPathsCF::GetFromFunc(wxCFURLRef (*func)(wxCFBundleRef)) const

View File

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