State_builder.Hashconsing_tbl_weak
Weak hashtbl dedicated to hashconsing. Note that the resulting table is not saved on disk.
module Data : sig ... end
module Info : Info_with_size
Hashtbl are a standard computation. BUT it is INCORRECT to use projectified hashtables if keys have a custom rehash
function (see Project
.DATATYPE_OUTPUT.rehash)
include S
val self : State.t
The kind of the registered state.
val mark_as_computed : ?project:Project.t -> unit -> unit
Indicate that the registered state will not change again for the given project (default is current ()
).
val is_computed : ?project:Project.t -> unit -> bool
Returns true
iff the registered state will not change again for the given project (default is current ()
).
Exportation of some inputs (easier use of State_builder.Register
).
module Datatype : Datatype.S
val add_hook_on_update : ( Datatype.t -> unit ) -> unit
Add an hook which is applied each time (just before) the project library changes the local value of the state.
val howto_marshal : ( Datatype.t -> 'a ) -> ( 'a -> Datatype.t ) -> unit
howto_marshal marshal unmarshal
registers a custom couple of functions (marshal, unmarshal)
to be used for serialization. Default functions are identities. In particular, this function must be used if Datatype.t
is not marshallable and do_not_save
is not called.
type data = Data.t
merge x
returns an instance of x
found in the table if any, or else adds x
and return x
.
val add : data -> unit
add x
adds x
to the table. If there is already an instance of x
, it is unspecified which one will be returned by subsequent calls to find
and merge
.
val iter : ( data -> unit ) -> unit
val fold : ( data -> 'a -> 'a ) -> 'a -> 'a
val mem : data -> bool
mem x
returns true
if there is at least one instance of x
in the table, false
otherwise.
val remove : data -> unit
remove x
removes from the table one instance of x
. Does nothing if there is no instance of x
.