package ctypes
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=a4f78e9b3ed71f3cba0ccdcfa0690f423dedee6132611cd4be0534b43c980ca3
md5=59e8b3f328ba00febabe2a957029cb94
doc/ctypes.stubs/Cstubs/index.html
Module Cstubs
Operations for generating C bindings stubs.
module Types : sig ... endmodule type FOREIGN = sig ... endValues of the errno_policy type specify the errno support provided by the generated code. See ignore_errno for the available option.
val ignore_errno : errno_policyGenerate code with no special support for errno. This is the default.
val return_errno : errno_policyGenerate code that returns errno in addition to the return value of each function.
Passing return_errno as the errno argument to Cstubs.write_c and Cstubs.write_ml changes the return type of bound functions from a single value to a pair of values. For example, the binding specification
let realpath = foreign "reaplath" (string @-> string @-> returning string)
generates a value of the following type by default:
val realpath : string -> string -> stirng
but when using return_errno the generated type is as follows:
val realpath : string -> string -> stirng * int
and when using both return_errno and lwt_jobs the generated type is as follows:
val realpath : string -> string -> (stirng * int) Lwt.t
Values of the concurrency_policy type specify the concurrency support provided by the generated code. See sequential and lwt_jobs for the available options.
val sequential : concurrency_policyGenerate code with no special support for concurrency. This is the default.
val unlocked : concurrency_policyGenerate code that releases the runtime lock during C calls.
val lwt_preemptive : concurrency_policyGenerate code which runs C function calls with the Lwt_preemptive module:
http://ocsigen.org/lwt/2.5.1/api/Lwt_preemptive
Passing lwt_preemptive as the concurrency argument to Cstubs.write_c and Cstubs.write_ml changes the return type of bound functions to include the Lwt.t constructor. For example, the binding specification
let unlink = foreign "unlink" (string @-> returning int)
generates a value of the following type by default:
val unlink : string -> int
but when using lwt_preemptive the generated type is as follows:
val unlink : string -> int Lwt.t
Additionally, the OCaml runtime lock is released during calls to functions bound with lwt_preemptive.
val lwt_jobs : concurrency_policyGenerate code which implements C function calls as Lwt jobs:
http://ocsigen.org/lwt/2.5.1/api/Lwt_unix#TYPEjob
Passing lwt_jobs as the concurrency argument to Cstubs.write_c and Cstubs.write_ml changes the return type of bound functions to include the Lwt.t constructor. For example, the binding specification
let unlink = foreign "unlink" (string @-> returning int)
generates a value of the following type by default:
val unlink : string -> int
but when using lwt_jobs the generated type is as follows:
val unlink : string -> int Lwt.t
val write_c :
?concurrency:concurrency_policy ->
?errno:errno_policy ->
Format.formatter ->
prefix:string ->
(module BINDINGS) ->
unitwrite_c fmt ~prefix bindings generates C stubs for the functions bound with foreign in bindings. The stubs are intended to be used in conjunction with the ML code generated by write_ml.
The optional argument concurrency specifies the concurrency support provided by the generated code. The default is sequential.
The generated code uses definitions exposed in the header file ctypes_cstubs_internals.h.
val write_ml :
?concurrency:concurrency_policy ->
?errno:errno_policy ->
Format.formatter ->
prefix:string ->
(module BINDINGS) ->
unitwrite_ml fmt ~prefix bindings generates ML bindings for the functions bound with foreign in bindings. The generated code conforms to the FOREIGN interface.
The optional argument concurrency specifies the concurrency support provided by the generated code. The default is sequential.
The generated code uses definitions exposed in the module Cstubs_internals.