This is the mail archive of the
mailing list for the GCC project.
Re: Updated: [Patch, c* ,ObjC*] handle string objects in format checking.
- From: IainS <developer at sandoe-acoustics dot co dot uk>
- To: Nicola Pero <nicola dot pero at meta-innovation dot com>
- Cc: "Joseph S. Myers" <joseph at codesourcery dot com>, "GCC Patches" <gcc-patches at gcc dot gnu dot org>, "Mike Stump" <mrs at gcc dot gnu dot org>, "Mike Stump" <mikestump at comcast dot net>
- Date: Mon, 1 Nov 2010 08:49:59 +0000
- Subject: Re: Updated: [Patch, c* ,ObjC*] handle string objects in format checking.
- References: <email@example.com>
On 1 Nov 2010, at 04:37, Nicola Pero wrote:
The actual scanning of the format strings is now local to ObjC
(there's a stub routine added by the patch) and additions to carry
that out would fall under whatever rules Mike wishes to invoke.
Wouldn't we reuse the existing routines and simply add %@ ?
I think to double-check the doc.
IIRC there were some subtle differences from c. (on NeXT, at
"NSString uses a format string whose syntax is similar to that used
by other formatter objects.
It supports the format characters defined for the ANSI C function
printf(), plus %@ for any object
(see “String Format Specifiers” and the IEEE printf specification)."
In attach is a draft patch I had produced during the weekend - it
works for me with the GNU runtime on top
of my other patches (but it doesn't include documentation (and not
enough comments), has a few hacks and
rough edges, most likelyl won't work on Darwin and it doesn't do
Objective-C++ yet). ;-)
May I suggest a possible amalgamation sth like this:
(1) the patch I proposed (which handles the other necessary cases for
NeXT and Darwin as well).
(2) merge your adjustments to the NSString format declaration.
add a call to objc that determines if an NSString can be
represented in a manner parse-able in c-format.c
if so then it can continue to parse the literal as per the
existing code (with the addition of the %@)
otherwise parse in ObjC.
This is because the string literal behind an NS (or CF) string need
not be ascii or even utf8 -- it could be utf16 (although we haven't
implemented that yet).
I'm not sure that we shouldn't just keep the whole thing in ObjC (and
add an objc-format.c file to deal with the future expansion).
In any event, have you any objection to first applying the syntax and
parsing logic - assuming Joseph is now happy with it (since that patch
is already reviewed twice) and then filling in the implementation?