Node Graphs
type 'a t = 'a S.t
The type for store handles.
type metadata = S.Val.metadata
The type for node metadata.
type contents = S.Contents.key
The type of user-defined contents.
type node = S.key
The type for node values.
type step = S.Path.step
The type of steps. A step is used to pass from one node to another.
find t n p
is the contents of the path p
starting form n
.
add t n p v
is the node x
such that find t x p
is Some v
and it behaves the same n
for other operations.
remove t n path
is the node x
such that find t x
is None
and it behhaves then same as n
for other operations.
closure t min max
is the unordered list of nodes n
reachable from a node of max
along a path which: (i) either contains no min
or (ii) it ends with a min
.
Note: Both min
and max
are subsets of n
.
val iter : [> `Read ] t -> min:node list -> max:node list -> ?node:(node -> unit Lwt.t) -> ?edge:(node -> node -> unit Lwt.t) -> ?skip:(node -> bool Lwt.t) -> ?rev:bool -> unit -> unit Lwt.t
iter min max node edge skip rev ()
iterates in topological order over the closure of t
as specified by GRAPH.closure.
It applies three functions while traversing the graph: node
on the nodes; edge n predecessor_of_n
on the directed edges and skip n
to not include a node n
, its predecessors and the outgoing edges of n
.
If rev
is true (the default) then the graph is traversed in the reverse order: node n
is applied only after it was applied on all its predecessors; edge n p
is applied after node n
. Note that edge n p
is applied even if p
is skipped.