package tezos-context
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=7062cd57addd452852598a2214ade393130efa087b99068d53713bdf912b3680
sha512=08e4091144a03ce3c107fb91a66501bd8b65ca3278917c455a2eaac6df3e108ade63f6ab8340a4bb152d60f404326e464d0ec95d26cafe8e82f870465d24a5fc
doc/tezos-context.helpers/Tezos_context_helpers/Context/Make_tree/index.html
Module Context.Make_tree
Source
Parameters
module Conf : Tezos_context_encoding.Context.Conf
Signature
include Tezos_context_sigs.Context.TREE
with type t := DB.t
and type key := DB.path
and type value := DB.contents
and type tree := DB.tree
include Tezos_context_sigs.Context.VIEW
with type t := DB.tree
and type tree := DB.tree
with type key := DB.path
with type value := DB.contents
Getters
mem t k
is an Lwt promise that resolves to true
iff k
is bound to a value in t
.
val find : DB.tree -> DB.path -> DB.contents option Lwt.t
find t k
is an Lwt promise that resolves to Some v
if k
is bound to the value v
in t
and None
otherwise.
find_tree t k
is like find
but for trees.
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.
length 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.
Setters
add t k v
is an Lwt promise that resolves to c
such that:
k
is bound tov
inc
;- and
c
is similar tot
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.
add_tree
is like add
but for trees.
remove t k v
is an Lwt promise that resolves to c
such that:
k
is unbound inc
;- and
c
is similar tot
otherwise.
Folding
val fold :
?depth:Tezos_context_sigs.Context.depth ->
DB.tree ->
DB.path ->
order:[ `Sorted | `Undefined ] ->
init:'a ->
f:(DB.path -> DB.tree -> 'a -> 'a Lwt.t) ->
'a Lwt.t
fold ?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 exactlyd
.Lt d
folds over nodes and values of depth strictly less thand
.Le d
folds over nodes and values of depth less than or equal tod
.Gt d
folds over nodes and values of depth strictly more thand
.Ge d
folds over nodes and values of depth more than or equal tod
.
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
.
Configuration
config t
is t
's hash configuration.
kind t
is t
's kind. It's either a tree node or a leaf value.
to_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 []
.
equal x y
is true iff x
and y
have the same Merkle hash.
Caches
val clear : ?depth:int -> DB.tree -> unit
clear ?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.
Exception raised by find_tree
and add_tree
when applied to shallow trees. It is exposed for so that the memory context can in turn raise it.