Module ACSL.Record


module Record: Register(Cil_datatype.Compinfo.Hashtbl)(sig
type key = Cil_types.compinfo 
type data = LogicId.id * LogicTau.field ACSL.Fmap.t 
val name : string
val reprs : (LogicId.id * 'a ACSL.Fmap.t) list
val compile : Cil_types.compinfo -> LogicId.id * LogicTau.field ACSL.Fmap.t
end)


type value =
| Data of C.data
| Error of exn
| Locked
module D: Datatype.Make(sig
include Datatype.Undefined
type t = ACSL.Register.value 
val name : string
val reprs : ACSL.Register.value list
end)
module H: State_builder.Hashtbl(K)(D)(sig
val name : string
val dependencies : State.t list
val kind : [> `Tuning ]
val size : int
end)
val get_value : H.key -> H.data
val obtain : H.key -> C.data
Projectified and memoized C.compile. The compiler can not be recursive. An exception during the compilation is re-raised each time its value is requested.