Irmin.Node
Node
provides functions to describe the graph-like structured values.
The node blocks form a labeled directed acyclic graph, labeled by steps: a list of steps defines a unique path from one node to an other.
Each node can point to user-defined contents values.
module type S = sig ... end
module Make
(Hash : Hash.S)
(Path : sig ... end)
(Metadata : Metadata.S) :
S
with type hash = Hash.t
and type metadata = Metadata.t
and type step = Path.step
Make
provides a simple node implementation, parameterized by hash, path and metadata implementations. The contents and node values are addressed directly by their hash.
module Generic_key : sig ... end
Generic_key
generalises the concept of "node" to one that supports object keys that are not strictly equal to hashes.
module V1 (N : Generic_key.S with type step = string) : sig ... end
v1 serialisation
module Portable : sig ... end
Portable form of a node implementation that can be constructed from a concrete representation and used in computing hashes. Conceptually, a Node.Portable.t
is a Node.t
in which all internal keys have been replaced with the hashes of the values they point to.
module type Store = sig ... end
Store
specifies the signature for node stores.
module Store
(C : Contents.Store)
(S : Content_addressable.S with type key = C.key)
(H : Hash.S with type t = S.key)
(V : S with type t = S.value and type hash = S.key)
(M : Metadata.S with type t = V.metadata)
(P : Path.S with type step = V.step) :
Store
with type 'a t = 'a C.t * 'a S.t
and type key = S.key
and type value = S.value
and type hash = H.t
and module Path = P
and module Metadata = M
and module Val = V
Store
creates node stores.
module type Graph = sig ... end
Graph
specifies the signature for node graphs. A node graph is a deterministic DAG, labeled by steps.
module Graph
(N : Store) :
Graph
with type 'a t = 'a N.t
and type contents_key = N.Contents.key
and type node_key = N.key
and type metadata = N.Metadata.t
and type step = N.Path.step
and type path = N.Path.t