Module Git.Smart

module type COMMON = sig ... end
module Common : functor (Hash : sig ... end) -> functor (Reference : Reference.S with module Hash := Hash) -> COMMON with type hash := Hash.t and type reference := Reference.t
module type DECODER = sig ... end
module Decoder : functor (Hash : sig ... end) -> functor (Reference : Reference.S with module Hash := Hash) -> functor (Common : COMMON with type hash := Hash.t and type reference := Reference.t) -> DECODER with module Hash := Hash and module Reference := Reference and module Common := Common

The functor to make the Decoder by a specific hash implementation.

module type ENCODER = sig ... end
module Encoder : functor (Hash : sig ... end) -> functor (Reference : Reference.S with module Hash := Hash) -> functor (Common : COMMON with type hash := Hash.t and type reference := Reference.t) -> ENCODER with module Hash := Hash and module Reference := Reference and module Common := Common

The functor to make the Encoder by a specific hash implementation.

module type CLIENT = sig ... end
module Client : functor (Hash : sig ... end) -> functor (Reference : Reference.S with module Hash := Hash) -> CLIENT with module Hash := Hash and module Reference := Reference

The functor to make the Client by a specific hash implementation.