sig
  module Types :
    sig
      module type TYPE = Ctypes.TYPE
      module type BINDINGS = functor (F : TYPE-> sig end
      val write_c :
        Stdlib.Format.formatter -> (module Cstubs.Types.BINDINGS-> unit
    end
  module type FOREIGN = Ctypes.FOREIGN
  module type BINDINGS =
    functor
      (F : sig
             type 'a fn
             type 'a return
             val ( @-> ) : 'Ctypes.typ -> 'b fn -> ('-> 'b) fn
             val returning : 'Ctypes.typ -> 'a return fn
             type 'a result = unit
             val foreign : string -> ('-> 'b) fn -> ('-> 'b) result
             val foreign_value :
               string -> 'Ctypes.typ -> 'Ctypes.ptr result
           end)
      -> sig end
  type errno_policy
  val ignore_errno : Cstubs.errno_policy
  val return_errno : Cstubs.errno_policy
  type concurrency_policy
  val sequential : Cstubs.concurrency_policy
  val unlocked : Cstubs.concurrency_policy
  val lwt_preemptive : Cstubs.concurrency_policy
  val lwt_jobs : Cstubs.concurrency_policy
  val write_c :
    ?concurrency:Cstubs.concurrency_policy ->
    ?errno:Cstubs.errno_policy ->
    Stdlib.Format.formatter ->
    prefix:string -> (module Cstubs.BINDINGS-> unit
  val write_ml :
    ?concurrency:Cstubs.concurrency_policy ->
    ?errno:Cstubs.errno_policy ->
    Stdlib.Format.formatter ->
    prefix:string -> (module Cstubs.BINDINGS-> unit
end