[Haskell-beginners] which typefor this FFI call

PICCA Frederic-Emmanuel frederic-emmanuel.picca at synchrotron-soleil.fr
Sat Jun 24 13:47:44 UTC 2017


Hello

I would like to create a binding for this function [1].

herr_t H5Literate( hid_t group_id, H5_index_t index_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data )

My "only" problem is with the op and op_data part.
Here the C op signature[2]

op ->  herr_t (*H5L_iterate_t)( hid_t g_id, const char *name, const H5L_info_t *info, void *op_data) 

What I would like to do is to create an Haskell function which allows to return what is contained under the op_data.
What I understand from this is that I give the H5Literate function an op function which is executed for each group of my hdf5 file.
So the op method is called with the releavant parameters.
The op_data can be use to accumulate things during the traversal.

H5Literate :: Hid -> Index  -> Order -> Maybe HSize -> H5Iterate -> _ -> _

type H5Iterate = Hid -> ByteString -> Info -> _ -> _

So it seems to me that I need to use a State inorder to do the accumulation.

For exemple,I want to collect each group names and accumulate then in a list.

Somy questioniswhat should be the signature of both function.

I have also the fealing that the return type MUST have a Storableinstance.


Thanks for your help

Frederic


[1] https://support.hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-Iterate
[2] https://support.hdfgroup.org/HDF5/doc/RM/RM_H5L.html#Link-Visit


More information about the Beginners mailing list