+#if 0
+
+char StringMac[] = "\x0d\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
+ "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
+ "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xae\xaf"
+ "\xb1\xb4\xb5\xb6\xbb\xbc\xbe\xbf"
+ "\xc0\xc1\xc2\xc4\xc7\xc8\xc9\xcb\xcc\xcd\xce\xcf"
+ "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xca\xdb" ;
+
+char StringANSI[] = "\x0a\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8"
+ "\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC"
+ "\x86\xBA\xA2\xA3\xA7\x95\xB6\xDF\xAE\xA9\x99\xB4\xA8\xC6\xD8"
+ "\xB1\xA5\xB5\xF0\xAA\xBA\xE6\xF8"
+ "\xBF\xA1\xAC\x83\xAB\xBB\x85\xC0\xC3\xD5\x8C\x9C"
+ "\x96\x97\x93\x94\x91\x92\xF7\xFF\xA0\x80" ;
+
+void wxMacConvertFromPC( const char *from , char *to , int len )
+{
+ char *c ;
+ if ( from == to )
+ {
+ for( int i = 0 ; i < len ; ++ i )
+ {
+ c = strchr( StringANSI , *from ) ;
+ if ( c != NULL )
+ {
+ *to = StringMac[ c - StringANSI] ;
+ }
+ ++to ;
+ ++from ;
+ }
+ }
+ else
+ {
+ for( int i = 0 ; i < len ; ++ i )
+ {
+ c = strchr( StringANSI , *from ) ;
+ if ( c != NULL )
+ {
+ *to = StringMac[ c - StringANSI] ;
+ }
+ else
+ {
+ *to = *from ;
+ }
+ ++to ;
+ ++from ;
+ }
+ }
+}
+
+void wxMacConvertToPC( const char *from , char *to , int len )
+{
+ char *c ;
+ if ( from == to )
+ {
+ for( int i = 0 ; i < len ; ++ i )
+ {
+ c = strchr( StringMac , *from ) ;
+ if ( c != NULL )
+ {
+ *to = StringANSI[ c - StringMac] ;
+ }
+ ++to ;
+ ++from ;
+ }
+ }
+ else
+ {
+ for( int i = 0 ; i < len ; ++ i )
+ {
+ c = strchr( StringMac , *from ) ;
+ if ( c != NULL )
+ {
+ *to = StringANSI[ c - StringMac] ;
+ }
+ else
+ {
+ *to = *from ;
+ }
+ ++to ;
+ ++from ;
+ }
+ }
+}
+
+TECObjectRef s_TECNativeCToUnicode = NULL ;
+TECObjectRef s_TECUnicodeToNativeC = NULL ;
+
+void wxMacSetupConverters()
+{
+ // if we assume errors are happening here we need low level debugging
+ // since the high level assert will use the encoders that are not yet
+ // setup...
+#if TARGET_CARBON
+ const TextEncodingBase kEncoding = CFStringGetSystemEncoding();
+#else
+ const TextEncodingBase kEncoding = kTextEncodingMacRoman;
+#endif
+ OSStatus status = noErr ;
+ status = TECCreateConverter(&s_TECNativeCToUnicode,
+ kEncoding,
+ kTextEncodingUnicodeDefault);
+
+
+ status = TECCreateConverter(&s_TECUnicodeToNativeC,
+ kTextEncodingUnicodeDefault,
+ kEncoding);
+}
+
+void wxMacCleanupConverters()
+{
+ OSStatus status = noErr ;
+ status = TECDisposeConverter(s_TECNativeCToUnicode);
+
+ status = TECDisposeConverter(s_TECUnicodeToNativeC);
+}
+
+wxWCharBuffer wxMacStringToWString( const wxString &from )
+{
+#if wxUSE_UNICODE
+ wxWCharBuffer result( from.wc_str() ) ;
+#else
+ OSStatus status = noErr ;
+ ByteCount byteOutLen ;
+ ByteCount byteInLen = from.Length() ;
+ ByteCount byteBufferLen = byteInLen *2 ;
+ wxWCharBuffer result( from.Length() ) ;
+ status = TECConvertText(s_TECNativeCToUnicode, (ConstTextPtr)from.c_str() , byteInLen, &byteInLen,
+ (TextPtr)result.data(), byteBufferLen, &byteOutLen);
+ result.data()[byteOutLen/2] = 0 ;
+#endif
+ return result ;
+}
+
+
+wxString wxMacMakeStringFromCString( const char * from , int len )
+{
+ OSStatus status = noErr ;
+ wxString result ;
+ wxChar* buf = result.GetWriteBuf( len ) ;
+#if wxUSE_UNICODE
+ ByteCount byteOutLen ;
+ ByteCount byteInLen = len ;
+ ByteCount byteBufferLen = len *2 ;
+
+ status = TECConvertText(s_TECNativeCToUnicode, (ConstTextPtr)from , byteInLen, &byteInLen,
+ (TextPtr)buf, byteBufferLen, &byteOutLen);
+#else
+ memcpy( buf , from , len ) ;
+#endif
+ buf[len] = 0 ;
+ result.UngetWriteBuf() ;
+ return result ;
+}
+
+wxString wxMacMakeStringFromCString( const char * from )
+{
+ return wxMacMakeStringFromCString( from , strlen(from) ) ;
+}
+
+wxCharBuffer wxMacStringToCString( const wxString &from )
+{
+#if wxUSE_UNICODE
+ OSStatus status = noErr ;
+ ByteCount byteOutLen ;
+ ByteCount byteInLen = from.Length() * 2 ;
+ ByteCount byteBufferLen = from.Length() ;
+ wxCharBuffer result( from.Length() ) ;
+ status = TECConvertText(s_TECUnicodeToNativeC , (ConstTextPtr)from.wc_str() , byteInLen, &byteInLen,
+ (TextPtr)result.data(), byteBufferLen, &byteOutLen);
+ return result ;
+#else
+ return wxCharBuffer( from.c_str() ) ;
+#endif
+}
+#endif
+
+void wxMacStringToPascal( const wxString&from , StringPtr to )
+{
+ wxCharBuffer buf = from.mb_str( wxConvLocal ) ;
+ int len = strlen(buf) ;
+
+ if ( len > 255 )
+ len = 255 ;
+ to[0] = len ;
+ memcpy( (char*) &to[1] , buf , len ) ;
+}
+
+wxString wxMacMakeStringFromPascal( ConstStringPtr from )
+{
+ return wxString( (char*) &from[1] , wxConvLocal , from[0] ) ;
+}
+
+#endif // wxUSE_BASE
+
+#if wxUSE_GUI
+
+
+//
+// CFStringRefs (Carbon only)
+//
+