Frama_c_kernel.State_builderState builders. Provide ways to implement signature State_builder.S. Depending on the builder, also provide some additional useful information.
module type Info = sig ... endAdditional information required by State_builder.Register.
module type Info_with_size = sig ... endmodule type S = sig ... endOutput signature of State_builder.Register.
module Register
(Datatype : Datatype.S)
(_ : State.Local with type t = Datatype.t)
(_ : sig ... end) :
S with module Datatype = DatatypeRegister(Datatype)(Local_state)(Info) registers a new state. Datatype represents the datatype of a state, Local_state explains how to deal with the client-side state and Info are additional required information.
module type Ref = sig ... endOutput signature of Ref.
module Ref
(Data : Datatype.S)
(_ : sig ... end) :
Ref with type data = Data.t and type Datatype.t = Data.t refmodule type Option_ref = sig ... endOutput signature of Option_ref. Note that get will raise Not_found if the stored data is None. Use get_option if you want to have access to the option.
module Option_ref
(Data : Datatype.S)
(_ : Info) :
Option_ref with type data = Data.tBuild a reference on an option.
module type List_ref = sig ... endOutput signature of ListRef.
module List_ref
(Data : Datatype.S)
(_ : Info) :
List_ref with type data = Data.t list and type data_in_list = Data.tBuild a reference on a list.
Build a reference on an integer, initialized with 0.
Build a reference on a boolean, initialized with false.
Build a reference on a boolean, initialized with true.
module type Weak_hashtbl = sig ... endOutput signature of builders of hashtables.
module Weak_hashtbl
(W : Weak.S)
(_ : Datatype.S with type t = W.data)
(_ : Info_with_size) :
Weak_hashtbl with type data = W.dataBuild a weak hashtbl over a datatype Data from a reference implementation W.
module Caml_weak_hashtbl
(Data : Datatype.S)
(_ : Info_with_size) :
Weak_hashtbl with type data = Data.tBuild a weak hashtbl over a datatype Data by using Weak.Make provided by the OCaml standard library. Note that the table is not saved on disk.
module type Hashconsing_tbl =
functor (Data : sig ... end) ->
functor (_ : Info_with_size) ->
Weak_hashtbl with type data = Data.tSignature for the creation of projectified hashconsing tables..
module Hashconsing_tbl_weak : Hashconsing_tblWeak hashtbl dedicated to hashconsing. Note that the resulting table is not saved on disk.
module Hashconsing_tbl_not_weak : Hashconsing_tblHash table for hashconsing, but the internal table is _not_ weak (it is a regular hash table). This module should be used only in case perfect reproducibility matters, as the table will never be emptied by the GC.
module Hashconsing_tbl : Hashconsing_tblWeak or non-weak hashconsing tables, depending on variable Cmdline.deterministic.
IMPORTANT: that is INCORRECT to use projectified hashtables if keys have a custom rehash function (see Datatype.Make_input.rehash)
module type Hashtbl = sig ... endOutput signature of builders of hashtables.
module Hashtbl
(H : Datatype.Hashtbl)
(Data : Datatype.S)
(_ : Info_with_size) :
Hashtbl
with type key = H.key
and type data = Data.t
and module Datatype = H.Make(Data)module Int_hashtbl
(Data : Datatype.S)
(_ : Info_with_size) :
Hashtbl with type key = int and type data = Data.tmodule type Set_ref = sig ... endOutput signature of builders of references on a set.
module type Queue = sig ... endmodule type Array = sig ... endmodule Proxy : sig ... endState proxy. A proxy is a state which does not correspond to any useful mutable value. Its goal is only to reduce the number of dependencies between groups of states.
module type Counter = sig ... endCreates a counter that is shared among all projects, but which is marshalling-compliant.
module type Hashcons = sig ... endOutput signature of Hashcons below.
Hashconsed version of an arbitrary datatype
apply_once name dep f returns a closure applying f only once and the state internally used. name and dep are respectively the name and the dependencies of the local state created by this function. Should be used partially applied. If f raises an exception, then it is considered as not applied.
module States : sig ... end