sig
  type 'a fn
  type 'a return
  val ( @-> ) :
    'a typ -> 'Ctypes.FOREIGN.fn -> ('-> 'b) Ctypes.FOREIGN.fn
  val returning : 'a typ -> 'Ctypes.FOREIGN.return Ctypes.FOREIGN.fn
  type 'a result
  val foreign :
    string ->
    ('-> 'b) Ctypes.FOREIGN.fn -> ('-> 'b) Ctypes.FOREIGN.result
  val foreign_value : string -> 'a typ -> 'Ctypes.ptr Ctypes.FOREIGN.result
end