Le vendredi, 17 octobre 2014 à 13:35, Trevor Smith a écrit : > Hello, > > I am working on a ctypes binding to libuv [https://github.com/joyent/libuv], > and I have two questions: > > 1) Is the recommended way to interact with C-defines the way described in > this thread? http://lists.ocaml.org/pipermail/ctypes/2014-February/000064.html I think so. If you want to pattern match you can have a look here:
https://github.com/dbuenzli/tsdl/tree/master/support https://github.com/dbuenzli/tsdl/blob/master/myocamlbuild.ml#L39 > 2) What is the recommended way to deal with struct fields that vary depending > upon platform? > > Libuv is a cross platform library, and has platform-specific fields for its > structs. For example see the struct uv_loop_s. I'm not familiar with the API but having a look at: https://github.com/joyent/libuv/blob/v1.0.0-rc1/include/uv.h#L1381 Then I wouldn't bother at all about the private fields, just describe the constant part of the struct (and do you even need to ? It seems only stop_flag is interesting here, you could aswell treat the struct as an abstract data type). Now if really needed I would define C accessors for each private field and raise if the field is not available for the platform and ctypes-bind to these accessors. Best, Daniel _______________________________________________ Ctypes mailing list [email protected] http://lists.ocaml.org/listinfo/ctypes
