Module Brassaia_eio.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 = Node_intf.S
module Make (Hash : Hash.S) : S with type hash = Hash.t

Make provides a simple node implementation, parameterized by hash and path 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) : 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 = Node_intf.Store

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) : 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 Val = V

Store creates node stores.

module type Graph = Node_intf.Graph

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