Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
Graph engine
type subconf =
< name : string
; module_name : string
; keys : Functoria.key list
; packages : Functoria.package list Functoria.value
; connect : Functoria.Info.t -> string -> string list -> string
; build : Functoria.Info.t -> (unit, Rresult.R.msg) Stdlib.result
; configure : Functoria.Info.t -> (unit, Rresult.R.msg) Stdlib.result
; clean : Functoria.Info.t -> (unit, Rresult.R.msg) Stdlib.result >
A subset of configurable
with neither polymorphism nor recursion.
module If : sig ... end
The description of a vertex
val create : _ Functoria.impl -> t
create impl
creates a graph based impl
.
val eval : ?partial:bool -> context:Functoria.context -> t -> t
eval ~keys g
will removes all the If
vertices by resolving the keys using keys
. It will then call normalize
If partial
is true
, then it will only evaluate If
vertices which condition is resolved.
val is_fully_reduced : t -> bool
is_fully_reduced g
is true if g
contains only Impl
vertices.
fold f g z
applies f
on each vertex of g
in topological order.
find_all g p
returns all the vertices in g
such as p v
is true.
val explode :
t ->
vertex ->
[ `App of vertex * vertex list
| `If of If.path Functoria.value * (If.path * vertex) list
| `Impl of subconf * [> `Args of vertex list ] * [> `Deps of vertex list ] ]
explode g v
deconstructs the vertex v
in the graph g
into it's possible components. It also checks that the local invariants are respected.
val collect :
(module Functoria_misc.Monoid with type t = 'ty) ->
(label -> 'ty) ->
t ->
'ty
collect (module M) f g
collects the content of f v
for each vertex v
in g
.
val hash : vertex -> int
val pp : t Fmt.t
Textual representation of the graph.
val pp_dot : t Fmt.t
Dot representation of the graph.