
I think you can use Data.Word and Data.Int types for this, that is. Data.Word.Word16 == uint16_t, Data.Word.Word32 == uint32_t, etc. Data.Int.Int16 = int16_t, Data.Int.Int32 = int32_t, etc. There are Foreign.Storable.Storable instances for those. -Ross On Feb 10, 2009, at 6:32 AM, MaurĂ cio wrote:
Hi,
After reading an ISO draft for standard C, I found a few types that could be usefull when binding to libraries (these are from
): int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t
What about if they were included in the next version of GHC Foreign.C.Types module? For instance, as:
CInt8, CUInt8, CInt16 etc.
Some libraries (e.g. sqlite) define function parameters that are supposed to always have a given size (e.g., sqlite defines sqlite3_int64). In order to have a portable binding to those libraries, it would be nice to have types in Haskell that also offer that guarantee.
There are also a few other nice types, although I'm not sure they belong to standard modules. If they did, however, they could make life easier for those people writing higher level Haskell modules after standard C functions:
complex, float complex, double complex (from
) are used in functions like ccos, csin, cexp, csqrt etc. struct lconv (from
) struct tm (from
) From
and : mbstate_t, wint_t, wctrans_t, wctype_t. Do you think I could open a ticket for GHC proposing that?
Best, MaurĂcio
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe