Make.Treeinclude Tezos_context_sigs.Context.TREE
with type key := string list
and type value := bytes
with type tree = Ctx.treetype tree = Ctx.treeThe type for context trees.
include Tezos_context_sigs.Context.VIEW
with type t := tree
and type tree := tree
with type key := string list
with type value := bytesval mem : tree -> string list -> bool Lwt.tmem t k is an Lwt promise that resolves to true iff k is bound to a value in t.
val find : tree -> string list -> bytes option Lwt.tfind t k is an Lwt promise that resolves to Some v if k is bound to the value v in t and None otherwise.
list t key is the list of files and sub-nodes stored under k in t. The result order is not specified but is stable.
offset and length are used for pagination.
val length : tree -> string list -> int Lwt.tlength t key is an Lwt promise that resolves to the number of files and sub-nodes stored under k in t.
It is equivalent to let+ l = list t k in List.length l but has a constant-time complexity.
add t k v is an Lwt promise that resolves to c such that:
k is bound to v in c;c is similar to t otherwise.If k was already bound in t to a value that is physically equal to v, the result of the function is a promise that resolves to t. Otherwise, the previous binding of k in t disappears.
remove t k v is an Lwt promise that resolves to c such that:
k is unbound in c;c is similar to t otherwise.val fold :
?depth:Tezos_context_sigs.Context.depth ->
tree ->
string list ->
order:[ `Sorted | `Undefined ] ->
init:'a ->
f:(string list -> tree -> 'a -> 'a Lwt.t) ->
'a Lwt.tfold ?depth t root ~order ~init ~f recursively folds over the trees and values of t. The f callbacks are called with a key relative to root. f is never called with an empty key for values; i.e., folding over a value is a no-op.
The depth is 0-indexed. If depth is set (by default it is not), then f is only called when the conditions described by the parameter is true:
Eq d folds over nodes and values of depth exactly d.Lt d folds over nodes and values of depth strictly less than d.Le d folds over nodes and values of depth less than or equal to d.Gt d folds over nodes and values of depth strictly more than d.Ge d folds over nodes and values of depth more than or equal to d.If order is `Sorted (the default), the elements are traversed in lexicographic order of their keys. For large nodes, it is memory-consuming, use `Undefined for a more memory efficient fold.
val config : tree -> Tezos_context_sigs.Config.tconfig t is t's hash configuration.
val is_empty : tree -> boolis_empty t is true iff t is empty _.
val kind : tree -> Tezos_context_sigs.Context.Kind.tkind t is t's kind. It's either a tree node or a leaf value.
val to_value : tree -> bytes option Lwt.tto_value t is an Lwt promise that resolves to Some v if t is a leaf tree and None otherwise. It is equivalent to find t [].
of_value _ v is an Lwt promise that resolves to the leaf tree v. Is is equivalent to add (empty _) [] v.
val hash : tree -> Tezos_base.TzPervasives.Context_hash.thash t is t's Merkle hash.
val clear : ?depth:int -> tree -> unitclear ?depth t clears all caches in the tree t for subtrees with a depth higher than depth. If depth is not set, all of the subtrees are cleared.
val select : Tezos_tree_encoding__.Tree.tree_instance -> treeval wrap : tree -> Tezos_tree_encoding__.Tree.tree_instance