Skip to content

Instantly share code, notes, and snippets.

@toots
Last active December 2, 2019 08:42
Show Gist options
  • Save toots/3f40f16b59c07bc80512b16a55804660 to your computer and use it in GitHub Desktop.
Save toots/3f40f16b59c07bc80512b16a55804660 to your computer and use it in GitHub Desktop.
module Constants = Sys_socket_constants.Def(Sys_socket_generated_constants)
module type Socklen = functor (S : Cstubs.Types.TYPE) -> sig
type socklen
val socklen_t : socklen S.typ
val int_of_socklen : socklen -> int
val socklen_of_int : int -> socklen
end
let socklen : (module Socklen) =
match Constants.socklen_t_len with
| 4 -> (module functor (S : Cstubs.Types.TYPE) -> struct
type socklen = Unsigned.uint32
let socklen_t = S.uint32_t
let int_of_socklen = Unsigned.UInt32.to_int
let socklen_of_int = Unsigned.UInt32.of_int
end)
| 8 -> (module functor (S : Cstubs.Types.TYPE) -> struct
type socklen = Unsigned.uint64
let socklen_t = S.uint64_t
let int_of_socklen = Unsigned.UInt64.to_int
let socklen_of_int = Unsigned.UInt64.of_int
end)
| _ -> assert false
module Socklen = (val socklen : Socklen)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment