Last active
December 1, 2019 17:19
-
-
Save toots/3f02a6d2ec9653009fa2d9f736dd35ea to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module type SaFamily = sig | |
type sa_family | |
val int_of_sa_family : sa_family -> int | |
val sa_family_of_int : int -> sa_family | |
module T : functor (S : Cstubs.Types.TYPE) -> sig | |
val t : sa_family S.typ | |
end | |
end | |
let saFamily : (module SaFamily) = | |
match Constants.sa_family_len with | |
| 1 -> (module struct | |
type sa_family = Unsigned.uint8 | |
let int_of_sa_family = Unsigned.UInt8.to_int | |
let sa_family_of_int = Unsigned.UInt8.of_int | |
module T (S : Cstubs.Types.TYPE) = struct | |
let t = S.uint8_t | |
end | |
end) | |
... | |
module SaFamily = (val saFamily : SaFamily) | |
module Def (S : Cstubs.Types.TYPE) = struct | |
include Constants | |
include Socklen(S) | |
include SaFamily | |
module SaFamilyT = SaFamily.T(S) | |
let sa_family_t = S.typedef SaFamilyT.t "sa_family_t" | |
module Sockaddr = struct | |
type t = unit | |
let t = S.structure "sockaddr" | |
let sa_family = S.field t "sa_family" sa_family_t | |
let sa_data = S.field t "sa_data" (S.array sa_data_len S.char) | |
let () = S.seal t | |
end | |
... | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment