[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Implementing NSString getBytes

From: Luboš Doležel
Subject: Re: Implementing NSString getBytes
Date: Sun, 09 Jun 2013 13:03:12 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130509 Thunderbird/17.0.6

That would work, but it's extremely inefficient. I'd prefer to implement it using iconv.


On 06/09/2013 04:23 AM, Chan Maxthon wrote:
Slow to run but quick & dirty: use -[NSString substringInRange:] to cut the 
string up, convert them into NSDatas and dump from them?

发自我的 iPhone

在 2013-6-9,6:16,Luboš Doležel <address@hidden> 写道:

Unfortunately not. It would then be difficult to determine the "leftover" 
output argument's value.

Also, when converting to UTF for example, there would be a risk of cutting a UTF sequence 
in the middle if it doesn't fit into the "buffer" argument when copying it from 

Simply put, getBytes is more advanced than other NSString's methods.


Dne 9. června 2013 0:08:40 Chan Maxthon <address@hidden> napsal:
Can you just dump it from -[NSString dataUsingEncoding:] which is way simpler?

发自我的 iPhone

在 2013-6-9,6:06,Luboš Doležel <address@hidden> 写道:

GNUstep's NSString currently lacks 
(added in OS X 10.5).
I wanted to implement this function, but GSFromUnicode()'s behavior is not the 
best fit for this method:
1) it fails if the output buffer is too small - we don't want that in this case
2) it doesn't tell you how many input characters were converted (which is 
understandable because of 1)
So I decided to use iconv() directly, which has a pitfall. I'd need to access 
static members (EntrySupported) of Unicode.m to know the iconv encoding's name 
etc. So I guess the iconv-related code (as attached) should be moved into 
So I have a question: is it OK to write a function with declaration:
BOOL GSFromUnicodePartial(NSStringEncoding enc, int options, unichar **inbuf, 
size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
that wouldn't suffer from 1) and 2) and add it into Source/Additions/Unicode.m 
next to GSFromUnicode()?
-- Luboš Doležel
Gnustep-dev mailing list

Luboš Doležel

reply via email to

[Prev in Thread] Current Thread [Next in Thread]