[webkit-dev] type of JSChar
Darin Adler
darin at apple.com
Fri Jul 27 09:56:40 PDT 2007
On Jul 27, 2007, at 7:45 AM, Darin Adler wrote:
> On Jul 27, 2007, at 4:03 AM, Alexey Proskuryakov wrote:
>
>> On 7/27/07 1:51 PM, "Simon Hausmann" <hausmann at kde.org> wrote:
>>
>>> Does anybody know/remember why JSChar is defined to wchar_t on
>>> Windows and if
>>> it is still needed?
>>
>> I think this was/is needed to match ICU's definition of UChar
>> ("Define UChar to be wchar_t if that is 16 bits wide; always
>> assumed to be unsigned. If wchar_t is not 16 bits wide, then
>> define UChar to be uint16_t. This makes the definition of UChar
>> platform-dependent but allows direct string type compatibility
>> with platforms with 16-bit wchar_t types.")
>
> That's correct. And for the same reasons we should follow the same
> pattern for UChar, even when ICU is not involved.
>
> I think that UnicodeQt4.h is the file that should be changed, not
> JSStringRef.h.
I should be more specific about the reasons I have for preferring this.
It's a good feature for both JSChar and UChar that on the Windows
platform, the 16-bit unsigned integer type they use is wchar_t,
rather than unsigned short. That's because there are all sorts of
Windows Unicode APIs that take wchar_t, and it's great to have the
type match.
The same issue exists on Mac OS X, but on that platform the types for
characters, Unichar and unichar, are unsigned short.
Anyway, for the JavaScript API, it's great to have the character
typedef match the platform typedef, as long as the platform typedef
is a 16-bit unsigned integer. I'd like us to preserve that feature
even when building for Qt. That increases the chance that client code
using the JavaScript API can be independent of the particular
underlying JavaScriptCore implementation.
Also, since JSStringRef.h is an API header, it's not good to have it
depend on an project-internal define, so that's another reason to
remove the recent change to JSStringRef.h.
-- Darin
More information about the webkit-dev
mailing list