sig
  val enum : (string * int64) list -> 'a Ctypes.typ -> unit
  val structure : 'a Ctypes.structure Ctypes.typ -> unit
  val union : 'a Ctypes.union Ctypes.typ -> unit
  val typedef : 'a Ctypes.typ -> string -> unit
  val internal :
    ?runtime_lock:bool ->
    string -> ('a -> 'b) Ctypes.fn -> ('a -> 'b) -> unit
end