Module Async_extra.Versioned_typed_tcp.Datumable_of_binable

Helpers to make your types Datumable if they are binable. Works with up to 5 versions (easily extensible to more)

module type T : sig ... end
module type T_bin : sig ... end
module V : functor (V : T) -> functor (T : T) -> sig ... end
module Make_datumable5 : functor (Versions : Versions) -> functor (T : T) -> functor (V1 : T_bin) -> functor (V2 : T_bin) -> functor (V3 : T_bin) -> functor (V4 : T_bin) -> functor (V5 : T_bin) -> functor (V1_cvt : V(V1)(T).S) -> functor (V2_cvt : V(V2)(T).S) -> functor (V3_cvt : V(V3)(T).S) -> functor (V4_cvt : V(V4)(T).S) -> functor (V5_cvt : V(V5)(T).S) -> Datumable with type datum = T.t
module type Pre_versions : sig ... end
module Five_versions : functor (Versions : Pre_versions) -> functor (T : T) -> functor (V1 : T_bin) -> functor (V2 : T_bin) -> functor (V3 : T_bin) -> functor (V4 : T_bin) -> functor (V5 : T_bin) -> functor (V1_cvt : V(V1)(T).S) -> functor (V2_cvt : V(V2)(T).S) -> functor (V3_cvt : V(V3)(T).S) -> functor (V4_cvt : V(V4)(T).S) -> functor (V5_cvt : V(V5)(T).S) -> Datumable with type datum = T.t
module Four_versions : functor (Versions : Pre_versions) -> functor (T : T) -> functor (V1 : T_bin) -> functor (V2 : T_bin) -> functor (V3 : T_bin) -> functor (V4 : T_bin) -> functor (V1_cvt : V(V1)(T).S) -> functor (V2_cvt : V(V2)(T).S) -> functor (V3_cvt : V(V3)(T).S) -> functor (V4_cvt : V(V4)(T).S) -> Datumable with type datum = T.t
module Three_versions : functor (Versions : Pre_versions) -> functor (T : T) -> functor (V1 : T_bin) -> functor (V2 : T_bin) -> functor (V3 : T_bin) -> functor (V1_cvt : V(V1)(T).S) -> functor (V2_cvt : V(V2)(T).S) -> functor (V3_cvt : V(V3)(T).S) -> Datumable with type datum = T.t
module Two_versions : functor (Versions : Pre_versions) -> functor (T : T) -> functor (V1 : T_bin) -> functor (V2 : T_bin) -> functor (V1_cvt : V(V1)(T).S) -> functor (V2_cvt : V(V2)(T).S) -> Datumable with type datum = T.t
module One_version : functor (Versions : Pre_versions) -> functor (T : T) -> functor (V1 : T_bin) -> functor (V1_cvt : V(V1)(T).S) -> Datumable with type datum = T.t