Tree.Make
Functor building an implementation of the tree structure. The functor returns a structure containing a type hash
of digests and a type t
of trees (structurally equal to t
).
module Hash : sig ... end
type hash = Hash.t
entry ~name perm node
is the entry to node
with the name name
and the mode perm
.
v entries
ties all entries
into one tree object. It does not remove duplicate but re-order the given list such as:
Tree.digest (Tree.v [ { name= a; _ }; { name= b; _ }] ) ;;
- : hash = 8d14531846b95bfa3564b58ccfb7913a034323b8
Tree.digest (Tree.v [ { name= b; _ }; { name= a; _ }] ) ;;
- : hash = 8d14531846b95bfa3564b58ccfb7913a034323b8
add entry tree
returns a tree containing all elements of tree
, plus entry
. If entry
was already in tree
, tree
is unchanged.
remove ~name tree
returns a tree
containing all elements of tree
, except one with the name name
. If any entries of the given tree
don't have the name name
, tree
is returned unchanged.
val is_empty : t -> bool
is_empty tree
tests whether the given tree
is empty or not.
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
length tree
is the length of the given tree object.