Functor Project.Computation.Register


module Register: 
functor (Datatype : Project.Datatype.S) ->
functor (State : INPUT with type t = Datatype.t) ->
functor (Info : INFO) -> OUTPUT with module Datatype = Datatype
Register(Datatype)(State)(Info) registers a new kind of computation by side-effect. Datatype represents the datatype of a state, State explains how to deal with a state and Info mainly details the dependencies of the computation (i.e. what computations should be done before this one).
Consult the Plugin Development Guide for additional details.
Parameters:
Datatype : Project.Datatype.S
State : INPUT with type t = Datatype.t
Info : INFO

include Project.Computation.MINIMAL_OUTPUT
val mark_as_computed : ?project:Project.project -> unit -> unit
Indicate that the registered state will not change again for the given project (default is current ()).
val is_computed : ?project:Project.project -> unit -> bool
Returns true iff the registered state will not change again for the given project (default is current ()).
val do_not_save : unit -> unit
Call this function if the registered state must not be save/load on/from disk. When loading, a new state (generated using create) is used instead.

Exportation of some inputs (easier use of Computation.Register).
module Datatype: Project.Datatype.S 
val howto_marshal : (Datatype.t -> 'a) -> ('a -> Datatype.t) -> unit
howto_marshal marshal unmarshal registers a custom couple of countions (marshal, unmarshal) to be used for serialization. Default functions are identities. In particular, calling this function must be used if Datatype.t is not marshallable and do_not_save is not called.
Since Boron-20100401