
Galchin Vasili wrote:
If I am calling a ANSI function that requires a pointer to a C struct, which FFI pointer type should use?
A commonly used technique is to declare an empty data type data MyStruct and then use Ptr MyStruct in the FFI call. This is useful if the C struct is opaque, or at least meant to be opaque (i.e. you are not allowed to access its elements directly). For non-opaque structs, use a Haskell record and make it an instance of class Storable . An example: struct timeval { __time_t tv_sec; /* Seconds. */ __suseconds_t tv_usec; /* Microseconds. */ }; ---> data Timeval = Timeval { tv_sec :: TimeT, tv_usec :: USecondsT } (with suitable definitions of TimeT and USecondsT) instance Storable Timeval where ... and your FFI calls will get a Ptr Timeval as argument. HTH Ben