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

Reply via email to