package tezos-context

  1. Overview
  2. Docs
include TREE with type t := t and type key := key and type value := value and type tree := tree
include VIEW with type t := tree and type tree := tree with type key := key with type value := value

Getters

val mem : tree -> key -> bool Lwt.t

mem t k is an Lwt promise that resolves to true iff k is bound to a value in t.

val mem_tree : tree -> key -> bool Lwt.t

mem_tree t k is like mem but for trees.

val find : tree -> key -> value 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.

val find_tree : tree -> key -> tree option Lwt.t

find_tree t k is like find but for trees.

val list : tree -> ?offset:int -> ?length:int -> key -> (string * tree) list Lwt.t

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.

Setters

val add : tree -> key -> value -> tree Lwt.t

add t k v is an Lwt promise that resolves to c such that:

  • k is bound to v in c;
  • and 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.

val add_tree : tree -> key -> tree -> tree Lwt.t

add_tree is like add but for trees.

val remove : tree -> key -> tree Lwt.t

remove t k v is an Lwt promise that resolves to c such that:

  • k is unbound in c;
  • and c is similar to t otherwise.

Folding

val fold : ?depth:depth -> tree -> key -> order:[ `Sorted | `Undefined ] -> init:'a -> f:(key -> 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 contents of depth exactly d.
  • Lt d folds over nodes and contents of depth strictly less than d.
  • Le d folds over nodes and contents of depth less than or equal to d.
  • Gt d folds over nodes and contents of depth strictly more than d.
  • Ge d folds over nodes and contents 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 empty : t -> tree

empty _ is the empty tree.

val is_empty : tree -> bool

is_empty t is true iff t is empty _.

val kind : tree -> Kind.t

kind t is t's kind. It's either a tree node or a leaf value.

val to_value : tree -> value option Lwt.t

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 [].

val of_value : t -> value -> tree Lwt.t

of_value _ v is an Lwt promise that resolves to the leaf tree v. Is is equivalent to add (empty _) [] v.

hash t is t's Merkle hash.

val equal : tree -> tree -> bool

equal x y is true iff x and y have the same Merkle hash.

Caches

val clear : ?depth:int -> 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.

val pp : Format.formatter -> tree -> unit

pp is the pretty-printer for trees.

Data Encoding

type raw = [
  1. | `Value of bytes
  2. | `Tree of raw Tezos_stdlib.TzString.Map.t
]

The type for in-memory, raw contexts.

val raw_encoding : raw Data_encoding.t

raw_encoding is the data encoding for raw trees.

val to_raw : tree -> raw Lwt.t

to_raw t is an Lwt promise that resolves to a raw tree equivalent to t.

val of_raw : raw -> tree

of_raw t is the tree equivalent to the raw tree t.

type kinded_hash := [
  1. | `Contents of Tezos_crypto.Context_hash.t
  2. | `Node of Tezos_crypto.Context_hash.t
]

The type of tree for which to build a shallow tree with shallow

type repo
val make_repo : unit -> repo Lwt.t
val shallow : repo -> kinded_hash -> tree