Module 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).

Parameters

module Hash : sig ... end

Signature

type hash = Hash.t
type nonrec entry = hash entry
type nonrec t = hash t
val entry : name:string -> perm -> hash -> entry

entry ~name perm node is the entry to node with the name name and the mode perm.

val v : entry list -> t

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
val add : entry -> t -> t

add entry tree returns a tree containing all elements of tree, plus entry. If entry was already in tree, tree is unchanged.

val remove : name:string -> t -> t

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.

val format : t Encore.t

format is a description of how to encode/decode a t object.

val digest : t -> hash

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 pp : t Fmt.t

Pretty-printer of t.

val compare : t -> t -> int

The comparison function for t.

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.

val equal : t -> t -> bool

The equal function for t.

Sets and Maps.

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.

val hashes : t -> hash list

hashes tree returns the list of all node references of the given tree.

val to_list : t -> entry list

to_list tree returns the list of all entries of the given tree.

val of_list : entry list -> t

Same as v.

val iter : (entry -> unit) -> t -> unit

iter f tree applies f in turn to all elements of s.