Value.Make
The functor to make the OCaml representation of the Git object by a specific hash implementation, an S.INFLATE
implementation for the decompression and a S.DEFLATE
implementation for the compression.
The constraints on git objects can cut the path to let the user to make the value module and keep the structural equality. If the Hash
module is the same. That means:
```ocaml module V1 = Value.Make(SHA1)(C_inflate)(C_deflate) module V2 = Value.Make(SHA1)(OCaml_inflate)(OCaml_deflate) ```
Types V1.t
and V2.t
are equal.
module Hash : sig ... end
type hash = Hash.t
val kind : t -> [ `Commit | `Blob | `Tree | `Tag ]
kind o
returns the kind of the Git object.
val format : t Encore.t
digest t
associates a hash
to any value of t
. It is guaranteed that if x = y
or compare x y = 0
, then digest x = digest y
.
val hash : t -> int
hash blob
associates a non-negative integer to any value of t
. It is guaranteed that if x = y
or compare x y = 0
, then hash x = hash y
.
module Set : Stdlib.Set.S with type elt = t
module Map : Stdlib.Map.S with type key = t
val length : t -> int64
val length_with_header : t -> int64
length_with_header t
is length t
plus the length of the header.
val to_raw : t -> string
val to_raw_without_header : t -> string
val of_raw_with_header :
?off:int ->
?len:int ->
string ->
(t, [> `Msg of string ]) Stdlib.result
val of_raw :
kind:[ `Commit | `Blob | `Tree | `Tag ] ->
Cstruct.t ->
(t, [> `Msg of string ]) Stdlib.result
val stream : t -> unit -> string option Lwt.t