CWString API

John Meacham john at
Tue Nov 30 04:34:50 EST 2004

On Tue, Nov 30, 2004 at 12:41:04AM -0800, Krasimir Angelov wrote:
>    Hello guys,
> I am working on updated version of HDirect and now I
> am going to use CWString API to marshal (wchar_t *)
> type to String. I found some inconsistencies in the
> API. 
>   - castCWcharToChar and castCharToCWchar functions
> are defined only for Posix systems and they aren't
> exported. In the same time castCCharToChar and
> castCharToCChar have the same meaning and they are
> defined and exported on all platforms.

The problem is that these operations are very unsafe, there is no
guarenteed isomorphism or even injection between wchar_ts and Chars. If
people really know what they are doing, they can do the conversion
themselves via fromIntegral/ord/chr, but I don't think we should
encourage such unsafe usage with functions when it is simple for the
user to work around it themselves. 

>   - CWchar type looks a little bit strange compared to
> CChar, CString and CWString types. In my opinion
> CWChar looks more consistent. 

I originally had it as CWChar, but it was changed to CWchar to conform
to the already written FFI spec which defined the wchar_t equivalant to
be CWchar 

> Since the CWString API isn't released in previous GHC
> releases I think now is the time to fix that. Any
> opinions?

Any changes would have to be propegated to the FFI spec which is pretty

John Meacham - ⑆⑆john⑈ 

More information about the Glasgow-haskell-users mailing list