On 4 mars 08, at 11:27, Jean-Daniel Dupas wrote:


Le 4 mars 08 à 11:21, Stephane Sudre a écrit :


On 4 mars 08, at 10:28, Julien Jalon wrote:

1) Might not be a good idea to use CFStringGetCStringPtr as it might return
NULL2) kCFStringEncodingMacRoman is likely not a good choice as the
encoding, especially for localized strings

If I were you, I'd do something like (warning: Mail compiled code):
const char* MyGetLocalizedCString(CFStringRef string)
{
   // if you need to be thread safe, add proper locks around that
   static CFMutableDictionaryRef mapping = NULL;
   if(mapping == NULL) {
       mapping = CFDictionaryCreateMutable(NULL, 0,
&kCFTypeDictionaryKeyCallBacks, NULL);
   }

   const char* result = (const char *)CFDictionaryGetValue(mapping,
string);
   if(result == NULL) {
CFStringRef localizedString = CFCopyLocalizedStringFromTable(string,
CFSTR("LibraryLocalizable"), NULL);
        result = (const char
*)malloc(CFStringGetMaximumSizeForEncoding(CFStringGetLength(localize dString),
kCFStringEncodingUTF8);
CFStringGetCString(localizedString, (char *)result, bufferSize,
kCFStringEncodingUTF8);
CFDictionarySetValue(mapping, string, result);

I'm not sure CFDictionarySetValue would accept a char *.

It accepts whatever you want. You just have to set the corresponding callback when you create it. As you can see here, this sample use NULL as Value CallBack, so it perfectly valid to set a char *.

You're right. It just seems strange from a memory management point of view.


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to